From ec0db35a80230f4347b8de95e5d342ce3cbdf090 Mon Sep 17 00:00:00 2001 From: Ghanan Gowripalan Date: Fri, 18 Feb 2022 16:29:17 -0800 Subject: [PATCH] Test all ones UDP checksum is valid ...after observing the all ones checksum in an outgoing packet. PiperOrigin-RevId: 429671893 --- pkg/tcpip/transport/udp/udp_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/tcpip/transport/udp/udp_test.go b/pkg/tcpip/transport/udp/udp_test.go index 27ec82d2e..f4cad9d0a 100644 --- a/pkg/tcpip/transport/udp/udp_test.go +++ b/pkg/tcpip/transport/udp/udp_test.go @@ -2049,7 +2049,15 @@ func TestChecksumWithZeroValueOnesComplementSum(t *testing.T) { t.Fatal("Packet wasn't written out") } + v := stack.PayloadSince(pkt.NetworkHeader()) checker.IPv6(t, stack.PayloadSince(pkt.NetworkHeader()), checker.UDP(checker.TransportChecksum(math.MaxUint16))) + + // Make sure the all ones checksum is valid. + hdr := header.IPv6(v) + udp := header.UDP(hdr.Payload()) + if src, dst, payloadXsum := hdr.SourceAddress(), hdr.DestinationAddress(), header.Checksum(udp.Payload(), 0); !udp.IsChecksumValid(src, dst, payloadXsum) { + t.Errorf("got udp.IsChecksumValid(%s, %s, %d) = false, want = true", src, dst, payloadXsum) + } } }