X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fsession%2Fsession.c;h=228234ceefc9f940a03bb135d1fbe4190d131ad6;hb=af9b7156c8fd16c671ce9332613faaf864b075b3;hp=9549cbaf5771bd95f0c1549965219b11ad4677c1;hpb=4aeba3776244efe5fbf8de894b6af13a9220762c;p=vpp.git diff --git a/src/vnet/session/session.c b/src/vnet/session/session.c index 9549cbaf577..228234ceefc 100644 --- a/src/vnet/session/session.c +++ b/src/vnet/session/session.c @@ -17,6 +17,7 @@ * @brief Session and session manager */ +#include #include #include #include @@ -1524,14 +1525,7 @@ session_stop_listen (session_t * s) return SESSION_E_NONE; if (!(tc->flags & TRANSPORT_CONNECTION_F_NO_LOOKUP)) - { - if (transport_connection_is_cless (tc)) - { - clib_memset (&tc->rmt_ip, 0, sizeof (tc->rmt_ip)); - tc->rmt_port = 0; - } - session_lookup_del_connection (tc); - } + session_lookup_del_connection (tc); transport_stop_listen (tp, s->connection_index); return 0; @@ -1769,6 +1763,22 @@ session_segment_handle (session_t * s) f->segment_index); } +void +session_get_original_dst (transport_endpoint_t *i2o_src, + transport_endpoint_t *i2o_dst, + transport_proto_t transport_proto, u32 *original_dst, + u16 *original_dst_port) +{ + session_main_t *smm = vnet_get_session_main (); + ip_protocol_t proto = + (transport_proto == TRANSPORT_PROTO_TCP ? IPPROTO_TCP : IPPROTO_UDP); + if (!smm->original_dst_lookup || !i2o_dst->is_ip4) + return; + smm->original_dst_lookup (&i2o_src->ip.ip4, i2o_src->port, &i2o_dst->ip.ip4, + i2o_dst->port, proto, original_dst, + original_dst_port); +} + /* *INDENT-OFF* */ static session_fifo_rx_fn *session_tx_fns[TRANSPORT_TX_N_FNS] = { session_tx_fifo_peek_and_snd, @@ -2299,6 +2309,11 @@ session_config_fn (vlib_main_t * vm, unformat_input_t * input) smm->no_adaptive = 1; else if (unformat (input, "use-dma")) smm->dma_enabled = 1; + else if (unformat (input, "nat44-original-dst-enable")) + { + smm->original_dst_lookup = vlib_get_plugin_symbol ( + "nat_plugin.so", "nat44_original_dst_lookup"); + } /* * Deprecated but maintained for compatibility */