diff options
author | Matus Fabian <matfabia@cisco.com> | 2017-06-12 02:29:39 -0700 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2017-06-12 12:12:52 +0000 |
commit | 89223f462337b8d9d190ab36f8651e40597463ba (patch) | |
tree | 26e97d135d953e4eba4823789f0ebe06d0226d52 /src/vnet/ip/ip4_to_ip6.h | |
parent | 0fc6595addd3dde0883896ef15c6b783da64e3a0 (diff) |
NAT64: bug fix
ICMP to ICMPv6 error message inner UDP packet translation
delete ST entries when deleting static BIB entry
Change-Id: I2a28631ac040e20827a692331506cd8254f70916
Signed-off-by: Matus Fabian <matfabia@cisco.com>
Diffstat (limited to 'src/vnet/ip/ip4_to_ip6.h')
-rw-r--r-- | src/vnet/ip/ip4_to_ip6.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/vnet/ip/ip4_to_ip6.h b/src/vnet/ip/ip4_to_ip6.h index 965d27c3393..dad35230b12 100644 --- a/src/vnet/ip/ip4_to_ip6.h +++ b/src/vnet/ip/ip4_to_ip6.h @@ -367,11 +367,15 @@ icmp_to_icmp6 (vlib_buffer_t * p, ip4_to_ip6_set_fn_t fn, void *ctx, sizeof (*inner_frag)); } - csum = ip_csum_add_even (csum, inner_ip6->src_address.as_u64[0]); - csum = ip_csum_add_even (csum, inner_ip6->src_address.as_u64[1]); - csum = ip_csum_add_even (csum, inner_ip6->dst_address.as_u64[0]); - csum = ip_csum_add_even (csum, inner_ip6->dst_address.as_u64[1]); - *inner_L4_checksum = ip_csum_fold (csum); + /* UDP checksum is optional */ + if (csum) + { + csum = ip_csum_add_even (csum, inner_ip6->src_address.as_u64[0]); + csum = ip_csum_add_even (csum, inner_ip6->src_address.as_u64[1]); + csum = ip_csum_add_even (csum, inner_ip6->dst_address.as_u64[0]); + csum = ip_csum_add_even (csum, inner_ip6->dst_address.as_u64[1]); + *inner_L4_checksum = ip_csum_fold (csum); + } } else { |