MCPcopy Index your code
hub / github.com/cloudflare/cloudflared / assertTTLExceedPacket

Function assertTTLExceedPacket

packet/packet_test.go:69–110  ·  view source on GitHub ↗
(t *testing.T, pk *ICMP)

Source from the content-addressed store, hash-verified

67}
68
69func assertTTLExceedPacket(t *testing.T, pk *ICMP) {
70 encoder := NewEncoder()
71 rawPacket, err := encoder.Encode(pk)
72 require.NoError(t, err)
73
74 minMTU := ipv4MinMTU
75 headerLen := ipv4MinHeaderLen
76 routerIP := netip.MustParseAddr("172.16.0.3")
77 if pk.Dst.Is6() {
78 minMTU = ipv6MinMTU
79 headerLen = ipv6HeaderLen
80 routerIP = netip.MustParseAddr("fd51:2391:697:f4ee::3")
81 }
82
83 ttlExceedPacket := NewICMPTTLExceedPacket(pk.IP, rawPacket, routerIP)
84 require.Equal(t, routerIP, ttlExceedPacket.Src)
85 require.Equal(t, pk.Src, ttlExceedPacket.Dst)
86 require.Equal(t, pk.Protocol, ttlExceedPacket.Protocol)
87 require.Equal(t, DefaultTTL, ttlExceedPacket.TTL)
88
89 timeExceed, ok := ttlExceedPacket.Body.(*icmp.TimeExceeded)
90 require.True(t, ok)
91 if len(rawPacket.Data) > minMTU {
92 require.True(t, bytes.Equal(timeExceed.Data, rawPacket.Data[:minMTU-headerLen-icmpHeaderLen]))
93 } else {
94 require.True(t, bytes.Equal(timeExceed.Data, rawPacket.Data))
95 }
96
97 rawTTLExceedPacket, err := encoder.Encode(ttlExceedPacket)
98 require.NoError(t, err)
99 if len(rawPacket.Data) > minMTU {
100 require.Len(t, rawTTLExceedPacket.Data, minMTU)
101 } else {
102 require.Len(t, rawTTLExceedPacket.Data, headerLen+icmpHeaderLen+len(rawPacket.Data))
103 require.True(t, bytes.Equal(rawPacket.Data, rawTTLExceedPacket.Data[headerLen+icmpHeaderLen:]))
104 }
105
106 decoder := NewICMPDecoder()
107 decodedPacket, err := decoder.Decode(rawTTLExceedPacket)
108 require.NoError(t, err)
109 assertICMPChecksum(t, decodedPacket)
110}
111
112func assertICMPChecksum(t *testing.T, icmpPacket *ICMP) {
113 buf := gopacket.NewSerializeBuffer()

Callers 1

Calls 8

EncodeMethod · 0.95
DecodeMethod · 0.95
NewEncoderFunction · 0.85
NewICMPTTLExceedPacketFunction · 0.85
NewICMPDecoderFunction · 0.85
assertICMPChecksumFunction · 0.85
LenMethod · 0.80
EqualMethod · 0.65

Tested by

no test coverage detected