package bufio import ( "encoding/binary" "net/netip" "unsafe" "golang.org/x/sys/unix" ) func ToSockaddr(destination netip.AddrPort) (name unsafe.Pointer, nameLen uint32) { if destination.Addr().Is4() { sa := unix.RawSockaddrInet4{ Family: unix.AF_INET, Addr: destination.Addr().As4(), } binary.BigEndian.PutUint16((*[2]byte)(unsafe.Pointer(&sa.Port))[:], destination.Port()) name = unsafe.Pointer(&sa) nameLen = unix.SizeofSockaddrInet4 } else { sa := unix.RawSockaddrInet6{ Family: unix.AF_INET6, Addr: destination.Addr().As16(), } binary.BigEndian.PutUint16((*[2]byte)(unsafe.Pointer(&sa.Port))[:], destination.Port()) name = unsafe.Pointer(&sa) nameLen = unix.SizeofSockaddrInet6 } return }