Skip to content

Commit

Permalink
PR go/69966
Browse files Browse the repository at this point in the history
    syscall: Add new Getsockopt functions.
    
    Add GetsockoptICMPv6Filter, GetsockoptIPv6MTUInfo, GetsockoptUcred as
    appropriate.  These functions exist in the master library.
    
    For GCC PR 69966.

    Reviewed-on: https://go-review.googlesource.com/19960


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233747 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
ian committed Feb 26, 2016
1 parent ece566e commit 0c6c84a
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 2 deletions.
2 changes: 1 addition & 1 deletion gcc/go/gofrontend/MERGE
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
156f5f0152797ac2afe5f23803aeb3c7b8f8418e
3de822d11255d439fac9717897b017aae2de18c2

The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
7 changes: 7 additions & 0 deletions libgo/go/syscall/socket.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,6 +251,13 @@ func GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {
return &value, err
}

func GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {
var value ICMPv6Filter
vallen := Socklen_t(SizeofICMPv6Filter)
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
return &value, err
}

//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen Socklen_t) (err error)
//setsockopt(s _C_int, level _C_int, optname _C_int, val *byte, vallen Socklen_t) _C_int

Expand Down
7 changes: 7 additions & 0 deletions libgo/go/syscall/socket_bsd.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,3 +80,10 @@ func BindToDevice(fd int, device string) (err error) {
func anyToSockaddrOS(rsa *RawSockaddrAny) (Sockaddr, error) {
return nil, EAFNOSUPPORT
}

func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
var value IPv6MTUInfo
vallen := Socklen_t(SizeofIPv6MTUInfo)
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
return &value, err
}
14 changes: 14 additions & 0 deletions libgo/go/syscall/socket_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,20 @@ func anyToSockaddrOS(rsa *RawSockaddrAny) (Sockaddr, error) {
return nil, EAFNOSUPPORT
}

func GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {
var value IPv6MTUInfo
vallen := Socklen_t(SizeofIPv6MTUInfo)
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
return &value, err
}

func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
var value Ucred
vallen := Socklen_t(SizeofUcred)
err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
return &value, err
}

//sysnb EpollCreate(size int) (fd int, err error)
//epoll_create(size _C_int) _C_int

Expand Down
10 changes: 9 additions & 1 deletion libgo/mksysinfo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -870,6 +870,14 @@ if ! grep 'type ICMPv6Filter ' ${OUT} > /dev/null 2>&1; then
echo 'type ICMPv6Filter struct { Data [8]uint32 }' >> ${OUT}
fi

# The ip6_mtuinfo struct.
grep '^type _ip6_mtuinfo ' gen-sysinfo.go | \
sed -e 's/_ip6_mtuinfo/IPv6MTUInfo/' \
-e 's/ip6m_addr/Addr/' \
-e 's/_sockaddr_in6/RawSockaddrInet6/' \
-e 's/ip6m_mtu/Mtu/' \
>> ${OUT}

# Try to guess the type to use for fd_set.
fd_set=`grep '^type _fd_set ' gen-sysinfo.go || true`
fds_bits_type="_C_long"
Expand Down Expand Up @@ -1464,7 +1472,7 @@ set cmsghdr Cmsghdr ip_mreq IPMreq ip_mreqn IPMreqn ipv6_mreq IPv6Mreq \
msghdr Msghdr nlattr NlAttr nlmsgerr NlMsgerr nlmsghdr NlMsghdr \
rtattr RtAttr rtgenmsg RtGenmsg rtmsg RtMsg rtnexthop RtNexthop \
sock_filter SockFilter sock_fprog SockFprog ucred Ucred \
icmp6_filter ICMPv6Filter
icmp6_filter ICMPv6Filter ip6_mtuinfo IPv6MTUInfo
while test $# != 0; do
nc=$1
ngo=$2
Expand Down

0 comments on commit 0c6c84a

Please sign in to comment.