aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@gmail.com>2017-02-10 14:07:36 +0100
committerGitHub <noreply@github.com>2017-02-10 14:07:36 +0100
commita947d3fe7650e81868cafced58b75b807dda0943 (patch)
treedc99d3c1ab4cf10fe6f20ac114cbf49f1e555478 /sys
parentaaaed62a5051d096841245d061c559238a94b5e3 (diff)
parentab9bcf27a6e46d376688327ac9f9ed3e350ba242 (diff)
Merge pull request #135 from xairy/sys-improve-inet-sockets
Improve inet sockets descriptions
Diffstat (limited to 'sys')
-rw-r--r--sys/socket.txt5
-rw-r--r--sys/socket_amd64.const34
-rw-r--r--sys/socket_arm64.const34
-rw-r--r--sys/socket_inet.txt151
-rw-r--r--sys/socket_inet_amd64.const79
-rw-r--r--sys/socket_inet_arm64.const79
-rw-r--r--sys/socket_inet_icmp.txt27
-rw-r--r--sys/socket_inet_icmp_amd64.const11
-rw-r--r--sys/socket_inet_icmp_arm64.const11
-rw-r--r--sys/socket_inet_icmp_ppc64le.const11
-rw-r--r--sys/socket_inet_ppc64le.const79
-rw-r--r--sys/socket_inet_tcp.txt49
-rw-r--r--sys/socket_inet_tcp_amd64.const24
-rw-r--r--sys/socket_inet_tcp_arm64.const24
-rw-r--r--sys/socket_inet_tcp_ppc64le.const24
-rw-r--r--sys/socket_inet_udp.txt49
-rw-r--r--sys/socket_inet_udp_amd64.const16
-rw-r--r--sys/socket_inet_udp_arm64.const16
-rw-r--r--sys/socket_inet_udp_ppc64le.const16
-rw-r--r--sys/socket_ppc64le.const34
20 files changed, 482 insertions, 291 deletions
diff --git a/sys/socket.txt b/sys/socket.txt
index eb4d6c956..7da4f5442 100644
--- a/sys/socket.txt
+++ b/sys/socket.txt
@@ -1,9 +1,12 @@
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+# TODO: due to autobind a socket can bind to port 0, that will result in a random port which is not reproducible
+
include <linux/socket.h>
include <linux/net.h>
include <linux/net_tstamp.h>
+include <uapi/linux/in.h>
include <asm/ioctls.h>
resource sock[fd]
@@ -12,7 +15,6 @@ socket(domain flags[socket_domain], type flags[socket_type], proto int8) sock
socketpair(domain flags[socket_domain], type flags[socket_type], proto int8, fds ptr[out, pipefd])
accept(fd sock, peer ptr[out, sockaddr, opt], peerlen ptr[inout, len[peer, int32]]) sock
accept4(fd sock, peer ptr[out, sockaddr, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock
-# TODO: must not bind to port 0, that will result in a random port which is not reproducible
bind(fd sock, addr ptr[in, sockaddr], addrlen len[addr])
listen(fd sock, backlog int32)
connect(fd sock, addr ptr[in, sockaddr], addrlen len[addr])
@@ -58,6 +60,7 @@ sockopt_opt_sock_int = SO_ACCEPTCONN, SO_BROADCAST, SO_DEBUG, SO_DOMAIN, SO_ERRO
sockopt_opt_sock_timeval = SO_RCVTIMEO, SO_SNDTIMEO
sockopt_opt_sock_buf = SO_BINDTODEVICE, SO_PEERCRED, SO_PEERNAME, SO_PEERSEC, SO_GET_FILTER
sockopt_so_timestamping = SOF_TIMESTAMPING_TX_HARDWARE, SOF_TIMESTAMPING_TX_SOFTWARE, SOF_TIMESTAMPING_RX_HARDWARE, SOF_TIMESTAMPING_RX_SOFTWARE, SOF_TIMESTAMPING_SOFTWARE, SOF_TIMESTAMPING_SYS_HARDWARE, SOF_TIMESTAMPING_RAW_HARDWARE, SOF_TIMESTAMPING_OPT_ID, SOF_TIMESTAMPING_TX_SCHED, SOF_TIMESTAMPING_TX_ACK, SOF_TIMESTAMPING_OPT_CMSG, SOF_TIMESTAMPING_OPT_TSONLY
+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
sockaddr [
un sockaddr_un
diff --git a/sys/socket_amd64.const b/sys/socket_amd64.const
index fe4c4b0a9..0af36e1b4 100644
--- a/sys/socket_amd64.const
+++ b/sys/socket_amd64.const
@@ -9,6 +9,7 @@ AF_NETLINK = 16
AF_PACKET = 17
AF_UNIX = 1
AF_X25 = 9
+IPPROTO_ICMP = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -49,7 +50,40 @@ SOF_TIMESTAMPING_TX_ACK = 512
SOF_TIMESTAMPING_TX_HARDWARE = 1
SOF_TIMESTAMPING_TX_SCHED = 256
SOF_TIMESTAMPING_TX_SOFTWARE = 2
+SOL_AAL = 265
+SOL_ALG = 279
+SOL_ATALK = 258
+SOL_ATM = 264
+SOL_AX25 = 257
+SOL_BLUETOOTH = 274
+SOL_CAIF = 278
+SOL_DCCP = 269
+SOL_DECNET = 261
+SOL_ICMPV6 = 58
+SOL_IP = 0
+SOL_IPV6 = 41
+SOL_IPX = 256
+SOL_IRDA = 266
+SOL_IUCV = 277
+SOL_KCM = 281
+SOL_LLC = 268
+SOL_NETBEUI = 267
+SOL_NETLINK = 270
+SOL_NETROM = 259
+SOL_NFC = 280
+SOL_PACKET = 263
+SOL_PNPIPE = 275
+SOL_PPPOL2TP = 273
+SOL_RAW = 255
+SOL_RDS = 276
+SOL_ROSE = 260
+SOL_RXRPC = 272
+SOL_SCTP = 132
SOL_SOCKET = 1
+SOL_TCP = 6
+SOL_TIPC = 271
+SOL_UDP = 17
+SOL_UDPLITE = 136
SO_ACCEPTCONN = 30
SO_ATTACH_BPF = 50
SO_ATTACH_FILTER = 26
diff --git a/sys/socket_arm64.const b/sys/socket_arm64.const
index 35944d14d..5dc6b5daf 100644
--- a/sys/socket_arm64.const
+++ b/sys/socket_arm64.const
@@ -9,6 +9,7 @@ AF_NETLINK = 16
AF_PACKET = 17
AF_UNIX = 1
AF_X25 = 9
+IPPROTO_ICMP = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -49,7 +50,40 @@ SOF_TIMESTAMPING_TX_ACK = 512
SOF_TIMESTAMPING_TX_HARDWARE = 1
SOF_TIMESTAMPING_TX_SCHED = 256
SOF_TIMESTAMPING_TX_SOFTWARE = 2
+SOL_AAL = 265
+SOL_ALG = 279
+SOL_ATALK = 258
+SOL_ATM = 264
+SOL_AX25 = 257
+SOL_BLUETOOTH = 274
+SOL_CAIF = 278
+SOL_DCCP = 269
+SOL_DECNET = 261
+SOL_ICMPV6 = 58
+SOL_IP = 0
+SOL_IPV6 = 41
+SOL_IPX = 256
+SOL_IRDA = 266
+SOL_IUCV = 277
+SOL_KCM = 281
+SOL_LLC = 268
+SOL_NETBEUI = 267
+SOL_NETLINK = 270
+SOL_NETROM = 259
+SOL_NFC = 280
+SOL_PACKET = 263
+SOL_PNPIPE = 275
+SOL_PPPOL2TP = 273
+SOL_RAW = 255
+SOL_RDS = 276
+SOL_ROSE = 260
+SOL_RXRPC = 272
+SOL_SCTP = 132
SOL_SOCKET = 1
+SOL_TCP = 6
+SOL_TIPC = 271
+SOL_UDP = 17
+SOL_UDPLITE = 136
SO_ACCEPTCONN = 30
SO_ATTACH_BPF = 50
SO_ATTACH_FILTER = 26
diff --git a/sys/socket_inet.txt b/sys/socket_inet.txt
index 41b214ccd..5e1815ac1 100644
--- a/sys/socket_inet.txt
+++ b/sys/socket_inet.txt
@@ -3,45 +3,16 @@
include <linux/ip.h>
include <linux/ipv6.h>
+include <uapi/linux/netfilter_ipv6/ip6_tables.h>
-getsockopt$ip_int(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_int(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_int], optval ptr[in, int32], optlen len[optval])
-getsockopt$ip_buf(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
-getsockopt$ip_mreq(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreq], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_mreq(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreq], optlen len[optval])
-getsockopt$ip_mreqn(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreqn], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_mreqn(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreqn], optlen len[optval])
-getsockopt$ip_mreqsrc(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[out, ip_mreq_source], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_mreqsrc(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[in, ip_mreq_source], optlen len[optval])
-setsockopt$ip_msfilter(fd sock, level const[IPPROTO_IP], optname const[IP_MSFILTER], optval ptr[in, ip_msfilter], optlen len[optval])
-getsockopt$ip_mtu(fd sock, level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_mtu(fd sock, level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval])
-getsockopt$ip_opts(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[out], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_opts(fd sock, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[in], optlen len[optval])
-getsockopt$ip_pktinfo(fd sock, level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[out, in_pktinfo], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_pktinfo(fd sock, level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[in, in_pktinfo], optlen len[optval])
-getsockopt$ip_ipsec(fd sock, level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[out, xfrm_filer], optlen ptr[inout, len[optval, int32]])
-setsockopt$ip_ipsec(fd sock, level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[in, xfrm_filer], optlen len[optval])
-
-getsockopt$ipv6_int(fd sock, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
-setsockopt$ipv6_int(fd sock, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_int], optval ptr[in, int32], optlen len[optval])
-getsockopt$ipv6_mreq(fd sock, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[out, ipv6_mreq], optlen ptr[inout, len[optval, int32]])
-setsockopt$ipv6_mreq(fd sock, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[in, ipv6_mreq], optlen len[optval])
-getsockopt$ipv6_mtu(fd sock, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]])
-setsockopt$ipv6_mtu(fd sock, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval])
-getsockopt$ipv6_opts(fd sock, level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[out], optlen ptr[inout, len[optval, int32]])
-setsockopt$ipv6_opts(fd sock, level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[in], optlen len[optval])
-
-sockopt_opt_ip_int = IP_FREEBIND, IP_HDRINCL, IP_MTU, IP_MULTICAST_ALL, IP_MULTICAST_LOOP, IP_MULTICAST_TTL, IP_NODEFRAG, IP_RECVOPTS, IP_RECVORIGDSTADDR, IP_RECVTOS, IP_RECVTTL, IP_RETOPTS, IP_ROUTER_ALERT, IP_TOS, IP_TRANSPARENT, IP_TTL, IP_RECVERR, IP_PASSSEC, IP_MINTTL, IP_CHECKSUM, IP_BIND_ADDRESS_NO_PORT
-sockopt_opt_ip_mreq = IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_MULTICAST_IF
-sockopt_opt_ip_mreqsrc = IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP, IP_UNBLOCK_SOURCE
-sockopt_opt_ip_buf = IP_MSFILTER
-sockopt_opt_ip_opts = IP_OPTIONS, IP_PKTOPTIONS
-ip_msfilter_mode = MCAST_INCLUDE, MCAST_EXCLUDE
-ip_mtu_discover = IP_PMTUDISC_DONT, IP_PMTUDISC_WANT, IP_PMTUDISC_DO, IP_PMTUDISC_PROBE, IP_PMTUDISC_INTERFACE, IP_PMTUDISC_OMIT
-sockopt_opt_ipv6_int = IPV6_ADDRFORM, IPV6_MTU, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_RECVPKTINFO, IPV6_RECVERR, IPV6_ROUTER_ALERT, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT, IPV6_CHECKSUM, IPV6_2292PKTINFO, IPV6_2292HOPOPTS, IPV6_2292DSTOPTS, IPV6_2292RTHDR, IPV6_2292HOPLIMIT
-sockopt_opt_ipv6_mreq = IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_JOIN_ANYCAST, IPV6_LEAVE_ANYCAST
-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
+# IP sockets
+
+resource sock_in[sock]
+
+sock_in_pair {
+ f0 sock_in
+ f1 sock_in
+}
in_addr [
# 0.0.0.0
@@ -52,6 +23,34 @@ in_addr [
broadcast const[0xffffffff, int32be]
]
+sockaddr_in {
+ family const[AF_INET, int16]
+ port proc[int16be, 20000, 4]
+ addr in_addr
+ pad array[const[0, int8], 8]
+}
+
+socket$inet(domain const[AF_INET], type flags[socket_type], proto int8) sock_in
+socketpair$inet(domain const[AF_INET], type flags[socket_type], proto int8, fds ptr[out, sock_in_pair])
+accept$inet(fd sock_in, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]]) sock_in
+accept4$inet(fd sock_in, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_in
+bind$inet(fd sock_in, addr ptr[in, sockaddr_in], addrlen len[addr])
+connect$inet(fd sock_in, addr ptr[in, sockaddr_in], addrlen len[addr])
+sendto$inet(fd sock_in, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
+recvfrom$inet(fd sock_in, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
+getsockname$inet(fd sock_in, addr ptr[out, sockaddr_in], addrlen ptr[inout, len[addr, int32]])
+getpeername$inet(fd sock_in, peer ptr[out, sockaddr_in], peerlen ptr[inout, len[peer, int32]])
+
+# IPv6 sockets
+
+resource sock_in6[sock]
+
+sock_in6_pair {
+ f0 sock_in6
+ f1 sock_in6
+}
+
+
in6_addr_empty {
a0 const[0, int64be]
a1 const[0, int64be]
@@ -67,13 +66,6 @@ in6_addr [
loopback in6_addr_loopback
]
-sockaddr_in {
- family const[AF_INET, int16]
- port proc[int16be, 20000, 4]
- addr in_addr
- pad array[const[0, int8], 8]
-}
-
sockaddr_in6 {
family const[AF_INET6, int16]
port proc[int16be, 20000, 4]
@@ -97,6 +89,63 @@ sockaddr_storage [
in6 sockaddr_storage_in6
]
+socket$inet6(domain const[AF_INET6], type flags[socket_type], proto int8) sock_in6
+socketpair$inet6(domain const[AF_INET6], type flags[socket_type], proto int8, fds ptr[out, sock_in6_pair])
+accept$inet6(fd sock_in6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]]) sock_in6
+accept4$inet6(fd sock_in6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_in6
+bind$inet6(fd sock_in6, addr ptr[in, sockaddr_in6], addrlen len[addr])
+connect$inet6(fd sock_in6, addr ptr[in, sockaddr_in6], addrlen len[addr])
+sendto$inet6(fd sock_in6, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
+recvfrom$inet6(fd sock_in6, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
+getsockname$inet6(fd sock_in6, addr ptr[out, sockaddr_in6], addrlen ptr[inout, len[addr, int32]])
+getpeername$inet6(fd sock_in6, peer ptr[out, sockaddr_in6], peerlen ptr[inout, len[peer, int32]])
+
+# Generic IP options
+
+inet_option_types_int = IP_TOS, IP_TTL, IP_HDRINCL, IP_ROUTER_ALERT, IP_RECVOPTS, IP_RETOPTS, IP_PKTINFO, IP_MTU_DISCOVER, IP_RECVERR, IP_RECVTTL, IP_RECVTOS, IP_MTU, IP_FREEBIND, IP_PASSSEC, IP_TRANSPARENT, IP_RECVORIGDSTADDR, IP_MINTTL, IP_NODEFRAG, IP_CHECKSUM, IP_BIND_ADDRESS_NO_PORT, IP_MULTICAST_TTL, IP_MULTICAST_LOOP, IP_MULTICAST_ALL, IP_UNICAST_IF
+
+inet_option_types_buf = IP_OPTIONS, IP_PKTOPTIONS, IP_IPSEC_POLICY, IP_XFRM_POLICY, IP_MULTICAST_IF, IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_UNBLOCK_SOURCE, IP_BLOCK_SOURCE, IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_MSFILTER, MCAST_JOIN_GROUP, MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP, MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, MCAST_MSFILTER
+
+getsockopt$ip_int(fd sock_in, level const[IPPROTO_IP], optname flags[inet_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_int(fd sock_in, level const[IPPROTO_IP], optname flags[inet_option_types_int], optval ptr[in, int32], optlen len[optval])
+getsockopt$ip_buf(fd sock_in, level const[IPPROTO_IP], optname flags[inet_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_buf(fd sock_in, level const[IPPROTO_IP], optname flags[inet_option_types_buf], optval buffer[in], optlen len[optval])
+
+# Generic IPv6 options
+
+inet6_option_types_int = IPV6_ADDRFORM, IPV6_2292PKTINFO, IPV6_2292HOPOPTS, IPV6_2292DSTOPTS, IPV6_2292RTHDR, IPV6_CHECKSUM, IPV6_2292HOPLIMIT, IPV6_NEXTHOP, IPV6_AUTHHDR, IPV6_FLOWINFO, IPV6_UNICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_LOOP, IPV6_ROUTER_ALERT, IPV6_MTU_DISCOVER, IPV6_MTU, IPV6_RECVERR, IPV6_V6ONLY, IPV6_FLOWINFO_SEND, IPV6_HDRINCL, IPV6_RECVPKTINFO, IPV6_RECVHOPLIMIT, IPV6_HOPLIMIT, IPV6_RECVHOPOPTS, IPV6_RECVRTHDR, IPV6_RECVDSTOPTS, IPV6_RECVPATHMTU, IPV6_DONTFRAG, IPV6_RECVTCLASS, IPV6_TCLASS, IP6T_SO_ORIGINAL_DST, IPV6_AUTOFLOWLABEL, IPV6_ADDR_PREFERENCES, IPV6_MINHOPCOUNT, IPV6_RECVORIGDSTADDR, IPV6_TRANSPARENT, IPV6_UNICAST_IF
+
+inet6_option_types_buf = IPV6_2292PKTOPTIONS, IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_JOIN_ANYCAST, IPV6_LEAVE_ANYCAST, IPV6_FLOWLABEL_MGR, IPV6_IPSEC_POLICY, IPV6_XFRM_POLICY, MCAST_JOIN_GROUP, MCAST_BLOCK_SOURCE, MCAST_UNBLOCK_SOURCE, MCAST_LEAVE_GROUP, MCAST_JOIN_SOURCE_GROUP, MCAST_LEAVE_SOURCE_GROUP, MCAST_MSFILTER, IPV6_PKTINFO, IPV6_HOPOPTS, IPV6_RTHDRDSTOPTS, IPV6_RTHDR, IPV6_DSTOPTS, IPV6_PATHMTU, IP6T_SO_GET_REVISION_MATCH, IP6T_SO_GET_REVISION_TARGET
+
+getsockopt$ip6_int(fd sock_in6, level const[IPPROTO_IPV6], optname flags[inet6_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip6_int(fd sock_in6, level const[IPPROTO_IPV6], optname flags[inet6_option_types_int], optval ptr[in, int32], optlen len[optval])
+getsockopt$ip6_buf(fd sock_in6, level const[IPPROTO_IPV6], optname flags[inet6_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip6_buf(fd sock_in6, level const[IPPROTO_IPV6], optname flags[inet6_option_types_buf], optval buffer[in], optlen len[optval])
+
+# Specific IP options
+
+getsockopt$ip_mreq(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreq], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_mreq(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreq], optlen len[optval])
+getsockopt$ip_mreqn(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[out, ip_mreqn], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_mreqn(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreq], optval ptr[in, ip_mreqn], optlen len[optval])
+getsockopt$ip_mreqsrc(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[out, ip_mreq_source], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_mreqsrc(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_mreqsrc], optval ptr[in, ip_mreq_source], optlen len[optval])
+setsockopt$ip_msfilter(fd sock_in, level const[IPPROTO_IP], optname const[IP_MSFILTER], optval ptr[in, ip_msfilter], optlen len[optval])
+getsockopt$ip_mtu(fd sock_in, level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_mtu(fd sock_in, level const[IPPROTO_IP], optname const[IP_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval])
+getsockopt$ip_opts(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_opts(fd sock_in, level const[IPPROTO_IP], optname flags[sockopt_opt_ip_opts], optval buffer[in], optlen len[optval])
+getsockopt$ip_pktinfo(fd sock_in, level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[out, in_pktinfo], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_pktinfo(fd sock_in, level const[IPPROTO_IP], optname const[IP_PKTINFO], optval ptr[in, in_pktinfo], optlen len[optval])
+getsockopt$ip_ipsec(fd sock_in, level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[out, xfrm_filer], optlen ptr[inout, len[optval, int32]])
+setsockopt$ip_ipsec(fd sock_in, level const[IPPROTO_IP], optname const[IP_IPSEC_POLICY], optval ptr[in, xfrm_filer], optlen len[optval])
+
+sockopt_opt_ip_mreq = IP_ADD_MEMBERSHIP, IP_DROP_MEMBERSHIP, IP_MULTICAST_IF
+sockopt_opt_ip_mreqsrc = IP_ADD_SOURCE_MEMBERSHIP, IP_BLOCK_SOURCE, IP_DROP_SOURCE_MEMBERSHIP, IP_UNBLOCK_SOURCE
+sockopt_opt_ip_opts = IP_OPTIONS, IP_PKTOPTIONS
+ip_msfilter_mode = MCAST_INCLUDE, MCAST_EXCLUDE
+ip_mtu_discover = IP_PMTUDISC_DONT, IP_PMTUDISC_WANT, IP_PMTUDISC_DO, IP_PMTUDISC_PROBE, IP_PMTUDISC_INTERFACE, IP_PMTUDISC_OMIT
+
ip_mreq {
multi in_addr
addr in_addr
@@ -202,6 +251,18 @@ xfrm_in_addr [
in6 in6_addr
]
+# Specific IPv6 options
+
+getsockopt$ipv6_mreq(fd sock_in6, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[out, ipv6_mreq], optlen ptr[inout, len[optval, int32]])
+setsockopt$ipv6_mreq(fd sock_in6, level const[IPPROTO_IPV6], optname flags[sockopt_opt_ipv6_mreq], optval ptr[in, ipv6_mreq], optlen len[optval])
+getsockopt$ipv6_mtu(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]])
+setsockopt$ipv6_mtu(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval])
+getsockopt$ipv6_opts(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$ipv6_opts(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_2292PKTOPTIONS], optval buffer[in], optlen len[optval])
+
+sockopt_opt_ipv6_int = IPV6_ADDRFORM, IPV6_MTU, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_RECVPKTINFO, IPV6_RECVERR, IPV6_ROUTER_ALERT, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IPV6_RTHDR, IPV6_AUTHHDR, IPV6_DSTOPTS, IPV6_HOPOPTS, IPV6_FLOWINFO, IPV6_HOPLIMIT, IPV6_CHECKSUM, IPV6_2292PKTINFO, IPV6_2292HOPOPTS, IPV6_2292DSTOPTS, IPV6_2292RTHDR, IPV6_2292HOPLIMIT
+sockopt_opt_ipv6_mreq = IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP, IPV6_JOIN_ANYCAST, IPV6_LEAVE_ANYCAST
+
ipv6_mreq {
multi in6_addr
ifindex int32
diff --git a/sys/socket_inet_amd64.const b/sys/socket_inet_amd64.const
index e94a6be44..1f1bc8f70 100644
--- a/sys/socket_inet_amd64.const
+++ b/sys/socket_inet_amd64.const
@@ -1,7 +1,9 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
-IPPROTO_ICMP = 1
+IP6T_SO_GET_REVISION_MATCH = 68
+IP6T_SO_GET_REVISION_TARGET = 69
+IP6T_SO_ORIGINAL_DST = 80
IPPROTO_IP = 0
IPPROTO_IPV6 = 41
IPV6_2292DSTOPTS = 4
@@ -11,27 +13,50 @@ IPV6_2292PKTINFO = 2
IPV6_2292PKTOPTIONS = 6
IPV6_2292RTHDR = 5
IPV6_ADDRFORM = 1
+IPV6_ADDR_PREFERENCES = 72
IPV6_ADD_MEMBERSHIP = 20
IPV6_AUTHHDR = 10
+IPV6_AUTOFLOWLABEL = 70
IPV6_CHECKSUM = 7
+IPV6_DONTFRAG = 62
IPV6_DROP_MEMBERSHIP = 21
IPV6_DSTOPTS = 59
IPV6_FLOWINFO = 11
+IPV6_FLOWINFO_SEND = 33
+IPV6_FLOWLABEL_MGR = 32
+IPV6_HDRINCL = 36
IPV6_HOPLIMIT = 52
IPV6_HOPOPTS = 54
+IPV6_IPSEC_POLICY = 34
IPV6_JOIN_ANYCAST = 27
IPV6_LEAVE_ANYCAST = 28
+IPV6_MINHOPCOUNT = 73
IPV6_MTU = 24
IPV6_MTU_DISCOVER = 23
IPV6_MULTICAST_HOPS = 18
IPV6_MULTICAST_IF = 17
IPV6_MULTICAST_LOOP = 19
+IPV6_NEXTHOP = 9
+IPV6_PATHMTU = 61
+IPV6_PKTINFO = 50
+IPV6_RECVDSTOPTS = 58
IPV6_RECVERR = 25
+IPV6_RECVHOPLIMIT = 51
+IPV6_RECVHOPOPTS = 53
+IPV6_RECVORIGDSTADDR = 74
+IPV6_RECVPATHMTU = 60
IPV6_RECVPKTINFO = 49
+IPV6_RECVRTHDR = 56
+IPV6_RECVTCLASS = 66
IPV6_ROUTER_ALERT = 22
IPV6_RTHDR = 57
+IPV6_RTHDRDSTOPTS = 55
+IPV6_TCLASS = 67
+IPV6_TRANSPARENT = 75
IPV6_UNICAST_HOPS = 16
+IPV6_UNICAST_IF = 76
IPV6_V6ONLY = 26
+IPV6_XFRM_POLICY = 35
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
IP_BIND_ADDRESS_NO_PORT = 24
@@ -72,40 +97,26 @@ IP_TOS = 1
IP_TRANSPARENT = 19
IP_TTL = 2
IP_UNBLOCK_SOURCE = 37
+IP_UNICAST_IF = 50
+IP_XFRM_POLICY = 17
+MCAST_BLOCK_SOURCE = 43
MCAST_EXCLUDE = 0
MCAST_INCLUDE = 1
-SOL_AAL = 265
-SOL_ALG = 279
-SOL_ATALK = 258
-SOL_ATM = 264
-SOL_AX25 = 257
-SOL_BLUETOOTH = 274
-SOL_CAIF = 278
-SOL_DCCP = 269
-SOL_DECNET = 261
-SOL_ICMPV6 = 58
-SOL_IP = 0
-SOL_IPV6 = 41
-SOL_IPX = 256
-SOL_IRDA = 266
-SOL_IUCV = 277
-SOL_KCM = 281
-SOL_LLC = 268
-SOL_NETBEUI = 267
-SOL_NETLINK = 270
-SOL_NETROM = 259
-SOL_NFC = 280
-SOL_PACKET = 263
-SOL_PNPIPE = 275
-SOL_PPPOL2TP = 273
-SOL_RAW = 255
-SOL_RDS = 276
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCTP = 132
-SOL_TCP = 6
-SOL_TIPC = 271
-SOL_UDP = 17
-SOL_UDPLITE = 136
+MCAST_JOIN_GROUP = 42
+MCAST_JOIN_SOURCE_GROUP = 46
+MCAST_LEAVE_GROUP = 45
+MCAST_LEAVE_SOURCE_GROUP = 47
+MCAST_MSFILTER = 48
+MCAST_UNBLOCK_SOURCE = 44
+__NR_accept = 43
+__NR_accept4 = 288
+__NR_bind = 49
+__NR_connect = 42
+__NR_getpeername = 52
+__NR_getsockname = 51
__NR_getsockopt = 55
+__NR_recvfrom = 45
+__NR_sendto = 44
__NR_setsockopt = 54
+__NR_socket = 41
+__NR_socketpair = 53
diff --git a/sys/socket_inet_arm64.const b/sys/socket_inet_arm64.const
index af41e04e1..4981542ea 100644
--- a/sys/socket_inet_arm64.const
+++ b/sys/socket_inet_arm64.const
@@ -1,7 +1,9 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
-IPPROTO_ICMP = 1
+IP6T_SO_GET_REVISION_MATCH = 68
+IP6T_SO_GET_REVISION_TARGET = 69
+IP6T_SO_ORIGINAL_DST = 80
IPPROTO_IP = 0
IPPROTO_IPV6 = 41
IPV6_2292DSTOPTS = 4
@@ -11,27 +13,50 @@ IPV6_2292PKTINFO = 2
IPV6_2292PKTOPTIONS = 6
IPV6_2292RTHDR = 5
IPV6_ADDRFORM = 1
+IPV6_ADDR_PREFERENCES = 72
IPV6_ADD_MEMBERSHIP = 20
IPV6_AUTHHDR = 10
+IPV6_AUTOFLOWLABEL = 70
IPV6_CHECKSUM = 7
+IPV6_DONTFRAG = 62
IPV6_DROP_MEMBERSHIP = 21
IPV6_DSTOPTS = 59
IPV6_FLOWINFO = 11
+IPV6_FLOWINFO_SEND = 33
+IPV6_FLOWLABEL_MGR = 32
+IPV6_HDRINCL = 36
IPV6_HOPLIMIT = 52
IPV6_HOPOPTS = 54
+IPV6_IPSEC_POLICY = 34
IPV6_JOIN_ANYCAST = 27
IPV6_LEAVE_ANYCAST = 28
+IPV6_MINHOPCOUNT = 73
IPV6_MTU = 24
IPV6_MTU_DISCOVER = 23
IPV6_MULTICAST_HOPS = 18
IPV6_MULTICAST_IF = 17
IPV6_MULTICAST_LOOP = 19
+IPV6_NEXTHOP = 9
+IPV6_PATHMTU = 61
+IPV6_PKTINFO = 50
+IPV6_RECVDSTOPTS = 58
IPV6_RECVERR = 25
+IPV6_RECVHOPLIMIT = 51
+IPV6_RECVHOPOPTS = 53
+IPV6_RECVORIGDSTADDR = 74
+IPV6_RECVPATHMTU = 60
IPV6_RECVPKTINFO = 49
+IPV6_RECVRTHDR = 56
+IPV6_RECVTCLASS = 66
IPV6_ROUTER_ALERT = 22
IPV6_RTHDR = 57
+IPV6_RTHDRDSTOPTS = 55
+IPV6_TCLASS = 67
+IPV6_TRANSPARENT = 75
IPV6_UNICAST_HOPS = 16
+IPV6_UNICAST_IF = 76
IPV6_V6ONLY = 26
+IPV6_XFRM_POLICY = 35
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
IP_BIND_ADDRESS_NO_PORT = 24
@@ -72,40 +97,26 @@ IP_TOS = 1
IP_TRANSPARENT = 19
IP_TTL = 2
IP_UNBLOCK_SOURCE = 37
+IP_UNICAST_IF = 50
+IP_XFRM_POLICY = 17
+MCAST_BLOCK_SOURCE = 43
MCAST_EXCLUDE = 0
MCAST_INCLUDE = 1
-SOL_AAL = 265
-SOL_ALG = 279
-SOL_ATALK = 258
-SOL_ATM = 264
-SOL_AX25 = 257
-SOL_BLUETOOTH = 274
-SOL_CAIF = 278
-SOL_DCCP = 269
-SOL_DECNET = 261
-SOL_ICMPV6 = 58
-SOL_IP = 0
-SOL_IPV6 = 41
-SOL_IPX = 256
-SOL_IRDA = 266
-SOL_IUCV = 277
-SOL_KCM = 281
-SOL_LLC = 268
-SOL_NETBEUI = 267
-SOL_NETLINK = 270
-SOL_NETROM = 259
-SOL_NFC = 280
-SOL_PACKET = 263
-SOL_PNPIPE = 275
-SOL_PPPOL2TP = 273
-SOL_RAW = 255
-SOL_RDS = 276
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCTP = 132
-SOL_TCP = 6
-SOL_TIPC = 271
-SOL_UDP = 17
-SOL_UDPLITE = 136
+MCAST_JOIN_GROUP = 42
+MCAST_JOIN_SOURCE_GROUP = 46
+MCAST_LEAVE_GROUP = 45
+MCAST_LEAVE_SOURCE_GROUP = 47
+MCAST_MSFILTER = 48
+MCAST_UNBLOCK_SOURCE = 44
+__NR_accept = 202
+__NR_accept4 = 242
+__NR_bind = 200
+__NR_connect = 203
+__NR_getpeername = 205
+__NR_getsockname = 204
__NR_getsockopt = 209
+__NR_recvfrom = 207
+__NR_sendto = 206
__NR_setsockopt = 208
+__NR_socket = 198
+__NR_socketpair = 199
diff --git a/sys/socket_inet_icmp.txt b/sys/socket_inet_icmp.txt
index 0dd4036cf..c7b41ede3 100644
--- a/sys/socket_inet_icmp.txt
+++ b/sys/socket_inet_icmp.txt
@@ -6,42 +6,33 @@
include <linux/icmp.h>
include <linux/icmpv6.h>
-resource sock_icmp[sock]
+resource sock_icmp[sock_in]
socket$icmp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[IPPROTO_ICMP]) sock_icmp
socket$icmp_raw(domain const[AF_INET], type const[SOCK_RAW], proto const[IPPROTO_ICMP]) sock_icmp
socketpair$icmp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[IPPROTO_ICMP], fds ptr[out, icmp_pair])
socketpair$icmp_raw(domain const[AF_INET], type const[SOCK_RAW], proto const[IPPROTO_ICMP], fds ptr[out, icmp_pair])
-accept$icmp(fd sock_icmp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]]) sock_icmp
-accept4$icmp(fd sock_icmp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_icmp
-bind$icmp(fd sock_icmp, addr ptr[in, sockaddr_in], addrlen len[addr])
-connect$icmp(fd sock_icmp, addr ptr[in, sockaddr_in], addrlen len[addr])
-sendto$icmp(fd sock_icmp, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-recvfrom$icmp(fd sock_icmp, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-getsockname$icmp(fd sock_icmp, addr ptr[out, sockaddr_in], addrlen ptr[inout, len[addr, int32]])
-getpeername$icmp(fd sock_icmp, peer ptr[out, sockaddr_in], peerlen ptr[inout, len[peer, int32]])
icmp_pair {
f0 sock_icmp
f1 sock_icmp
}
-resource sock_icmp6[sock]
+resource sock_icmp6[sock_in6]
socket$icmp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[IPPROTO_ICMPV6]) sock_icmp6
socket$icmp6_raw(domain const[AF_INET6], type const[SOCK_RAW], proto const[IPPROTO_ICMPV6]) sock_icmp6
socketpair$icmp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[IPPROTO_ICMPV6], fds ptr[out, icmp6_pair])
socketpair$icmp6_raw(domain const[AF_INET6], type const[SOCK_RAW], proto const[IPPROTO_ICMPV6], fds ptr[out, icmp6_pair])
-accept$icmp6(fd sock_icmp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]]) sock_icmp6
-accept4$icmp6(fd sock_icmp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_icmp6
-bind$icmp6(fd sock_icmp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-connect$icmp6(fd sock_icmp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-sendto$icmp6(fd sock_icmp6, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-recvfrom$icmp6(fd sock_icmp6, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-getsockname$icmp6(fd sock_icmp6, addr ptr[out, sockaddr_in6], addrlen ptr[inout, len[addr, int32]])
-getpeername$icmp6(fd sock_icmp6, peer ptr[out, sockaddr_in6], peerlen ptr[inout, len[peer, int32]])
icmp6_pair {
f0 sock_icmp6
f1 sock_icmp6
}
+
+icmp_option_types_buf = ICMP_FILTER
+
+getsockopt$tcp_buf(fd sock_icmp, level const[IPPROTO_ICMP], optname flags[icmp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp_buf(fd sock_icmp, level const[IPPROTO_ICMP], optname flags[icmp_option_types_buf], optval buffer[in], optlen len[optval])
+getsockopt$tcp6_buf(fd sock_icmp6, level const[IPPROTO_ICMP], optname flags[icmp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp6_buf(fd sock_icmp6, level const[IPPROTO_ICMP], optname flags[icmp_option_types_buf], optval buffer[in], optlen len[optval])
diff --git a/sys/socket_inet_icmp_amd64.const b/sys/socket_inet_icmp_amd64.const
index d02f17183..aab7d3bfc 100644
--- a/sys/socket_inet_icmp_amd64.const
+++ b/sys/socket_inet_icmp_amd64.const
@@ -1,17 +1,12 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
+ICMP_FILTER = 1
IPPROTO_ICMP = 1
IPPROTO_ICMPV6 = 58
SOCK_DGRAM = 2
SOCK_RAW = 3
-__NR_accept = 43
-__NR_accept4 = 288
-__NR_bind = 49
-__NR_connect = 42
-__NR_getpeername = 52
-__NR_getsockname = 51
-__NR_recvfrom = 45
-__NR_sendto = 44
+__NR_getsockopt = 55
+__NR_setsockopt = 54
__NR_socket = 41
__NR_socketpair = 53
diff --git a/sys/socket_inet_icmp_arm64.const b/sys/socket_inet_icmp_arm64.const
index 487ef6903..e17aeec39 100644
--- a/sys/socket_inet_icmp_arm64.const
+++ b/sys/socket_inet_icmp_arm64.const
@@ -1,17 +1,12 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
+ICMP_FILTER = 1
IPPROTO_ICMP = 1
IPPROTO_ICMPV6 = 58
SOCK_DGRAM = 2
SOCK_RAW = 3
-__NR_accept = 202
-__NR_accept4 = 242
-__NR_bind = 200
-__NR_connect = 203
-__NR_getpeername = 205
-__NR_getsockname = 204
-__NR_recvfrom = 207
-__NR_sendto = 206
+__NR_getsockopt = 209
+__NR_setsockopt = 208
__NR_socket = 198
__NR_socketpair = 199
diff --git a/sys/socket_inet_icmp_ppc64le.const b/sys/socket_inet_icmp_ppc64le.const
index 3715ed6e1..5ee5a18c6 100644
--- a/sys/socket_inet_icmp_ppc64le.const
+++ b/sys/socket_inet_icmp_ppc64le.const
@@ -1,17 +1,12 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
+ICMP_FILTER = 1
IPPROTO_ICMP = 1
IPPROTO_ICMPV6 = 58
SOCK_DGRAM = 2
SOCK_RAW = 3
-__NR_accept = 330
-__NR_accept4 = 344
-__NR_bind = 327
-__NR_connect = 328
-__NR_getpeername = 332
-__NR_getsockname = 331
-__NR_recvfrom = 337
-__NR_sendto = 335
+__NR_getsockopt = 340
+__NR_setsockopt = 339
__NR_socket = 326
__NR_socketpair = 333
diff --git a/sys/socket_inet_ppc64le.const b/sys/socket_inet_ppc64le.const
index 5a3f556d5..1e7594d5e 100644
--- a/sys/socket_inet_ppc64le.const
+++ b/sys/socket_inet_ppc64le.const
@@ -1,7 +1,9 @@
# AUTOGENERATED FILE
AF_INET = 2
AF_INET6 = 10
-IPPROTO_ICMP = 1
+IP6T_SO_GET_REVISION_MATCH = 68
+IP6T_SO_GET_REVISION_TARGET = 69
+IP6T_SO_ORIGINAL_DST = 80
IPPROTO_IP = 0
IPPROTO_IPV6 = 41
IPV6_2292DSTOPTS = 4
@@ -11,27 +13,50 @@ IPV6_2292PKTINFO = 2
IPV6_2292PKTOPTIONS = 6
IPV6_2292RTHDR = 5
IPV6_ADDRFORM = 1
+IPV6_ADDR_PREFERENCES = 72
IPV6_ADD_MEMBERSHIP = 20
IPV6_AUTHHDR = 10
+IPV6_AUTOFLOWLABEL = 70
IPV6_CHECKSUM = 7
+IPV6_DONTFRAG = 62
IPV6_DROP_MEMBERSHIP = 21
IPV6_DSTOPTS = 59
IPV6_FLOWINFO = 11
+IPV6_FLOWINFO_SEND = 33
+IPV6_FLOWLABEL_MGR = 32
+IPV6_HDRINCL = 36
IPV6_HOPLIMIT = 52
IPV6_HOPOPTS = 54
+IPV6_IPSEC_POLICY = 34
IPV6_JOIN_ANYCAST = 27
IPV6_LEAVE_ANYCAST = 28
+IPV6_MINHOPCOUNT = 73
IPV6_MTU = 24
IPV6_MTU_DISCOVER = 23
IPV6_MULTICAST_HOPS = 18
IPV6_MULTICAST_IF = 17
IPV6_MULTICAST_LOOP = 19
+IPV6_NEXTHOP = 9
+IPV6_PATHMTU = 61
+IPV6_PKTINFO = 50
+IPV6_RECVDSTOPTS = 58
IPV6_RECVERR = 25
+IPV6_RECVHOPLIMIT = 51
+IPV6_RECVHOPOPTS = 53
+IPV6_RECVORIGDSTADDR = 74
+IPV6_RECVPATHMTU = 60
IPV6_RECVPKTINFO = 49
+IPV6_RECVRTHDR = 56
+IPV6_RECVTCLASS = 66
IPV6_ROUTER_ALERT = 22
IPV6_RTHDR = 57
+IPV6_RTHDRDSTOPTS = 55
+IPV6_TCLASS = 67
+IPV6_TRANSPARENT = 75
IPV6_UNICAST_HOPS = 16
+IPV6_UNICAST_IF = 76
IPV6_V6ONLY = 26
+IPV6_XFRM_POLICY = 35
IP_ADD_MEMBERSHIP = 35
IP_ADD_SOURCE_MEMBERSHIP = 39
IP_BIND_ADDRESS_NO_PORT = 24
@@ -72,40 +97,26 @@ IP_TOS = 1
IP_TRANSPARENT = 19
IP_TTL = 2
IP_UNBLOCK_SOURCE = 37
+IP_UNICAST_IF = 50
+IP_XFRM_POLICY = 17
+MCAST_BLOCK_SOURCE = 43
MCAST_EXCLUDE = 0
MCAST_INCLUDE = 1
-SOL_AAL = 265
-SOL_ALG = 279
-SOL_ATALK = 258
-SOL_ATM = 264
-SOL_AX25 = 257
-SOL_BLUETOOTH = 274
-SOL_CAIF = 278
-SOL_DCCP = 269
-SOL_DECNET = 261
-SOL_ICMPV6 = 58
-SOL_IP = 0
-SOL_IPV6 = 41
-SOL_IPX = 256
-SOL_IRDA = 266
-SOL_IUCV = 277
-SOL_KCM = 281
-SOL_LLC = 268
-SOL_NETBEUI = 267
-SOL_NETLINK = 270
-SOL_NETROM = 259
-SOL_NFC = 280
-SOL_PACKET = 263
-SOL_PNPIPE = 275
-SOL_PPPOL2TP = 273
-SOL_RAW = 255
-SOL_RDS = 276
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCTP = 132
-SOL_TCP = 6
-SOL_TIPC = 271
-SOL_UDP = 17
-SOL_UDPLITE = 136
+MCAST_JOIN_GROUP = 42
+MCAST_JOIN_SOURCE_GROUP = 46
+MCAST_LEAVE_GROUP = 45
+MCAST_LEAVE_SOURCE_GROUP = 47
+MCAST_MSFILTER = 48
+MCAST_UNBLOCK_SOURCE = 44
+__NR_accept = 330
+__NR_accept4 = 344
+__NR_bind = 327
+__NR_connect = 328
+__NR_getpeername = 332
+__NR_getsockname = 331
__NR_getsockopt = 340
+__NR_recvfrom = 337
+__NR_sendto = 335
__NR_setsockopt = 339
+__NR_socket = 326
+__NR_socketpair = 333
diff --git a/sys/socket_inet_tcp.txt b/sys/socket_inet_tcp.txt
index c4d8fdae9..e3cb449ae 100644
--- a/sys/socket_inet_tcp.txt
+++ b/sys/socket_inet_tcp.txt
@@ -5,45 +5,38 @@
include <linux/tcp.h>
-resource sock_tcp[sock]
-
-socket$tcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[0]) sock_tcp
-socketpair$tcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[0], fds ptr[out, tcp_pair])
-accept$tcp(fd sock_tcp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]]) sock_tcp
-accept4$tcp(fd sock_tcp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_tcp
-bind$tcp(fd sock_tcp, addr ptr[in, sockaddr_in], addrlen len[addr])
-connect$tcp(fd sock_tcp, addr ptr[in, sockaddr_in], addrlen len[addr])
-sendto$tcp(fd sock_tcp, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-recvfrom$tcp(fd sock_tcp, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-getsockname$tcp(fd sock_tcp, addr ptr[out, sockaddr_in], addrlen ptr[inout, len[addr, int32]])
-getpeername$tcp(fd sock_tcp, peer ptr[out, sockaddr_in], peerlen ptr[inout, len[peer, int32]])
+resource sock_tcp[sock_in]
tcp_pair {
f0 sock_tcp
f1 sock_tcp
}
-resource sock_tcp6[sock]
+socket$tcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[0]) sock_tcp
+socketpair$tcp(domain const[AF_INET], type const[SOCK_STREAM], proto const[0], fds ptr[out, tcp_pair])
-socket$tcp6(domain const[AF_INET6], type const[SOCK_STREAM], proto const[0]) sock_tcp6
-socketpair$tcp6(domain const[AF_INET6], type const[SOCK_STREAM], proto const[0], fds ptr[out, tcp6_pair])
-accept$tcp6(fd sock_tcp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]]) sock_tcp6
-accept4$tcp6(fd sock_tcp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_tcp6
-bind$tcp6(fd sock_tcp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-connect$tcp6(fd sock_tcp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-sendto$tcp6(fd sock_tcp6, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-recvfrom$tcp6(fd sock_tcp6, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-getsockname$tcp6(fd sock_tcp6, addr ptr[out, sockaddr_in6], addrlen ptr[inout, len[addr, int32]])
-getpeername$tcp6(fd sock_tcp6, peer ptr[out, sockaddr_in6], peerlen ptr[inout, len[peer, int32]])
+resource sock_tcp6[sock_in6]
tcp6_pair {
f0 sock_tcp6
f1 sock_tcp6
}
-sockopt_opt_tcp_int = TCP_CORK, TCP_DEFER_ACCEPT, TCP_KEEPCNT, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_LINGER2, TCP_MAXSEG, TCP_NODELAY, TCP_QUICKACK, TCP_SYNCNT, TCP_WINDOW_CLAMP
+socket$tcp6(domain const[AF_INET6], type const[SOCK_STREAM], proto const[0]) sock_tcp6
+socketpair$tcp6(domain const[AF_INET6], type const[SOCK_STREAM], proto const[0], fds ptr[out, tcp6_pair])
+
+# Generic TCP socket options
+
+tcp_option_types_int = TCP_NODELAY, TCP_MAXSEG, TCP_CORK, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT, TCP_SYNCNT, TCP_LINGER2, TCP_DEFER_ACCEPT, TCP_WINDOW_CLAMP, TCP_QUICKACK, TCP_THIN_LINEAR_TIMEOUTS, TCP_THIN_DUPACK, TCP_USER_TIMEOUT, TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_FASTOPEN, TCP_TIMESTAMP, TCP_NOTSENT_LOWAT, TCP_SAVE_SYN
+
+tcp_option_types_buf = TCP_INFO, TCP_CONGESTION, TCP_MD5SIG, TCP_REPAIR_OPTIONS, TCP_CC_INFO, TCP_SAVED_SYN, TCP_REPAIR_WINDOW
+
+getsockopt$tcp_int(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp_int(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp_option_types_int], optval ptr[in, int32], optlen len[optval])
+getsockopt$tcp6_int(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp6_int(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_int], optval ptr[in, int32], optlen len[optval])
-getsockopt$tcp_int(fd sock, level const[IPPROTO_TCP], optname flags[sockopt_opt_tcp_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
-setsockopt$tcp_int(fd sock, level const[IPPROTO_TCP], optname flags[sockopt_opt_tcp_int], optval ptr[in, int32], optlen len[optval])
-getsockopt$tcp_buf(fd sock, level const[IPPROTO_TCP], optname const[TCP_INFO], optval buffer[out], optlen ptr[inout, len[optval, int32]])
-setsockopt$tcp_buf(fd sock, level const[IPPROTO_TCP], optname const[TCP_INFO], optval buffer[in], optlen len[optval])
+getsockopt$tcp_buf(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp_buf(fd sock_tcp, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[in], optlen len[optval])
+getsockopt$tcp6_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
+setsockopt$tcp6_buf(fd sock_tcp6, level const[IPPROTO_TCP], optname flags[tcp_option_types_buf], optval buffer[in], optlen len[optval])
diff --git a/sys/socket_inet_tcp_amd64.const b/sys/socket_inet_tcp_amd64.const
index 9d58825e7..c91e484b6 100644
--- a/sys/socket_inet_tcp_amd64.const
+++ b/sys/socket_inet_tcp_amd64.const
@@ -3,27 +3,35 @@ AF_INET = 2
AF_INET6 = 10
IPPROTO_TCP = 6
SOCK_STREAM = 1
+TCP_CC_INFO = 26
+TCP_CONGESTION = 13
TCP_CORK = 3
TCP_DEFER_ACCEPT = 9
+TCP_FASTOPEN = 23
TCP_INFO = 11
TCP_KEEPCNT = 6
TCP_KEEPIDLE = 4
TCP_KEEPINTVL = 5
TCP_LINGER2 = 8
TCP_MAXSEG = 2
+TCP_MD5SIG = 14
TCP_NODELAY = 1
+TCP_NOTSENT_LOWAT = 25
+TCP_QUEUE_SEQ = 21
TCP_QUICKACK = 12
+TCP_REPAIR = 19
+TCP_REPAIR_OPTIONS = 22
+TCP_REPAIR_QUEUE = 20
+TCP_REPAIR_WINDOW = 29
+TCP_SAVED_SYN = 28
+TCP_SAVE_SYN = 27
TCP_SYNCNT = 7
+TCP_THIN_DUPACK = 17
+TCP_THIN_LINEAR_TIMEOUTS = 16
+TCP_TIMESTAMP = 24
+TCP_USER_TIMEOUT = 18
TCP_WINDOW_CLAMP = 10
-__NR_accept = 43
-__NR_accept4 = 288
-__NR_bind = 49
-__NR_connect = 42
-__NR_getpeername = 52
-__NR_getsockname = 51
__NR_getsockopt = 55
-__NR_recvfrom = 45
-__NR_sendto = 44
__NR_setsockopt = 54
__NR_socket = 41
__NR_socketpair = 53
diff --git a/sys/socket_inet_tcp_arm64.const b/sys/socket_inet_tcp_arm64.const
index f43649f49..90b7b1a89 100644
--- a/sys/socket_inet_tcp_arm64.const
+++ b/sys/socket_inet_tcp_arm64.const
@@ -3,27 +3,35 @@ AF_INET = 2
AF_INET6 = 10
IPPROTO_TCP = 6
SOCK_STREAM = 1
+TCP_CC_INFO = 26
+TCP_CONGESTION = 13
TCP_CORK = 3
TCP_DEFER_ACCEPT = 9
+TCP_FASTOPEN = 23
TCP_INFO = 11
TCP_KEEPCNT = 6
TCP_KEEPIDLE = 4
TCP_KEEPINTVL = 5
TCP_LINGER2 = 8
TCP_MAXSEG = 2
+TCP_MD5SIG = 14
TCP_NODELAY = 1
+TCP_NOTSENT_LOWAT = 25
+TCP_QUEUE_SEQ = 21
TCP_QUICKACK = 12
+TCP_REPAIR = 19
+TCP_REPAIR_OPTIONS = 22
+TCP_REPAIR_QUEUE = 20
+TCP_REPAIR_WINDOW = 29
+TCP_SAVED_SYN = 28
+TCP_SAVE_SYN = 27
TCP_SYNCNT = 7
+TCP_THIN_DUPACK = 17
+TCP_THIN_LINEAR_TIMEOUTS = 16
+TCP_TIMESTAMP = 24
+TCP_USER_TIMEOUT = 18
TCP_WINDOW_CLAMP = 10
-__NR_accept = 202
-__NR_accept4 = 242
-__NR_bind = 200
-__NR_connect = 203
-__NR_getpeername = 205
-__NR_getsockname = 204
__NR_getsockopt = 209
-__NR_recvfrom = 207
-__NR_sendto = 206
__NR_setsockopt = 208
__NR_socket = 198
__NR_socketpair = 199
diff --git a/sys/socket_inet_tcp_ppc64le.const b/sys/socket_inet_tcp_ppc64le.const
index c82d7ed3d..e4187f236 100644
--- a/sys/socket_inet_tcp_ppc64le.const
+++ b/sys/socket_inet_tcp_ppc64le.const
@@ -3,27 +3,35 @@ AF_INET = 2
AF_INET6 = 10
IPPROTO_TCP = 6
SOCK_STREAM = 1
+TCP_CC_INFO = 26
+TCP_CONGESTION = 13
TCP_CORK = 3
TCP_DEFER_ACCEPT = 9
+TCP_FASTOPEN = 23
TCP_INFO = 11
TCP_KEEPCNT = 6
TCP_KEEPIDLE = 4
TCP_KEEPINTVL = 5
TCP_LINGER2 = 8
TCP_MAXSEG = 2
+TCP_MD5SIG = 14
TCP_NODELAY = 1
+TCP_NOTSENT_LOWAT = 25
+TCP_QUEUE_SEQ = 21
TCP_QUICKACK = 12
+TCP_REPAIR = 19
+TCP_REPAIR_OPTIONS = 22
+TCP_REPAIR_QUEUE = 20
+TCP_REPAIR_WINDOW = 29
+TCP_SAVED_SYN = 28
+TCP_SAVE_SYN = 27
TCP_SYNCNT = 7
+TCP_THIN_DUPACK = 17
+TCP_THIN_LINEAR_TIMEOUTS = 16
+TCP_TIMESTAMP = 24
+TCP_USER_TIMEOUT = 18
TCP_WINDOW_CLAMP = 10
-__NR_accept = 330
-__NR_accept4 = 344
-__NR_bind = 327
-__NR_connect = 328
-__NR_getpeername = 332
-__NR_getsockname = 331
__NR_getsockopt = 340
-__NR_recvfrom = 337
-__NR_sendto = 335
__NR_setsockopt = 339
__NR_socket = 326
__NR_socketpair = 333
diff --git a/sys/socket_inet_udp.txt b/sys/socket_inet_udp.txt
index 20151fdd2..3447a300e 100644
--- a/sys/socket_inet_udp.txt
+++ b/sys/socket_inet_udp.txt
@@ -5,41 +5,40 @@
include <linux/udp.h>
-resource sock_udp[sock]
-
-socket$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0]) sock_udp
-socketpair$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp_pair])
-accept$udp(fd sock_udp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]]) sock_udp
-accept4$udp(fd sock_udp, peer ptr[out, sockaddr_in, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_udp
-bind$udp(fd sock_udp, addr ptr[in, sockaddr_in], addrlen len[addr])
-connect$udp(fd sock_udp, addr ptr[in, sockaddr_in], addrlen len[addr])
-sendto$udp(fd sock_udp, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-recvfrom$udp(fd sock_udp, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in, opt], addrlen len[addr])
-getsockname$udp(fd sock_udp, addr ptr[out, sockaddr_in], addrlen ptr[inout, len[addr, int32]])
-getpeername$udp(fd sock_udp, peer ptr[out, sockaddr_in], peerlen ptr[inout, len[peer, int32]])
+resource sock_udp[sock_in]
udp_pair {
f0 sock_udp
f1 sock_udp
}
-resource sock_udp6[sock]
+socket$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0]) sock_udp
+socketpair$udp(domain const[AF_INET], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp_pair])
-socket$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0]) sock_udp6
-socketpair$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp6_pair])
-accept$udp6(fd sock_udp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]]) sock_udp6
-accept4$udp6(fd sock_udp6, peer ptr[out, sockaddr_in6, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_udp6
-bind$udp6(fd sock_udp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-connect$udp6(fd sock_udp6, addr ptr[in, sockaddr_in6], addrlen len[addr])
-sendto$udp6(fd sock_udp6, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-recvfrom$udp6(fd sock_udp6, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_in6, opt], addrlen len[addr])
-getsockname$udp6(fd sock_udp6, addr ptr[out, sockaddr_in6], addrlen ptr[inout, len[addr, int32]])
-getpeername$udp6(fd sock_udp6, peer ptr[out, sockaddr_in6], peerlen ptr[inout, len[peer, int32]])
+resource sock_udp6[sock_in6]
udp6_pair {
f0 sock_udp6
f1 sock_udp6
}
-getsockopt$udp_int(fd sock, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
-setsockopt$udp_int(fd sock, level const[IPPROTO_UDP], optname const[UDP_CORK], optval ptr[in, int32], optlen len[optval])
+socket$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0]) sock_udp6
+socketpair$udp6(domain const[AF_INET6], type const[SOCK_DGRAM], proto const[0], fds ptr[out, udp6_pair])
+
+# Generic UDP socket options
+
+udp_option_types_int = UDP_CORK, UDP_ENCAP, UDP_NO_CHECK6_TX, UDP_NO_CHECK6_RX
+
+getsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$udp_int(fd sock_udp, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[in, int32], optlen len[optval])
+getsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[out, int32], optlen ptr[inout, len[optval, int32]])
+setsockopt$udp6_int(fd sock_udp6, level const[IPPROTO_UDP], optname flags[udp_option_types_int], optval ptr[in, int32], optlen len[optval])
+
+# Specific UDP socket options
+
+udp_encap_option_values = UDP_ENCAP_ESPINUDP_NON_IKE, UDP_ENCAP_ESPINUDP, UDP_ENCAP_L2TPINUDP, UDP_ENCAP_GTP0, UDP_ENCAP_GTP1U
+
+setsockopt$udp_encap(fd sock_udp, level const[IPPROTO_UDP], optname const[UDP_ENCAP], optval ptr[in, flags[udp_encap_option_values, int32]], optlen len[optval])
+setsockopt$udp6_encap(fd sock_udp6, level const[IPPROTO_UDP], optname const[UDP_ENCAP], optval ptr[in, flags[udp_encap_option_values, int32]], optlen len[optval])
+
+# TODO: UDPLITE_SEND_CSCOV, UDPLITE_RECV_CSCOV
diff --git a/sys/socket_inet_udp_amd64.const b/sys/socket_inet_udp_amd64.const
index 2357f1ca3..4fcd3dfa7 100644
--- a/sys/socket_inet_udp_amd64.const
+++ b/sys/socket_inet_udp_amd64.const
@@ -4,15 +4,15 @@ AF_INET6 = 10
IPPROTO_UDP = 17
SOCK_DGRAM = 2
UDP_CORK = 1
-__NR_accept = 43
-__NR_accept4 = 288
-__NR_bind = 49
-__NR_connect = 42
-__NR_getpeername = 52
-__NR_getsockname = 51
+UDP_ENCAP = 100
+UDP_ENCAP_ESPINUDP = 2
+UDP_ENCAP_ESPINUDP_NON_IKE = 1
+UDP_ENCAP_GTP0 = 4
+UDP_ENCAP_GTP1U = 5
+UDP_ENCAP_L2TPINUDP = 3
+UDP_NO_CHECK6_RX = 102
+UDP_NO_CHECK6_TX = 101
__NR_getsockopt = 55
-__NR_recvfrom = 45
-__NR_sendto = 44
__NR_setsockopt = 54
__NR_socket = 41
__NR_socketpair = 53
diff --git a/sys/socket_inet_udp_arm64.const b/sys/socket_inet_udp_arm64.const
index bea5eb77c..111726315 100644
--- a/sys/socket_inet_udp_arm64.const
+++ b/sys/socket_inet_udp_arm64.const
@@ -4,15 +4,15 @@ AF_INET6 = 10
IPPROTO_UDP = 17
SOCK_DGRAM = 2
UDP_CORK = 1
-__NR_accept = 202
-__NR_accept4 = 242
-__NR_bind = 200
-__NR_connect = 203
-__NR_getpeername = 205
-__NR_getsockname = 204
+UDP_ENCAP = 100
+UDP_ENCAP_ESPINUDP = 2
+UDP_ENCAP_ESPINUDP_NON_IKE = 1
+UDP_ENCAP_GTP0 = 4
+UDP_ENCAP_GTP1U = 5
+UDP_ENCAP_L2TPINUDP = 3
+UDP_NO_CHECK6_RX = 102
+UDP_NO_CHECK6_TX = 101
__NR_getsockopt = 209
-__NR_recvfrom = 207
-__NR_sendto = 206
__NR_setsockopt = 208
__NR_socket = 198
__NR_socketpair = 199
diff --git a/sys/socket_inet_udp_ppc64le.const b/sys/socket_inet_udp_ppc64le.const
index 2cccf51da..d30a309f5 100644
--- a/sys/socket_inet_udp_ppc64le.const
+++ b/sys/socket_inet_udp_ppc64le.const
@@ -4,15 +4,15 @@ AF_INET6 = 10
IPPROTO_UDP = 17
SOCK_DGRAM = 2
UDP_CORK = 1
-__NR_accept = 330
-__NR_accept4 = 344
-__NR_bind = 327
-__NR_connect = 328
-__NR_getpeername = 332
-__NR_getsockname = 331
+UDP_ENCAP = 100
+UDP_ENCAP_ESPINUDP = 2
+UDP_ENCAP_ESPINUDP_NON_IKE = 1
+UDP_ENCAP_GTP0 = 4
+UDP_ENCAP_GTP1U = 5
+UDP_ENCAP_L2TPINUDP = 3
+UDP_NO_CHECK6_RX = 102
+UDP_NO_CHECK6_TX = 101
__NR_getsockopt = 340
-__NR_recvfrom = 337
-__NR_sendto = 335
__NR_setsockopt = 339
__NR_socket = 326
__NR_socketpair = 333
diff --git a/sys/socket_ppc64le.const b/sys/socket_ppc64le.const
index f563a1729..ac4d19c90 100644
--- a/sys/socket_ppc64le.const
+++ b/sys/socket_ppc64le.const
@@ -9,6 +9,7 @@ AF_NETLINK = 16
AF_PACKET = 17
AF_UNIX = 1
AF_X25 = 9
+IPPROTO_ICMP = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -49,7 +50,40 @@ SOF_TIMESTAMPING_TX_ACK = 512
SOF_TIMESTAMPING_TX_HARDWARE = 1
SOF_TIMESTAMPING_TX_SCHED = 256
SOF_TIMESTAMPING_TX_SOFTWARE = 2
+SOL_AAL = 265
+SOL_ALG = 279
+SOL_ATALK = 258
+SOL_ATM = 264
+SOL_AX25 = 257
+SOL_BLUETOOTH = 274
+SOL_CAIF = 278
+SOL_DCCP = 269
+SOL_DECNET = 261
+SOL_ICMPV6 = 58
+SOL_IP = 0
+SOL_IPV6 = 41
+SOL_IPX = 256
+SOL_IRDA = 266
+SOL_IUCV = 277
+SOL_KCM = 281
+SOL_LLC = 268
+SOL_NETBEUI = 267
+SOL_NETLINK = 270
+SOL_NETROM = 259
+SOL_NFC = 280
+SOL_PACKET = 263
+SOL_PNPIPE = 275
+SOL_PPPOL2TP = 273
+SOL_RAW = 255
+SOL_RDS = 276
+SOL_ROSE = 260
+SOL_RXRPC = 272
+SOL_SCTP = 132
SOL_SOCKET = 1
+SOL_TCP = 6
+SOL_TIPC = 271
+SOL_UDP = 17
+SOL_UDPLITE = 136
SO_ACCEPTCONN = 30
SO_ATTACH_BPF = 50
SO_ATTACH_FILTER = 26