diff options
author | Matus Fabian <matfabia@cisco.com> | 2018-03-07 04:57:22 -0800 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2018-03-14 18:45:50 +0000 |
commit | 341b469c4ded91870ae9cfe45ddd1affa227cf14 (patch) | |
tree | 419cdf7c83b98d3050ba0434faec968e970baf5e /src/plugins/nat | |
parent | dadcc849136b6a0bcd9eb8c100695aba139b2831 (diff) |
NAT44: fix nat_not_translate_output_feature for ICMP (VPP-1191)
Change-Id: I1552e1418b704fdf1f1fa2c0174313b9b82a37a3
Signed-off-by: Matus Fabian <matfabia@cisco.com>
Diffstat (limited to 'src/plugins/nat')
-rwxr-xr-x | src/plugins/nat/in2out.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/plugins/nat/in2out.c b/src/plugins/nat/in2out.c index 0792ea02b05..fae930b607f 100755 --- a/src/plugins/nat/in2out.c +++ b/src/plugins/nat/in2out.c @@ -251,14 +251,13 @@ snat_not_translate (snat_main_t * sm, vlib_node_runtime_t *node, static inline int nat_not_translate_output_feature (snat_main_t * sm, ip4_header_t * ip0, - u32 proto0, u32 thread_index) + u32 proto0, u16 src_port, u32 thread_index) { - udp_header_t * udp0 = ip4_next_header (ip0); snat_session_key_t key0; clib_bihash_kv_8_8_t kv0, value0; key0.addr = ip0->src_address; - key0.port = udp0->src_port; + key0.port = src_port; key0.protocol = proto0; key0.fib_index = sm->outside_fib_index; kv0.key = key0.as_u64; @@ -516,7 +515,7 @@ u32 icmp_match_in2out_slow(snat_main_t *sm, vlib_node_runtime_t *node, if (vnet_buffer(b0)->sw_if_index[VLIB_TX] != ~0) { if (PREDICT_FALSE(nat_not_translate_output_feature(sm, - ip0, IP_PROTOCOL_ICMP, thread_index))) + ip0, SNAT_PROTOCOL_ICMP, key0.port, thread_index))) { dont_translate = 1; goto out; @@ -525,7 +524,7 @@ u32 icmp_match_in2out_slow(snat_main_t *sm, vlib_node_runtime_t *node, else { if (PREDICT_FALSE(snat_not_translate(sm, node, sw_if_index0, - ip0, IP_PROTOCOL_ICMP, rx_fib_index0, thread_index))) + ip0, SNAT_PROTOCOL_ICMP, rx_fib_index0, thread_index))) { dont_translate = 1; goto out; @@ -1546,7 +1545,7 @@ snat_in2out_node_fn_inline (vlib_main_t * vm, if (is_output_feature) { if (PREDICT_FALSE(nat_not_translate_output_feature(sm, - ip0, proto0, thread_index))) + ip0, proto0, udp0->src_port, thread_index))) goto trace00; } else @@ -1734,7 +1733,7 @@ snat_in2out_node_fn_inline (vlib_main_t * vm, if (is_output_feature) { if (PREDICT_FALSE(nat_not_translate_output_feature(sm, - ip1, proto1, thread_index))) + ip1, proto1, udp1->src_port, thread_index))) goto trace00; } else @@ -1954,7 +1953,7 @@ snat_in2out_node_fn_inline (vlib_main_t * vm, if (is_output_feature) { if (PREDICT_FALSE(nat_not_translate_output_feature(sm, - ip0, proto0, thread_index))) + ip0, proto0, udp0->src_port, thread_index))) goto trace0; } else |