From ee56b786a5093515a7b7fb8041e35b645f942b33 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 14 Nov 2018 22:20:01 -0800 Subject: [PATCH] add AF_PPPOX to anyToSockaddr. --- unix/syscall_linux.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/unix/syscall_linux.go b/unix/syscall_linux.go index 59ef6af3..b20026ba 100644 --- a/unix/syscall_linux.go +++ b/unix/syscall_linux.go @@ -853,6 +853,22 @@ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) { SharedUmemFD: pp.Shared_umem_fd, } return sa, nil + case AF_PPPOX: + pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa)) + if binary.BigEndian.Uint32(pp[2:6]) != 0 { + return nil, errors.New("PPPOX address type is not PPPoE") + } + sa := &SockaddrPPPoE{ + SID: binary.BigEndian.Uint16(pp[6:8]), + Remote: net.HardwareAddr(pp[8:14]), + } + for i := 14; i < 14+IFNAMSIZ; i++ { + if pp[i] == 0 { + sa.Dev = string(pp[14:i]) + break + } + } + return sa, nil } return nil, EAFNOSUPPORT }