X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fplugins%2Fnat%2Fnat64_in2out.c;h=718c69d7bdf2e7672434afc7fe94423c7a4b1d58;hb=ea5b5be4;hp=cdfe9b8d80c9eee372e21109c7063c4a206d912b;hpb=067cd6229a47ea3ba8b59a2a04090e80afb5bd2c;p=vpp.git diff --git a/src/plugins/nat/nat64_in2out.c b/src/plugins/nat/nat64_in2out.c index cdfe9b8d80c..718c69d7bdf 100644 --- a/src/plugins/nat/nat64_in2out.c +++ b/src/plugins/nat/nat64_in2out.c @@ -224,8 +224,6 @@ nat64_in2out_tcp_udp_set_cb (ip6_header_t * ip6, ip4_header_t * ip4, return -1; } - nat64_session_reset_timeout (ste, ctx->vm); - ip4->src_address.as_u32 = bibe->out_addr.as_u32; udp->src_port = bibe->out_port; @@ -237,12 +235,15 @@ nat64_in2out_tcp_udp_set_cb (ip6_header_t * ip6, ip4_header_t * ip4, ip_csum_t csum; tcp_header_t *tcp = ip6_next_header (ip6); + nat64_tcp_session_set_state (ste, tcp, 1); checksum = &tcp->checksum; csum = ip_csum_sub_even (*checksum, sport); csum = ip_csum_add_even (csum, udp->src_port); *checksum = ip_csum_fold (csum); } + nat64_session_reset_timeout (ste, ctx->vm); + return 0; } @@ -636,6 +637,9 @@ nat64_in2out_tcp_udp_hairpinning (vlib_main_t * vm, vlib_buffer_t * b, return -1; } + if (proto == IP_PROTOCOL_TCP) + nat64_tcp_session_set_state (ste, tcp, 1); + nat64_session_reset_timeout (ste, vm); sport = udp->src_port = bibe->out_port; @@ -1203,6 +1207,7 @@ nat64_in2out_frag_set_cb (ip6_header_t * ip6, ip4_header_t * ip4, void *arg) ip_csum_t csum; tcp_header_t *tcp = (tcp_header_t *) udp; + nat64_tcp_session_set_state (ste, tcp, 1); checksum = &tcp->checksum; csum = ip_csum_sub_even (*checksum, tcp->src_port); csum = ip_csum_sub_even (csum, ip6->src_address.as_u64[0]); @@ -1263,6 +1268,9 @@ nat64_in2out_frag_hairpinning (vlib_buffer_t * b, ip6_header_t * ip6, if (!bibe) return -1; + if (ctx->proto == IP_PROTOCOL_TCP) + nat64_tcp_session_set_state (ste, tcp, 1); + nat64_session_reset_timeout (ste, ctx->vm); sport = bibe->out_port;