1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
package bypass4netns
import (
"net"
"syscall"
"testing"
"github.com/stretchr/testify/assert"
)
func TestSerializeDeserializeSockaddr4(t *testing.T) {
ip := net.ParseIP("192.168.1.100")
port := 12345
sa := sockaddr{
IP: ip,
Port: port,
}
sa.Family = syscall.AF_INET
saBytes, err := sa.toBytes()
assert.Equal(t, nil, err)
assert.Equal(t, 16, len(saBytes))
sa2, err := newSockaddr(saBytes)
assert.Equal(t, nil, err)
assert.Equal(t, ip.String(), sa2.IP.String())
assert.Equal(t, port, sa2.Port)
}
func TestSerializeDeserializeSockaddr6(t *testing.T) {
ip := net.ParseIP("2001:0db8::1:0:0:1")
port := 12345
sa := sockaddr{
IP: ip,
Port: port,
Flowinfo: 0x12345678,
ScopeID: 0x9abcdef0,
}
sa.Family = syscall.AF_INET6
saBytes, err := sa.toBytes()
assert.Equal(t, nil, err)
assert.Equal(t, 28, len(saBytes))
sa2, err := newSockaddr(saBytes)
assert.Equal(t, nil, err)
assert.Equal(t, ip.String(), sa2.IP.String())
assert.Equal(t, port, sa2.Port)
assert.Equal(t, sa.Flowinfo, uint32(0x12345678))
assert.Equal(t, sa.ScopeID, uint32(0x9abcdef0))
}
|