diff options
| author | Andrey Konovalov <andreyknvl@google.com> | 2017-04-10 20:01:26 +0200 |
|---|---|---|
| committer | Andrey Konovalov <andreyknvl@google.com> | 2017-04-20 17:57:57 +0200 |
| commit | dd717f262b4b2d6727ff6b31bcedb144f6249ed5 (patch) | |
| tree | fb2e774316208741d6931a07192e31e00c80e32e /sys | |
| parent | c0ee75a5814c7f79e969c03d6dc9ca5457663c43 (diff) | |
sys: fix sendmmsg and recvmmsg
Diffstat (limited to 'sys')
| -rw-r--r-- | sys/socket.txt | 59 | ||||
| -rw-r--r-- | sys/socket_amd64.const | 1 | ||||
| -rw-r--r-- | sys/socket_arm64.const | 1 | ||||
| -rw-r--r-- | sys/socket_ppc64le.const | 1 |
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 |
