summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJulian Elischer <jrelis@google.com>2020-08-14 02:05:23 -0700
committergVisor bot <gvisor-bot@google.com>2020-08-14 02:07:36 -0700
commit190634e0fcf4cf25a449e1bd39533ca2ddad66e6 (patch)
tree9fcd438bcdf162d3e3c1bf7954b8a50baf1e7b2c /test
parentd6520e1d0592f99161faedef3eba49439b140917 (diff)
Give the ICMP Code its own type
This is a preparatory commit for a larger commit working on ICMP generation in error cases. This is removal of technical debt and cleanup in the gvisor code as part of gvisor issue 2211. Updates #2211. PiperOrigin-RevId: 326615389
Diffstat (limited to 'test')
-rw-r--r--test/packetimpact/testbench/layers.go22
-rw-r--r--test/packetimpact/testbench/layers_test.go2
-rw-r--r--test/packetimpact/tests/ipv6_fragment_reassembly_test.go6
-rw-r--r--test/packetimpact/tests/ipv6_unknown_options_action_test.go2
-rw-r--r--test/packetimpact/tests/tcp_network_unreachable_test.go6
-rw-r--r--test/packetimpact/tests/udp_icmp_error_propagation_test.go8
6 files changed, 32 insertions, 14 deletions
diff --git a/test/packetimpact/testbench/layers.go b/test/packetimpact/testbench/layers.go
index 24aa46cce..a35562ca8 100644
--- a/test/packetimpact/testbench/layers.go
+++ b/test/packetimpact/testbench/layers.go
@@ -775,7 +775,7 @@ func (l *IPv6FragmentExtHdr) String() string {
type ICMPv6 struct {
LayerBase
Type *header.ICMPv6Type
- Code *byte
+ Code *header.ICMPv6Code
Checksum *uint16
Payload []byte
}
@@ -823,6 +823,12 @@ func ICMPv6Type(v header.ICMPv6Type) *header.ICMPv6Type {
return &v
}
+// ICMPv6Code is a helper routine that allocates a new ICMPv6Type value to store
+// v and returns a pointer to it.
+func ICMPv6Code(v header.ICMPv6Code) *header.ICMPv6Code {
+ return &v
+}
+
// Byte is a helper routine that allocates a new byte value to store
// v and returns a pointer to it.
func Byte(v byte) *byte {
@@ -834,7 +840,7 @@ func parseICMPv6(b []byte) (Layer, layerParser) {
h := header.ICMPv6(b)
icmpv6 := ICMPv6{
Type: ICMPv6Type(h.Type()),
- Code: Byte(h.Code()),
+ Code: ICMPv6Code(h.Code()),
Checksum: Uint16(h.Checksum()),
Payload: h.NDPPayload(),
}
@@ -861,11 +867,17 @@ func ICMPv4Type(t header.ICMPv4Type) *header.ICMPv4Type {
return &t
}
+// ICMPv4Code is a helper routine that allocates a new header.ICMPv4Code value
+// to store t and returns a pointer to it.
+func ICMPv4Code(t header.ICMPv4Code) *header.ICMPv4Code {
+ return &t
+}
+
// ICMPv4 can construct and match an ICMPv4 encapsulation.
type ICMPv4 struct {
LayerBase
Type *header.ICMPv4Type
- Code *uint8
+ Code *header.ICMPv4Code
Checksum *uint16
}
@@ -881,7 +893,7 @@ func (l *ICMPv4) ToBytes() ([]byte, error) {
h.SetType(*l.Type)
}
if l.Code != nil {
- h.SetCode(byte(*l.Code))
+ h.SetCode(*l.Code)
}
if l.Checksum != nil {
h.SetChecksum(*l.Checksum)
@@ -901,7 +913,7 @@ func parseICMPv4(b []byte) (Layer, layerParser) {
h := header.ICMPv4(b)
icmpv4 := ICMPv4{
Type: ICMPv4Type(h.Type()),
- Code: Uint8(h.Code()),
+ Code: ICMPv4Code(h.Code()),
Checksum: Uint16(h.Checksum()),
}
return &icmpv4, parsePayload
diff --git a/test/packetimpact/testbench/layers_test.go b/test/packetimpact/testbench/layers_test.go
index a2a763034..eca0780b5 100644
--- a/test/packetimpact/testbench/layers_test.go
+++ b/test/packetimpact/testbench/layers_test.go
@@ -594,7 +594,7 @@ func TestIPv6ExtHdrOptions(t *testing.T) {
},
&ICMPv6{
Type: ICMPv6Type(header.ICMPv6ParamProblem),
- Code: Byte(0),
+ Code: ICMPv6Code(header.ICMPv6ErroneousHeader),
Checksum: Uint16(0x5f98),
Payload: []byte{0x00, 0x00, 0x00, 0x06},
},
diff --git a/test/packetimpact/tests/ipv6_fragment_reassembly_test.go b/test/packetimpact/tests/ipv6_fragment_reassembly_test.go
index b5f94ad4b..a24c85566 100644
--- a/test/packetimpact/tests/ipv6_fragment_reassembly_test.go
+++ b/test/packetimpact/tests/ipv6_fragment_reassembly_test.go
@@ -67,7 +67,7 @@ func TestIPv6FragmentReassembly(t *testing.T) {
rIP := tcpip.Address(net.ParseIP(testbench.RemoteIPv6).To16())
icmpv6 := testbench.ICMPv6{
Type: testbench.ICMPv6Type(header.ICMPv6EchoRequest),
- Code: testbench.Byte(0),
+ Code: testbench.ICMPv6Code(header.ICMPv6UnusedCode),
Payload: icmpv6EchoPayload,
}
icmpv6Bytes, err := icmpv6.ToBytes()
@@ -89,7 +89,7 @@ func TestIPv6FragmentReassembly(t *testing.T) {
},
&testbench.ICMPv6{
Type: testbench.ICMPv6Type(header.ICMPv6EchoRequest),
- Code: testbench.Byte(0),
+ Code: testbench.ICMPv6Code(header.ICMPv6UnusedCode),
Payload: icmpv6EchoPayload,
Checksum: &cksum,
})
@@ -116,7 +116,7 @@ func TestIPv6FragmentReassembly(t *testing.T) {
},
&testbench.ICMPv6{
Type: testbench.ICMPv6Type(header.ICMPv6EchoReply),
- Code: testbench.Byte(0),
+ Code: testbench.ICMPv6Code(header.ICMPv6UnusedCode),
},
}, time.Second)
if err != nil {
diff --git a/test/packetimpact/tests/ipv6_unknown_options_action_test.go b/test/packetimpact/tests/ipv6_unknown_options_action_test.go
index d7d63cbd2..e79d74476 100644
--- a/test/packetimpact/tests/ipv6_unknown_options_action_test.go
+++ b/test/packetimpact/tests/ipv6_unknown_options_action_test.go
@@ -172,7 +172,7 @@ func TestIPv6UnknownOptionAction(t *testing.T) {
&testbench.IPv6{},
&testbench.ICMPv6{
Type: testbench.ICMPv6Type(header.ICMPv6ParamProblem),
- Code: testbench.Byte(2),
+ Code: testbench.ICMPv6Code(header.ICMPv6UnknownOption),
Payload: icmpv6Payload,
},
}, time.Second)
diff --git a/test/packetimpact/tests/tcp_network_unreachable_test.go b/test/packetimpact/tests/tcp_network_unreachable_test.go
index 900352fa1..2f57dff19 100644
--- a/test/packetimpact/tests/tcp_network_unreachable_test.go
+++ b/test/packetimpact/tests/tcp_network_unreachable_test.go
@@ -72,7 +72,9 @@ func TestTCPSynSentUnreachable(t *testing.T) {
if !ok {
t.Fatalf("expected %s to be TCP", tcpLayers[tcpLayer])
}
- var icmpv4 testbench.ICMPv4 = testbench.ICMPv4{Type: testbench.ICMPv4Type(header.ICMPv4DstUnreachable), Code: testbench.Uint8(header.ICMPv4HostUnreachable)}
+ var icmpv4 testbench.ICMPv4 = testbench.ICMPv4{
+ Type: testbench.ICMPv4Type(header.ICMPv4DstUnreachable),
+ Code: testbench.ICMPv4Code(header.ICMPv4HostUnreachable)}
layers = append(layers, &icmpv4, ip, tcp)
rawConn.SendFrameStateless(t, layers)
@@ -126,7 +128,7 @@ func TestTCPSynSentUnreachable6(t *testing.T) {
}
var icmpv6 testbench.ICMPv6 = testbench.ICMPv6{
Type: testbench.ICMPv6Type(header.ICMPv6DstUnreachable),
- Code: testbench.Uint8(header.ICMPv6NetworkUnreachable),
+ Code: testbench.ICMPv6Code(header.ICMPv6NetworkUnreachable),
// Per RFC 4443 3.1, the payload contains 4 zeroed bytes.
Payload: []byte{0, 0, 0, 0},
}
diff --git a/test/packetimpact/tests/udp_icmp_error_propagation_test.go b/test/packetimpact/tests/udp_icmp_error_propagation_test.go
index b47ddb6c3..df35d16c8 100644
--- a/test/packetimpact/tests/udp_icmp_error_propagation_test.go
+++ b/test/packetimpact/tests/udp_icmp_error_propagation_test.go
@@ -62,9 +62,13 @@ func (e icmpError) String() string {
func (e icmpError) ToICMPv4() *testbench.ICMPv4 {
switch e {
case portUnreachable:
- return &testbench.ICMPv4{Type: testbench.ICMPv4Type(header.ICMPv4DstUnreachable), Code: testbench.Uint8(header.ICMPv4PortUnreachable)}
+ return &testbench.ICMPv4{
+ Type: testbench.ICMPv4Type(header.ICMPv4DstUnreachable),
+ Code: testbench.ICMPv4Code(header.ICMPv4PortUnreachable)}
case timeToLiveExceeded:
- return &testbench.ICMPv4{Type: testbench.ICMPv4Type(header.ICMPv4TimeExceeded), Code: testbench.Uint8(header.ICMPv4TTLExceeded)}
+ return &testbench.ICMPv4{
+ Type: testbench.ICMPv4Type(header.ICMPv4TimeExceeded),
+ Code: testbench.ICMPv4Code(header.ICMPv4TTLExceeded)}
}
return nil
}