| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- 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)
 
- }
 
 
  |