diff options
author | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-30 23:57:42 +0000 |
---|---|---|
committer | ian <ian@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-01-30 23:57:42 +0000 |
commit | 82ca255148e17832219dfc39ec4b1dff846c293b (patch) | |
tree | 3f7e5e9d1fb2eaaf942a44773b8e5fa8a8f538b1 /libgo/go/syscall | |
parent | f444be4c5d84ae11ee19c6c9b4a541043417184d (diff) | |
download | gcc-82ca255148e17832219dfc39ec4b1dff846c293b.tar.gz |
syscall: Support socket control messages.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@183745 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgo/go/syscall')
-rw-r--r-- | libgo/go/syscall/sockcmsg_unix.go | 6 | ||||
-rw-r--r-- | libgo/go/syscall/socket.go | 28 |
2 files changed, 19 insertions, 15 deletions
diff --git a/libgo/go/syscall/sockcmsg_unix.go b/libgo/go/syscall/sockcmsg_unix.go index d279decb65a..1faac84f4a6 100644 --- a/libgo/go/syscall/sockcmsg_unix.go +++ b/libgo/go/syscall/sockcmsg_unix.go @@ -14,7 +14,7 @@ import ( // Round the length of a raw sockaddr up to align it propery. func cmsgAlignOf(salen int) int { - salign := sizeofPtr + salign := int(sizeofPtr) // NOTE: It seems like 64-bit Darwin kernel still requires 32-bit // aligned access to BSD subsystem. if darwinAMD64 { @@ -39,7 +39,7 @@ func CmsgSpace(datalen int) int { } func cmsgData(cmsg *Cmsghdr) unsafe.Pointer { - return unsafe.Pointer(uintptr(unsafe.Pointer(cmsg)) + SizeofCmsghdr) + return unsafe.Pointer(uintptr(unsafe.Pointer(cmsg)) + uintptr(SizeofCmsghdr)) } type SocketControlMessage struct { @@ -72,7 +72,7 @@ func ParseSocketControlMessage(buf []byte) ([]SocketControlMessage, error) { func socketControlMessageHeaderAndData(buf []byte) (*Cmsghdr, []byte, error) { h := (*Cmsghdr)(unsafe.Pointer(&buf[0])) - if h.Len < SizeofCmsghdr || int(h.Len) > len(buf) { + if int(h.Len) < SizeofCmsghdr || int(h.Len) > len(buf) { return nil, nil, EINVAL } return h, buf[cmsgAlignOf(SizeofCmsghdr):], nil diff --git a/libgo/go/syscall/socket.go b/libgo/go/syscall/socket.go index 517b5b9408d..7a2e95ca2a2 100644 --- a/libgo/go/syscall/socket.go +++ b/libgo/go/syscall/socket.go @@ -17,12 +17,12 @@ import "unsafe" var SocketDisableIPv6 bool type Sockaddr interface { - sockaddr() (ptr *RawSockaddrAny, len Socklen_t, err error) // lowercase; only we can define Sockaddrs + sockaddr() (ptr *RawSockaddrAny, len Socklen_t, err error) // lowercase; only we can define Sockaddrs } type RawSockaddrAny struct { Addr RawSockaddr - Pad [12]int8 + Pad [12]int8 } const SizeofSockaddrAny = 0x1c @@ -30,7 +30,7 @@ const SizeofSockaddrAny = 0x1c type SockaddrInet4 struct { Port int Addr [4]byte - raw RawSockaddrInet4 + raw RawSockaddrInet4 } func (sa *SockaddrInet4) sockaddr() (*RawSockaddrAny, Socklen_t, error) { @@ -40,7 +40,7 @@ func (sa *SockaddrInet4) sockaddr() (*RawSockaddrAny, Socklen_t, error) { sa.raw.Family = AF_INET n := sa.raw.setLen() p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) - p[0] = byte(sa.Port>>8) + p[0] = byte(sa.Port >> 8) p[1] = byte(sa.Port) for i := 0; i < len(sa.Addr); i++ { sa.raw.Addr[i] = sa.Addr[i] @@ -49,10 +49,10 @@ func (sa *SockaddrInet4) sockaddr() (*RawSockaddrAny, Socklen_t, error) { } type SockaddrInet6 struct { - Port int + Port int ZoneId uint32 - Addr [16]byte - raw RawSockaddrInet6 + Addr [16]byte + raw RawSockaddrInet6 } func (sa *SockaddrInet6) sockaddr() (*RawSockaddrAny, Socklen_t, error) { @@ -62,7 +62,7 @@ func (sa *SockaddrInet6) sockaddr() (*RawSockaddrAny, Socklen_t, error) { sa.raw.Family = AF_INET6 n := sa.raw.setLen() p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port)) - p[0] = byte(sa.Port>>8) + p[0] = byte(sa.Port >> 8) p[1] = byte(sa.Port) sa.raw.Scope_id = sa.ZoneId for i := 0; i < len(sa.Addr); i++ { @@ -73,7 +73,7 @@ func (sa *SockaddrInet6) sockaddr() (*RawSockaddrAny, Socklen_t, error) { type SockaddrUnix struct { Name string - raw RawSockaddrUnix + raw RawSockaddrUnix } func (sa *SockaddrUnix) sockaddr() (*RawSockaddrAny, Socklen_t, error) { @@ -268,12 +268,12 @@ func SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) { } type Linger struct { - Onoff int32; - Linger int32; + Onoff int32 + Linger int32 } func SetsockoptLinger(fd, level, opt int, l *Linger) (err error) { - return setsockopt(fd, level, opt, (*byte)(unsafe.Pointer(l)), Socklen_t(unsafe.Sizeof(*l))); + return setsockopt(fd, level, opt, (*byte)(unsafe.Pointer(l)), Socklen_t(unsafe.Sizeof(*l))) } func SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) { @@ -405,3 +405,7 @@ func (iov *Iovec) SetLen(length int) { func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = Msghdr_controllen_t(length) } + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = Cmsghdr_len_t(length) +} |