aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-04-10 20:01:26 +0200
committerAndrey Konovalov <andreyknvl@google.com>2017-04-20 17:57:57 +0200
commitdd717f262b4b2d6727ff6b31bcedb144f6249ed5 (patch)
treefb2e774316208741d6931a07192e31e00c80e32e /sys
parentc0ee75a5814c7f79e969c03d6dc9ca5457663c43 (diff)
sys: fix sendmmsg and recvmmsg
Diffstat (limited to 'sys')
-rw-r--r--sys/socket.txt59
-rw-r--r--sys/socket_amd64.const1
-rw-r--r--sys/socket_arm64.const1
-rw-r--r--sys/socket_ppc64le.const1
4 files changed, 38 insertions, 24 deletions
diff --git a/sys/socket.txt b/sys/socket.txt
index 686b6aee1..3ea218915 100644
--- a/sys/socket.txt
+++ b/sys/socket.txt
@@ -25,23 +25,24 @@ recvfrom(fd sock, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[i
getsockname(fd sock, addr ptr[out, sockaddr_all], addrlen ptr[inout, len[addr, int32]])
getpeername(fd sock, peer ptr[out, sockaddr_all], peerlen ptr[inout, len[peer, int32]])
-listen(fd sock, backlog int32)
-shutdown(fd sock, how flags[shutdown_flags])
sendmsg(fd sock, msg ptr[in, send_msghdr], f flags[send_flags])
-sendmmsg(fd sock, mmsg ptr[in, array[send_msghdr]], vlen len[mmsg], f flags[send_flags])
+sendmmsg(fd sock, mmsg ptr[in, array[send_mmsghdr]], vlen len[mmsg], f flags[send_flags])
recvmsg(fd sock, msg ptr[in, recv_msghdr], f flags[recv_flags])
-recvmmsg(fd sock, mmsg ptr[in, array[recv_msghdr]], vlen len[mmsg], f flags[recv_flags])
+recvmmsg(fd sock, mmsg ptr[in, array[recv_mmsghdr]], vlen len[mmsg], f flags[recv_flags])
+
+listen(fd sock, backlog int32)
+shutdown(fd sock, how flags[shutdown_flags])
getsockopt(fd sock, level int32, optname int32, optval buffer[out], optlen ptr[inout, len[optval, int32]])
setsockopt(fd sock, level int32, optname int32, optval buffer[in], optlen len[optval])
socket_domain = AF_UNIX, AF_INET, AF_INET6, AF_IPX, AF_NETLINK, AF_X25, AF_AX25, AF_ATMPVC, AF_APPLETALK, AF_PACKET
-socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET, SOCK_RAW, SOCK_RDM, SOCK_PACKET, SOCK_NONBLOCK, SOCK_CLOEXEC
+socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SOCK_DCCP, SOCK_PACKET, SOCK_NONBLOCK, SOCK_CLOEXEC
accept_flags = SOCK_NONBLOCK, SOCK_CLOEXEC
shutdown_flags = SHUT_RD, SHUT_WR
send_flags = MSG_CONFIRM, MSG_DONTROUTE, MSG_DONTWAIT, MSG_EOR, MSG_MORE, MSG_NOSIGNAL, MSG_OOB, MSG_PROBE, MSG_BATCH, MSG_FASTOPEN
recv_flags = MSG_CMSG_CLOEXEC, MSG_DONTWAIT, MSG_ERRQUEUE, MSG_OOB, MSG_PEEK, MSG_TRUNC, MSG_WAITALL, MSG_WAITFORONE
-sock_level = IPPROTO_ICMP, SOL_IP, SOL_TCP, SOL_UDP, SOL_IPV6, SOL_ICMPV6, SOL_SCTP, SOL_UDPLITE, SOL_RAW, SOL_IPX, SOL_AX25, SOL_ATALK, SOL_NETROM, SOL_ROSE, SOL_DECNET, SOL_PACKET, SOL_ATM, SOL_AAL, SOL_IRDA, SOL_NETBEUI, SOL_LLC, SOL_DCCP, SOL_NETLINK, SOL_TIPC, SOL_RXRPC, SOL_PPPOL2TP, SOL_BLUETOOTH, SOL_PNPIPE, SOL_RDS, SOL_IUCV, SOL_CAIF, SOL_ALG, SOL_NFC, SOL_KCM
+cmsg_levels = SOL_SOCKET, IPPROTO_ICMP, SOL_IP, SOL_TCP, SOL_UDP, SOL_IPV6, SOL_ICMPV6, SOL_SCTP, SOL_UDPLITE, SOL_RAW, SOL_IPX, SOL_AX25, SOL_ATALK, SOL_NETROM, SOL_ROSE, SOL_DECNET, SOL_PACKET, SOL_ATM, SOL_AAL, SOL_IRDA, SOL_NETBEUI, SOL_LLC, SOL_DCCP, SOL_NETLINK, SOL_TIPC, SOL_RXRPC, SOL_PPPOL2TP, SOL_BLUETOOTH, SOL_PNPIPE, SOL_RDS, SOL_IUCV, SOL_CAIF, SOL_ALG, SOL_NFC, SOL_KCM
# This sockaddr type corresponds to the struct sockaddr and is 16 bytes or less.
sockaddr [
@@ -141,30 +142,40 @@ sockaddr_all_generic {
}
send_msghdr {
- addr ptr[in, sockaddr_all, opt]
- addrlen len[addr, int32]
- vec ptr[in, array[iovec_in]]
- vlen len[vec, intptr]
- ctrl ptr[in, array[cmsghdr]]
- ctrllen len[ctrl, intptr]
- f flags[send_flags, int32]
+ msg_name ptr[in, sockaddr_all, opt]
+ msg_namelen len[msg_name, int32]
+ msg_iov ptr[in, array[iovec_in]]
+ msg_iovlen len[msg_iov, intptr]
+ msg_control ptr[in, array[cmsghdr]]
+ msg_controllen len[msg_control, intptr]
+ msg_flags flags[send_flags, int32]
+}
+
+send_mmsghdr {
+ msg_hdr send_msghdr
+ msg_len int32
}
recv_msghdr {
- addr ptr[out, sockaddr_all, opt]
- addrlen len[addr, int32]
- vec ptr[in, array[iovec_out]]
- vlen len[vec, intptr]
- ctrl buffer[out]
- ctrllen len[ctrl, intptr]
- f int32
+ msg_name ptr[out, sockaddr_all, opt]
+ msg_namelen len[msg_name, int32]
+ msg_iov ptr[in, array[iovec_out]]
+ msg_iovlen len[msg_iov, intptr]
+ msg_control buffer[out]
+ msg_controllen len[msg_control, intptr]
+ msg_flags int32
+}
+
+recv_mmsghdr {
+ msg_hdr recv_msghdr
+ msg_len int32
}
cmsghdr {
- len len[parent, intptr]
- level flags[sock_level, int32]
- type int32
- data array[int8]
+ cmsg_len len[parent, intptr]
+ cmsg_level flags[cmsg_levels, int32]
+ cmsg_type int32
+ data array[int8]
} [align_ptr]
# Socket options
diff --git a/sys/socket_amd64.const b/sys/socket_amd64.const
index 894687482..e8ef6ff7c 100644
--- a/sys/socket_amd64.const
+++ b/sys/socket_amd64.const
@@ -114,6 +114,7 @@ SIOCSMIIREG = 35145
SIOCSPGRP = 35074
SIOCWANDEV = 35146
SOCK_CLOEXEC = 524288
+SOCK_DCCP = 6
SOCK_DGRAM = 2
SOCK_NONBLOCK = 2048
SOCK_PACKET = 10
diff --git a/sys/socket_arm64.const b/sys/socket_arm64.const
index bbf0e6628..13b184bed 100644
--- a/sys/socket_arm64.const
+++ b/sys/socket_arm64.const
@@ -114,6 +114,7 @@ SIOCSMIIREG = 35145
SIOCSPGRP = 35074
SIOCWANDEV = 35146
SOCK_CLOEXEC = 524288
+SOCK_DCCP = 6
SOCK_DGRAM = 2
SOCK_NONBLOCK = 2048
SOCK_PACKET = 10
diff --git a/sys/socket_ppc64le.const b/sys/socket_ppc64le.const
index d66e232e1..710750efb 100644
--- a/sys/socket_ppc64le.const
+++ b/sys/socket_ppc64le.const
@@ -114,6 +114,7 @@ SIOCSMIIREG = 35145
SIOCSPGRP = 35074
SIOCWANDEV = 35146
SOCK_CLOEXEC = 524288
+SOCK_DCCP = 6
SOCK_DGRAM = 2
SOCK_NONBLOCK = 2048
SOCK_PACKET = 10