示例#1
0
func TestPackWithIPv4(t *testing.T) {
	var b packet.Buffer
	b.Init(make([]byte, len(test_with_ipv4)))

	ip4 := ipv4.Make()
	ip4.SrcAddr = net.ParseIP(ipsrc_str)
	ip4.DstAddr = net.ParseIP(ipdst_str)

	udp := &udp.Packet{
		SrcPort: 52134,
		DstPort: 80,
		Length:  18,
	}

	ip4.SetPayload(udp)

	err := udp.Pack(&b)
	if err != nil {
		t.Fatalf("Error packing: %s", err)
	}

	if !bytes.Equal(test_with_ipv4, b.Buffer()) {
		t.Fatalf("Raw packet mismatch: %x", b.Buffer())
	}
}
示例#2
0
func TestPackOptions(t *testing.T) {
	var b packet.Buffer
	b.Init(make([]byte, len(test_options)))

	p := MakeTestSimple()

	p.DataOff = 10

	p.Options = append(p.Options,
		tcp.Option{
			Type: tcp.MSS,
			Len:  4,
			Data: []byte{0x05, 0x78},
		},
	)

	p.Options = append(p.Options,
		tcp.Option{
			Type: tcp.SAckOk,
			Len:  2,
		},
	)

	p.Options = append(p.Options,
		tcp.Option{
			Type: tcp.Timestamp,
			Len:  10,
			Data: []byte{0x61, 0x25, 0xE5, 0xB2, 0x00, 0x13, 0x15, 0x66},
		},
	)

	p.Options = append(p.Options,
		tcp.Option{
			Type: tcp.WindowScale,
			Len:  3,
			Data: []byte{0x0A},
		},
	)

	p.Options = append(p.Options,
		tcp.Option{
			Type: tcp.End,
		},
	)

	err := p.Pack(&b)
	if err != nil {
		t.Fatalf("Error packing: %s", err)
	}

	if !bytes.Equal(test_options, b.Buffer()) {
		t.Fatalf("Raw packet mismatch: %x", b.Buffer())
	}
}
示例#3
0
func TestPack(t *testing.T) {
	var b packet.Buffer
	b.Init(make([]byte, len(test_simple)))

	p := MakeTestSimple()

	err := p.Pack(&b)
	if err != nil {
		t.Fatalf("Error packing: %s", err)
	}

	if !bytes.Equal(test_simple, b.Buffer()) {
		t.Fatalf("Raw packet mismatch: %x", b.Buffer())
	}
}
示例#4
0
func TestPackWithIPv6(t *testing.T) {
	var b packet.Buffer
	b.Init(make([]byte, len(test_with_ipv6)))

	ip6 := ipv6.Make()
	ip6.SrcAddr = net.ParseIP(ipsrc_str)
	ip6.DstAddr = net.ParseIP(ipdst_str)

	icmp6 := MakeTestSimple()

	ip6.SetPayload(icmp6)

	err := icmp6.Pack(&b)
	if err != nil {
		t.Fatalf("Error packing: %s", err)
	}

	if !bytes.Equal(test_with_ipv6, b.Buffer()) {
		t.Fatalf("Raw packet mismatch: %x", b.Buffer())
	}
}