fixed IP64 so that it sets correct UDP length and calculates a correct checksum

This commit is contained in:
Joakim Eriksson 2017-07-01 22:49:45 +02:00
parent 3b5bfadaad
commit 88ed3b82a0

View File

@ -861,6 +861,8 @@ ip64_4to6(const uint8_t *ipv4packet, const uint16_t ipv4packet_len,
break; break;
case IP_PROTO_UDP: case IP_PROTO_UDP:
udphdr->udpchksum = 0; udphdr->udpchksum = 0;
/* As the udplen might have changed (DNS) we need to update it also */
udphdr->udplen = uip_htons(ipv6_packet_len);
udphdr->udpchksum = ~(ipv6_transport_checksum(resultpacket, udphdr->udpchksum = ~(ipv6_transport_checksum(resultpacket,
ipv6len, ipv6len,
IP_PROTO_UDP)); IP_PROTO_UDP));