summaryrefslogtreecommitdiff
path: root/libgo/go
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-30 23:57:42 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2012-01-30 23:57:42 +0000
commit82ca255148e17832219dfc39ec4b1dff846c293b (patch)
tree3f7e5e9d1fb2eaaf942a44773b8e5fa8a8f538b1 /libgo/go
parentf444be4c5d84ae11ee19c6c9b4a541043417184d (diff)
downloadgcc-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')
-rw-r--r--libgo/go/syscall/sockcmsg_unix.go6
-rw-r--r--libgo/go/syscall/socket.go28
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)
+}