X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=datapath%2Factions.c;h=ddacbc6a71956f58dd511a41af95ecacac6a5541;hb=37a8eee61b922f5e166355af6a62b67a90adc486;hp=c2064468c90535964e432858ce860b67268249fa;hpb=b08b678a16be5e054f0c36b3b5b1338827811c65;p=cascardo%2Fovs.git diff --git a/datapath/actions.c b/datapath/actions.c index c2064468c..ddacbc6a7 100644 --- a/datapath/actions.c +++ b/datapath/actions.c @@ -175,11 +175,11 @@ static void update_ipv6_checksum(struct sk_buff *skb, u8 l4_proto, { int transport_len = skb->len - skb_transport_offset(skb); - if (l4_proto == IPPROTO_TCP) { + if (l4_proto == NEXTHDR_TCP) { if (likely(transport_len >= sizeof(struct tcphdr))) inet_proto_csum_replace16(&tcp_hdr(skb)->check, skb, addr, new_addr, 1); - } else if (l4_proto == IPPROTO_UDP) { + } else if (l4_proto == NEXTHDR_UDP) { if (likely(transport_len >= sizeof(struct udphdr))) { struct udphdr *uh = udp_hdr(skb); @@ -190,6 +190,10 @@ static void update_ipv6_checksum(struct sk_buff *skb, u8 l4_proto, uh->check = CSUM_MANGLED_0; } } + } else if (l4_proto == NEXTHDR_ICMP) { + if (likely(transport_len >= sizeof(struct icmp6hdr))) + inet_proto_csum_replace16(&icmp6_hdr(skb)->icmp6_cksum, + skb, addr, new_addr, 1); } }