github.com/cilium/cilium@v1.16.2/pkg/fqdn/dnsproxy/udp_test.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package dnsproxy 5 6 import ( 7 "net" 8 "testing" 9 ) 10 11 func TestComputeIPv6Checksum(t *testing.T) { 12 testCases := []struct { 13 name string 14 srcIP net.IP 15 dstIP net.IP 16 udpPayload []byte 17 expectedSum uint16 18 }{ 19 { 20 name: "Transmitted Checksum for Even Number of Words", 21 srcIP: net.IPv6loopback, 22 dstIP: net.IPv6loopback, 23 udpPayload: []byte{ 24 0x01, 0x02, // Sample data (16-bit word 1) 25 0x03, 0x04, // Sample data (16-bit word 2) 26 }, 27 expectedSum: 0xfbe2, 28 }, 29 { 30 name: "Transmitted Checksum for Odd Number of Words", 31 srcIP: net.IPv6loopback, 32 dstIP: net.IPv6loopback, 33 udpPayload: []byte{ 34 0x01, 0x02, // Sample data (16-bit word 1) 35 0x03, 0x04, // Sample data (16-bit word 2) 36 0x05, 0x06, // Sample data (16-bit word 3) 37 }, 38 expectedSum: 0xf6da, 39 }, 40 { 41 name: "No Transmitted Checksum", 42 srcIP: net.IPv6unspecified, 43 dstIP: net.IPv6unspecified, 44 udpPayload: nil, 45 expectedSum: 0xffff, // Transmit all ones if the computed checksum is zero 46 }, 47 } 48 49 for _, tc := range testCases { 50 t.Run(tc.name, func(t *testing.T) { 51 checksum := computeIPv6Checksum(tc.srcIP, tc.dstIP, tc.udpPayload) 52 if checksum != tc.expectedSum { 53 t.Errorf("Expected checksum %04X, but got %04X", tc.expectedSum, checksum) 54 } 55 }) 56 } 57 }