mirror of
https://github.com/slackhq/nebula.git
synced 2025-11-22 08:24:25 +01:00
firewall reject packets: cleanup error cases (#957)
This commit is contained in:
73
iputil/packet_test.go
Normal file
73
iputil/packet_test.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package iputil
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"golang.org/x/net/ipv4"
|
||||
)
|
||||
|
||||
func Test_CreateRejectPacket(t *testing.T) {
|
||||
h := ipv4.Header{
|
||||
Len: 20,
|
||||
Src: net.IPv4(10, 0, 0, 1),
|
||||
Dst: net.IPv4(10, 0, 0, 2),
|
||||
Protocol: 1, // ICMP
|
||||
}
|
||||
|
||||
b, err := h.Marshal()
|
||||
if err != nil {
|
||||
t.Fatalf("h.Marhshal: %v", err)
|
||||
}
|
||||
b = append(b, []byte{0, 3, 0, 4}...)
|
||||
|
||||
expectedLen := ipv4.HeaderLen + 8 + h.Len + 4
|
||||
out := make([]byte, expectedLen)
|
||||
rejectPacket := CreateRejectPacket(b, out)
|
||||
assert.NotNil(t, rejectPacket)
|
||||
assert.Len(t, rejectPacket, expectedLen)
|
||||
|
||||
// ICMP with max header len
|
||||
h = ipv4.Header{
|
||||
Len: 60,
|
||||
Src: net.IPv4(10, 0, 0, 1),
|
||||
Dst: net.IPv4(10, 0, 0, 2),
|
||||
Protocol: 1, // ICMP
|
||||
Options: make([]byte, 40),
|
||||
}
|
||||
|
||||
b, err = h.Marshal()
|
||||
if err != nil {
|
||||
t.Fatalf("h.Marhshal: %v", err)
|
||||
}
|
||||
b = append(b, []byte{0, 3, 0, 4, 0, 0, 0, 0}...)
|
||||
|
||||
expectedLen = MaxRejectPacketSize
|
||||
out = make([]byte, MaxRejectPacketSize)
|
||||
rejectPacket = CreateRejectPacket(b, out)
|
||||
assert.NotNil(t, rejectPacket)
|
||||
assert.Len(t, rejectPacket, expectedLen)
|
||||
|
||||
// TCP with max header len
|
||||
h = ipv4.Header{
|
||||
Len: 60,
|
||||
Src: net.IPv4(10, 0, 0, 1),
|
||||
Dst: net.IPv4(10, 0, 0, 2),
|
||||
Protocol: 6, // TCP
|
||||
Options: make([]byte, 40),
|
||||
}
|
||||
|
||||
b, err = h.Marshal()
|
||||
if err != nil {
|
||||
t.Fatalf("h.Marhshal: %v", err)
|
||||
}
|
||||
b = append(b, []byte{0, 3, 0, 4}...)
|
||||
b = append(b, make([]byte, 16)...)
|
||||
|
||||
expectedLen = ipv4.HeaderLen + 20
|
||||
out = make([]byte, expectedLen)
|
||||
rejectPacket = CreateRejectPacket(b, out)
|
||||
assert.NotNil(t, rejectPacket)
|
||||
assert.Len(t, rejectPacket, expectedLen)
|
||||
}
|
||||
Reference in New Issue
Block a user