aboutsummaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorAndrey Konovalov <andreyknvl@google.com>2017-02-09 14:28:02 +0100
committerAndrey Konovalov <andreyknvl@google.com>2017-02-09 14:28:10 +0100
commit0ec1144963cffce720dc873b6311730267969fd7 (patch)
treefcccf3d9682a25c0debb5303f31f3aeb96fab94c /sys
parent8722e7a33ec75c19437127a5926b82cc48ff9ec3 (diff)
sys: split socket.txt into multiple files based on socket type
This just moves syscall descriptions and fixes up includes without any semantic changes.
Diffstat (limited to 'sys')
-rw-r--r--sys/socket.txt688
-rw-r--r--sys/socket_alg.txt74
-rw-r--r--sys/socket_alg_amd64.const39
-rw-r--r--sys/socket_alg_arm64.const39
-rw-r--r--sys/socket_alg_ppc64le.const39
-rw-r--r--sys/socket_amd64.const247
-rw-r--r--sys/socket_arm64.const247
-rw-r--r--sys/socket_bluetooth.txt264
-rw-r--r--sys/socket_bluetooth_amd64.const90
-rw-r--r--sys/socket_bluetooth_arm64.const90
-rw-r--r--sys/socket_bluetooth_ppc64le.const90
-rw-r--r--sys/socket_inet.txt208
-rw-r--r--sys/socket_inet_amd64.const111
-rw-r--r--sys/socket_inet_arm64.const111
-rw-r--r--sys/socket_inet_icmp.txt47
-rw-r--r--sys/socket_inet_icmp_amd64.const17
-rw-r--r--sys/socket_inet_icmp_arm64.const17
-rw-r--r--sys/socket_inet_icmp_ppc64le.const17
-rw-r--r--sys/socket_inet_ppc64le.const111
-rwxr-xr-xsys/socket_inet_sctp.txt (renamed from sys/sctp.txt)4
-rw-r--r--sys/socket_inet_sctp_amd64.const82
-rw-r--r--sys/socket_inet_sctp_arm64.const82
-rw-r--r--sys/socket_inet_sctp_ppc64le.const82
-rw-r--r--sys/socket_inet_tcp.txt49
-rw-r--r--sys/socket_inet_tcp_amd64.const29
-rw-r--r--sys/socket_inet_tcp_arm64.const29
-rw-r--r--sys/socket_inet_tcp_ppc64le.const29
-rw-r--r--sys/socket_inet_udp.txt45
-rw-r--r--sys/socket_inet_udp_amd64.const18
-rw-r--r--sys/socket_inet_udp_arm64.const18
-rw-r--r--sys/socket_inet_udp_ppc64le.const18
-rwxr-xr-xsys/socket_kcm.txt (renamed from sys/kcm.txt)0
-rw-r--r--sys/socket_kcm_amd64.const16
-rw-r--r--sys/socket_kcm_arm64.const16
-rw-r--r--sys/socket_kcm_ppc64le.const16
-rw-r--r--sys/socket_key.txt13
-rw-r--r--sys/socket_key_amd64.const1
-rw-r--r--sys/socket_key_arm64.const1
-rw-r--r--sys/socket_key_ppc64le.const1
-rw-r--r--sys/socket_netlink.txt (renamed from sys/netlink.txt)4
-rw-r--r--sys/socket_netlink_amd64.const59
-rw-r--r--sys/socket_netlink_arm64.const59
-rw-r--r--sys/socket_netlink_ppc64le.const59
-rwxr-xr-xsys/socket_netrom.txt (renamed from sys/netrom.txt)0
-rw-r--r--sys/socket_netrom_amd64.const27
-rw-r--r--sys/socket_netrom_arm64.const27
-rw-r--r--sys/socket_netrom_ppc64le.const27
-rw-r--r--sys/socket_nfc.txt58
-rw-r--r--sys/socket_nfc_amd64.const28
-rw-r--r--sys/socket_nfc_arm64.const28
-rw-r--r--sys/socket_nfc_ppc64le.const28
-rw-r--r--sys/socket_ppc64le.const247
-rw-r--r--sys/socket_unix.txt78
-rw-r--r--sys/socket_unix_amd64.const21
-rw-r--r--sys/socket_unix_arm64.const21
-rw-r--r--sys/socket_unix_ppc64le.const21
-rw-r--r--sys/sys.txt134
-rw-r--r--sys/test_amd64.const1
-rw-r--r--sys/test_arm64.const1
-rw-r--r--sys/test_ppc64le.const1
-rw-r--r--sys/vnet_amd64.const5
-rw-r--r--sys/vnet_arm64.const5
-rw-r--r--sys/vnet_ppc64le.const5
63 files changed, 2462 insertions, 1577 deletions
diff --git a/sys/socket.txt b/sys/socket.txt
index daada3bfd..eb4d6c956 100644
--- a/sys/socket.txt
+++ b/sys/socket.txt
@@ -1,22 +1,10 @@
-# Copyright 2015 syzkaller project authors. All rights reserved.
+# 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.
+include <linux/socket.h>
+include <linux/net.h>
include <linux/net_tstamp.h>
-include <linux/isdn/capilli.h>
-include <linux/crypto.h>
-include <net/bluetooth/bluetooth.h>
-include <net/bluetooth/hci_sock.h>
-include <net/bluetooth/l2cap.h>
-include <net/bluetooth/cmtp/cmtp.h>
-include <net/bluetooth/bnep/bnep.h>
-include <net/bluetooth/hidp/hidp.h>
-include <net/bluetooth/sco.h>
-include <net/bluetooth/rfcomm.h>
include <asm/ioctls.h>
-include <uapi/linux/tcp.h>
-include <uapi/linux/nfc.h>
-include <uapi/linux/udp.h>
-include <uapi/linux/if_alg.h>
resource sock[fd]
@@ -59,42 +47,6 @@ getsockopt$SO_TIMESTAMPING(fd sock, level const[SOL_SOCKET], optname const[SO_TI
setsockopt$SO_ATTACH_FILTER(fd sock, level const[SOL_SOCKET], optname const[SO_ATTACH_FILTER], optval ptr[in, sock_fprog], optlen len[optval])
getsockopt$sock_buf(fd sock, level const[SOL_SOCKET], optname flags[sockopt_opt_sock_buf], optval buffer[out], optlen ptr[inout, len[optval, int32]])
-# IPPROTO_TCP
-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$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])
-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])
-
-# IPPROTO_IPV6
-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])
-
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
accept_flags = SOCK_NONBLOCK, SOCK_CLOEXEC
@@ -106,17 +58,6 @@ 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
-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
-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_buf = IP_MSFILTER
-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
-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
sockaddr [
un sockaddr_un
@@ -134,36 +75,6 @@ sockaddr [
# TODO: other kinds of sockaddrs
] [varlen]
-sockaddr_in {
- family const[AF_INET, int16]
- port proc[int16be, 20000, 4]
- addr in_addr
- pad array[const[0, int8], 8]
-}
-
-sockaddr_storage_in {
- addr sockaddr_in
- pad array[const[0, int64], 15]
-}
-
-sockaddr_in6 {
- family const[AF_INET6, int16]
- port proc[int16be, 20000, 4]
- flow int32
- addr in6_addr
- scope int32
-}
-
-sockaddr_storage_in6 {
- addr sockaddr_in6
- pad array[const[0, int64], 12]
-}
-
-sockaddr_storage [
- in sockaddr_storage_in
- in6 sockaddr_storage_in6
-]
-
send_msghdr {
addr ptr[in, sockaddr, opt]
addrlen len[addr, int32]
@@ -190,596 +101,3 @@ cmsghdr {
type int32
data array[int8]
} [align_ptr]
-
-
-
-
-# AF_INET: TCP support
-
-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]])
-
-tcp_pair {
- f0 sock_tcp
- f1 sock_tcp
-}
-
-# AF_INET: UDP support
-
-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]])
-
-udp_pair {
- f0 sock_udp
- f1 sock_udp
-}
-
-# AF_INET: ICMP support
-
-resource sock_icmp[sock]
-
-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
-}
-
-
-
-
-# AF_INET6: TCP support
-
-resource sock_tcp6[sock]
-
-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]])
-
-tcp6_pair {
- f0 sock_tcp6
- f1 sock_tcp6
-}
-
-# AF_INET6: UDP support
-
-resource sock_udp6[sock]
-
-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]])
-
-udp6_pair {
- f0 sock_udp6
- f1 sock_udp6
-}
-
-# AF_INET6: ICMP support
-
-resource sock_icmp6[sock]
-
-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
-}
-
-
-
-
-# AF_UNIX support.
-
-resource sock_unix[sock]
-
-socket$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0]) sock_unix
-socketpair$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0], fds ptr[out, unix_pair])
-bind$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
-connect$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
-accept$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]]) sock_unix
-accept4$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_unix
-
-sendto$unix(fd sock_unix, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
-sendmsg$unix(fd sock_unix, msg ptr[in, msghdr_un], f flags[send_flags])
-sendmmsg$unix(fd sock_unix, mmsg ptr[in, array[msghdr_un]], vlen len[mmsg], f flags[send_flags])
-recvfrom$unix(fd sock_unix, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
-getsockname$unix(fd sock_unix, addr ptr[out, sockaddr_un], addrlen ptr[inout, len[addr, int32]])
-getpeername$unix(fd sock_unix, peer ptr[out, sockaddr_un], peerlen ptr[inout, len[peer, int32]])
-
-unix_socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET
-unix_socket_family = AF_UNIX, AF_UNSPEC
-
-unix_pair {
- fd0 sock_unix
- fd1 sock_unix
-}
-
-sockaddr_un [
- file sockaddr_un_file
- abs sockaddr_un_abstract
-] [varlen]
-
-sockaddr_un_file {
- family flags[unix_socket_family, int16]
- path filename
-} [packed]
-
-sockaddr_un_abstract {
- family flags[unix_socket_family, int16]
- ind const[0, int8]
- id proc[int32, 20000, 4]
-}
-
-msghdr_un {
- addr ptr[in, sockaddr_un]
- addrlen len[addr, int32]
- vec ptr[in, array[iovec_in]]
- vlen len[vec, intptr]
- ctrl ptr[in, array[cmsghdr_un], opt]
- ctrllen len[ctrl, intptr]
- f flags[send_flags, int32]
-}
-
-cmsghdr_un [
- rights cmsghdr_un_rights
- cred cmsghdr_un_cred
-] [varlen]
-
-cmsghdr_un_rights {
- len len[parent, intptr]
- level const[SOL_SOCKET, int32]
- type const[SCM_RIGHTS, int32]
- fds array[fd]
-} [align_ptr]
-
-cmsghdr_un_cred {
- len len[parent, intptr]
- level const[SOL_SOCKET, int32]
- type const[SCM_CREDENTIALS, int32]
- pid pid
- uid uid
- gid gid
-} [align_ptr]
-
-
-
-
-# AF_ALG support.
-
-resource sock_alg[sock]
-resource sock_algconn[sock]
-
-socket$alg(domain const[AF_ALG], type const[SOCK_SEQPACKET], proto const[0]) sock_alg
-bind$alg(fd sock_alg, addr ptr[in, sockaddr_alg], addrlen len[addr])
-setsockopt$ALG_SET_KEY(fd sock_alg, level const[SOL_ALG], opt const[ALG_SET_KEY], key buffer[in], keylen len[key])
-setsockopt$ALG_SET_AEAD_AUTHSIZE(fd sock_alg, level const[SOL_ALG], opt const[ALG_SET_AEAD_AUTHSIZE], val const[0], size intptr)
-accept$alg(fd sock_alg, peer ptr[out, sockaddr_alg, opt], peerlen ptr[inout, len[peer, int32]]) sock_algconn
-sendmsg$alg(fd sock_algconn, msg ptr[in, msghdr_alg], f flags[send_flags])
-sendmmsg$alg(fd sock_algconn, mmsg ptr[in, array[msghdr_alg]], vlen len[mmsg], f flags[send_flags])
-
-sockaddr_alg {
- family const[AF_ALG, int16]
- type string[salg_type, 14]
- feat flags[af_alg_type, int32]
- mask flags[af_alg_type, int32]
- name string[salg_name, 64]
-}
-
-msghdr_alg {
- addr const[0, intptr]
- addrlen const[0, int32]
- vec ptr[in, array[iovec_in]]
- vlen len[vec, intptr]
- ctrl ptr[in, array[cmsghdr_alg], opt]
- ctrllen bytesize[ctrl, intptr]
- f flags[send_flags, int32]
-}
-
-cmsghdr_alg [
- iv cmsghdr_alg_iv
- op cmsghdr_alg_op
- assoc cmsghdr_alg_assoc
-] [varlen]
-
-cmsghdr_alg_iv {
- len len[parent, intptr]
- level const[SOL_ALG, int32]
- type const[ALG_SET_IV, int32]
- ivlen len[iv, int32]
- iv array[int8]
-} [align_ptr]
-
-cmsghdr_alg_op {
- len len[parent, intptr]
- level const[SOL_ALG, int32]
- type const[ALG_SET_OP, int32]
- op int32
-} [align_ptr]
-
-cmsghdr_alg_assoc {
- len len[parent, intptr]
- level const[SOL_ALG, int32]
- type const[ALG_SET_AEAD_ASSOCLEN, int32]
- assoc int32
-} [align_ptr]
-
-af_alg_type = CRYPTO_ALG_TYPE_MASK, CRYPTO_ALG_TYPE_CIPHER, CRYPTO_ALG_TYPE_COMPRESS, CRYPTO_ALG_TYPE_AEAD, CRYPTO_ALG_TYPE_BLKCIPHER, CRYPTO_ALG_TYPE_ABLKCIPHER, CRYPTO_ALG_TYPE_GIVCIPHER, CRYPTO_ALG_TYPE_DIGEST, CRYPTO_ALG_TYPE_HASH, CRYPTO_ALG_TYPE_SHASH, CRYPTO_ALG_TYPE_AHASH, CRYPTO_ALG_TYPE_RNG, CRYPTO_ALG_TYPE_AKCIPHER, CRYPTO_ALG_TYPE_PCOMPRESS, CRYPTO_ALG_LARVAL, CRYPTO_ALG_DEAD, CRYPTO_ALG_DYING, CRYPTO_ALG_ASYNC, CRYPTO_ALG_NEED_FALLBACK, CRYPTO_ALG_GENIV, CRYPTO_ALG_TESTED, CRYPTO_ALG_INSTANCE, CRYPTO_ALG_KERN_DRIVER_ONLY, CRYPTO_ALG_INTERNAL
-
-salg_type = "aead", "hash", "rng", "skcipher"
-salg_name = "cmac(aes)", "ecb(aes)", "cbc(aes)", "hmac(sha1)", "pcbc(fcrypt)", "ghash", "jitterentropy_rng", "stdrng", "stdrng", "stdrng", "stdrng", "hmac(sha256)", "stdrng", "stdrng", "stdrng", "stdrng", "stdrng", "842", "lz4hc", "lz4", "lzo", "crct10dif", "crc32", "crc32c", "michael_mic", "zlib", "deflate", "poly1305", "chacha20", "salsa20", "seed", "anubis", "khazad", "xeta", "xtea", "tea", "ecb(arc4)", "arc4", "cast6", "cast5", "camellia", "aes", "tnepres", "serpent", "twofish", "blowfish", "fcrypt", "des3_ede", "des", "tgr128", "tgr160", "tgr192", "wp256", "wp384", "wp512", "sha384", "sha512", "sha224", "sha256", "sha1", "rmd320", "rmd256", "rmd160", "rmd128", "md5", "md4", "digest_null", "compress_null", "ecb(cipher_null)", "cipher_null", "rsa", "poly1305", "xts(serpent)", "lrw(serpent)", "ctr(serpent)", "cbc(serpent)", "__ecb-serpent-sse2", "ecb(serpent)", "__xts-serpent-sse2", "__lrw-serpent-sse2", "__ctr-serpent-sse2", "__cbc-serpent-sse2", "__ecb-serpent-sse2", "salsa20", "xts(twofish)", "lrw(twofish)", "ctr(twofish)", "cbc(twofish)", "ecb(twofish)", "twofish", "ctr(blowfish)", "cbc(blowfish)", "ecb(blowfish)", "blowfish", "xts(camellia)", "lrw(camellia)", "ctr(camellia)", "cbc(camellia)", "ecb(camellia)", "camellia", "ctr(des3_ede)", "cbc(des3_ede)", "ecb(des3_ede)", "des3_ede", "aes"
-
-
-
-
-# AF_KEY support.
-
-resource sock_key[sock]
-
-# See net/key/af_key.c, requires root.
-# socket$key(domain const[AF_KEY], type const[SOCK_RAW], proto const[PF_KEY_V2]) sock_key
-
-
-
-
-# AF_NFC support.
-
-resource sock_nfc_llcp[sock]
-
-socket$nfc_llcp(domain const[AF_NFC], type flags[nfc_llcp_type], proto const[NFC_SOCKPROTO_LLCP]) sock_nfc_llcp
-bind$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr])
-connect$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr])
-accept$nfc_llcp(fd sock_nfc_llcp, peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]]) sock_nfc_llcp
-setsockopt$NFC_LLCP_RW(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32], arglen len[arg])
-setsockopt$NFC_LLCP_MIUX(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32], arglen len[arg])
-getsockopt$nfc_llcp(fd sock_nfc_llcp, level const[SOL_NFC], opt flags[nfc_llcp_opts], arg buffer[out], arglen len[arg])
-sendmsg$nfc_llcp(fd sock_nfc_llcp, msg ptr[in, nfc_llcp_send_msghdr], f flags[send_flags])
-sendmmsg$nfc_llcp(fd sock_nfc_llcp, mmsg ptr[in, array[nfc_llcp_send_msghdr]], vlen len[mmsg], f flags[send_flags])
-
-resource sock_nfc_raw[sock]
-
-socket$nfc_raw(domain const[AF_NFC], type flags[nfc_raw_type], proto const[NFC_SOCKPROTO_RAW]) sock_nfc_raw
-connect$nfc_raw(fd sock_nfc_raw, addr ptr[in, sockaddr_nfc], addrlen len[addr])
-
-nfc_llcp_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
-nfc_raw_type = SOCK_STREAM, SOCK_RAW
-nfc_proto = NFC_PROTO_JEWEL, NFC_PROTO_MIFARE, NFC_PROTO_FELICA, NFC_PROTO_ISO14443, NFC_PROTO_NFC_DEP, NFC_PROTO_ISO14443_B, NFC_PROTO_ISO15693
-nfc_llcp_opts = NFC_LLCP_RW, NFC_LLCP_MIUX, NFC_LLCP_REMOTE_MIU, NFC_LLCP_REMOTE_LTO, NFC_LLCP_REMOTE_RW
-
-sockaddr_nfc_llcp {
- family const[AF_NFC, int16]
- devidx int32
- target int32
- proto flags[nfc_proto, int32]
- dsap int8
- ssap int8
- serv array[int8, 63]
- servlen intptr
-}
-
-sockaddr_nfc {
- family const[AF_NFC, int16]
- dev int32
- targ int32
- proto flags[nfc_proto, int32]
-}
-
-nfc_llcp_send_msghdr {
- addr ptr[in, sockaddr_nfc_llcp]
- addrlen len[addr, int32]
- vec ptr[in, array[iovec_in]]
- vlen len[vec, intptr]
- ctrl ptr[in, cmsghdr]
- ctrllen len[ctrl, intptr]
- f flags[send_flags, int32]
-}
-
-
-
-
-# AF_BLUETOOTH support.
-
-resource sock_bt[sock]
-resource sock_bt_hci[sock_bt]
-
-socket$bt_hci(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HCI]) sock_bt_hci
-bind$bt_hci(fd sock_bt_hci, addr ptr[in, sockaddr_hci], addrlen len[addr])
-ioctl$bt_hci(fd sock_bt_hci, cmd flags[bt_hci_ioctl], arg buffer[inout])
-setsockopt$HCI_DATA_DIR(fd sock_bt_hci, level const[0], opt const[HCI_DATA_DIR], arg ptr[in, int32], arglen len[arg])
-setsockopt$HCI_TIME_STAMP(fd sock_bt_hci, level const[0], opt const[HCI_TIME_STAMP], arg ptr[in, int32], arglen len[arg])
-setsockopt$HCI_FILTER(fd sock_bt_hci, level const[0], opt const[HCI_FILTER], arg ptr[in, hci_ufilter], arglen len[arg])
-getsockopt$bt_hci(fd sock, level const[0], opt flags[bt_hci_sockopt], arg buffer[out], arglen ptr[inout, len[arg, int32]])
-
-resource sock_bt_sco[sock_bt]
-
-socket$bt_sco(fam const[AF_BLUETOOTH], type const[SOCK_SEQPACKET], proto const[BTPROTO_SCO]) sock_bt_sco
-bind$bt_sco(fd sock_bt_sco, addr ptr[in, sockaddr_sco], addrlen len[addr])
-connect$bt_sco(fd sock_bt_sco, addr ptr[in, sockaddr_sco], addrlen len[addr])
-getsockopt$SCO_OPTIONS(fd sock_bt_sco, level const[SOL_SCO], opt const[SCO_OPTIONS], arg buffer[out], arglen ptr[inout, len[arg, int32]])
-getsockopt$SCO_CONNINFO(fd sock_bt_sco, level const[SOL_SCO], opt const[SCO_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]])
-
-resource sock_bt_l2cap[sock_bt]
-
-socket$bt_l2cap(fam const[AF_BLUETOOTH], type flags[bt_l2cap_type], proto const[BTPROTO_L2CAP]) sock_bt_l2cap
-bind$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr])
-connect$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr])
-setsockopt$L2CAP_OPTIONS(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[in, l2cap_options], arglen len[arg])
-getsockopt$L2CAP_OPTIONS(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[out, l2cap_options], arglen ptr[inout, len[arg, int32]])
-setsockopt$L2CAP_LM(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg])
-getsockopt$L2CAP_LM(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
-setsockopt$L2CAP_CONNINFO(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[in, l2cap_conninfo], arglen len[arg])
-getsockopt$L2CAP_CONNINFO(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[out, l2cap_conninfo], arglen ptr[inout, len[arg, int32]])
-
-resource sock_bt_rfcomm[sock_bt]
-
-socket$bt_rfcomm(fam const[AF_BLUETOOTH], type flags[bt_rfcomm_type], proto const[BTPROTO_RFCOMM]) sock_bt_rfcomm
-bind$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rc], addrlen len[addr])
-connect$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rc], addrlen len[addr])
-setsockopt$RFCOMM_LM(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg])
-getsockopt$RFCOMM_LM(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
-getsockopt$RFCOMM_CONNINFO(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]])
-
-resource sock_bt_hidp[sock_bt]
-
-socket$bt_hidp(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HIDP]) sock_bt_hidp
-ioctl$HIDPCONNADD(fd sock_bt_hidp, cmd const[HIDPCONNADD], arg ptr[in, hidp_connadd_req])
-ioctl$HIDPCONNDEL(fd sock_bt_hidp, cmd const[HIDPCONNDEL], arg ptr[in, hidp_conndel_req])
-ioctl$HIDPGETCONNLIST(fd sock_bt_hidp, cmd const[HIDPGETCONNLIST], arg ptr[in, hidp_connlist_req])
-ioctl$HIDPGETCONNINFO(fd sock_bt_hidp, cmd const[HIDPGETCONNINFO], arg ptr[in, hidp_conninfo])
-
-resource sock_bt_cmtp[sock_bt]
-
-socket$bt_cmtp(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_CMTP]) sock_bt_cmtp
-ioctl$CMTPCONNADD(fd sock_bt_cmtp, cmd const[CMTPCONNADD], arg ptr[in, cmtp_connadd_req])
-ioctl$CMTPCONNDEL(fd sock_bt_cmtp, cmd const[CMTPCONNDEL], arg ptr[in, cmtp_conndel_req])
-ioctl$CMTPGETCONNLIST(fd sock_bt_cmtp, cmd const[CMTPGETCONNLIST], arg ptr[in, cmtp_connlist_req])
-ioctl$CMTPGETCONNINFO(fd sock_bt_cmtp, cmd const[CMTPGETCONNINFO], arg ptr[in, cmtp_conninfo])
-
-resource sock_bt_bnep[sock_bt]
-
-socket$bt_bnep(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_BNEP]) sock_bt_bnep
-ioctl$BNEPCONNADD(fd sock_bt_bnep, cmd const[BNEPCONNADD], arg ptr[in, bnep_connadd_req])
-ioctl$BNEPCONNDEL(fd sock_bt_bnep, cmd const[BNEPCONNDEL], arg ptr[in, bnep_conndel_req])
-ioctl$BNEPGETCONNLIST(fd sock_bt_bnep, cmd const[BNEPGETCONNLIST], arg ptr[in, bnep_connlist_req])
-ioctl$BNEPGETCONNINFO(fd sock_bt_bnep, cmd const[BNEPGETCONNINFO], arg ptr[in, bnep_conninfo])
-ioctl$BNEPGETSUPPFEAT(fd sock_bt_bnep, cmd const[BNEPGETSUPPFEAT], arg ptr[in, int32])
-
-ioctl$bt(fd sock_bt, cmd flags[bt_ioctl], arg buffer[inout])
-setsockopt$BT_SECURITY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[in, bt_security], arglen len[arg])
-getsockopt$BT_SECURITY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[out, bt_security], arglen len[arg])
-setsockopt$BT_DEFER_SETUP(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen len[arg])
-getsockopt$BT_DEFER_SETUP(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_VOICE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen len[arg])
-getsockopt$BT_VOICE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_FLUSHABLE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen len[arg])
-getsockopt$BT_FLUSHABLE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_POWER(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen len[arg])
-getsockopt$BT_POWER(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_CHANNEL_POLICY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen len[arg])
-getsockopt$BT_CHANNEL_POLICY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_SNDMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen len[arg])
-getsockopt$BT_SNDMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
-setsockopt$BT_RCVMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen len[arg])
-getsockopt$BT_RCVMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
-
-sockaddr_hci {
- fam const[AF_BLUETOOTH, int16]
- dev int16
- chan flags[bt_chi_chan, int16]
-}
-
-hci_inquiry_req {
- dev int16
- flags int16
- lap0 int8
- lap1 int8
- lap2 int8
- len int8
- rsp int8
-}
-
-hci_ufilter {
- type int32
- event0 int32
- event1 int32
- opcode int16
-}
-
-sockaddr_sco {
- fam const[AF_BLUETOOTH, int16]
- addr bdaddr
-}
-
-sockaddr_l2 {
- fam const[AF_BLUETOOTH, int16]
- psm int16
- addr bdaddr
- cid int16
- typ int8
-}
-
-bdaddr {
- addr0 int8
- addr1 int8
- addr2 int8
- addr3 int8
- addr4 int8
- addr5 int8
-}
-
-bt_security {
- lev int8
- keysize int8
-}
-
-l2cap_options {
- omtu int16
- imtu int16
- flushto int16
- mode int8
- fcs int8
- maxtx int8
- txwin int16
-}
-
-l2cap_conninfo {
- handle int16
- devcls0 int8
- devcls1 int8
- devcls2 int8
-}
-
-sockaddr_rc {
- fam const[AF_BLUETOOTH, int16]
- addr bdaddr
- chan int8
-}
-
-hidp_connadd_req {
- ctrlsk sock
- intrsk sock
- parser int16
- rdsize int16
- rddata buffer[in]
- country int8
- subclas int8
- vendor int16
- product int16
- version int16
- flags int32
- idleto int32
- name array[int8]
-}
-
-hidp_conndel_req {
- addr bdaddr
- flags int32
-}
-
-hidp_conninfo {
- addr bdaddr
- flags int32
- state int16
- vendor int16
- product int16
- ver int16
- name array[int8]
-}
-
-hidp_connlist_req {
- cnum len[ci, int32]
- ci ptr[out, array[hidp_conninfo]]
-}
-
-cmtp_connadd_req {
- sock sock
- flags int32
-}
-
-cmtp_conndel_req {
- addr bdaddr
- flags int32
-}
-
-cmtp_conninfo {
- addr bdaddr
- flags int32
- state int16
- num int32
-}
-
-cmtp_connlist_req {
- cnum len[ci, int32]
- ci ptr[out, array[cmtp_conninfo]]
-}
-
-bnep_connadd_req {
- sock sock
- flags int32
- role int16
- device array[int8]
-}
-
-bnep_conndel_req {
- flags int32
- dst array[int8, 6]
-}
-
-bnep_conninfo {
- flags int32
- role int16
- state int16
- dst array[int8, 6]
- device array[int8, 16]
-}
-
-bnep_connlist_req {
- cnum len[ci, int32]
- ci ptr[out, array[bnep_conninfo]]
-}
-
-bt_chi_chan = HCI_CHANNEL_RAW, HCI_CHANNEL_USER, HCI_CHANNEL_MONITOR, HCI_CHANNEL_CONTROL
-bt_hci_ioctl = HCIDEVUP, HCIDEVDOWN, HCIDEVRESET, HCIDEVRESTAT, HCIGETDEVLIST, HCIGETDEVINFO, HCIGETCONNLIST, HCIGETCONNINFO, HCIGETAUTHINFO, HCISETRAW, HCISETSCAN, HCISETAUTH, HCISETENCRYPT, HCISETPTYPE, HCISETLINKPOL, HCISETLINKMODE, HCISETACLMTU, HCISETSCOMTU, HCIBLOCKADDR, HCIUNBLOCKADDR, HCIINQUIRY
-bt_hci_sockopt = HCI_DATA_DIR, HCI_TIME_STAMP, HCI_FILTER
-bt_ioctl = TIOCOUTQ, TIOCINQ, SIOCGSTAMP, SIOCGSTAMPNS
-bt_l2cap_type = SOCK_SEQPACKET, SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
-bt_l2cap_lm = L2CAP_LM_MASTER, L2CAP_LM_AUTH, L2CAP_LM_ENCRYPT, L2CAP_LM_TRUSTED, L2CAP_LM_RELIABLE, L2CAP_LM_SECURE, L2CAP_LM_FIPS
-bt_rfcomm_type = SOCK_STREAM, SOCK_RAW
-
-# Removed in next-20160210 (commit 11049218)
-define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f
diff --git a/sys/socket_alg.txt b/sys/socket_alg.txt
new file mode 100644
index 000000000..36f88772f
--- /dev/null
+++ b/sys/socket_alg.txt
@@ -0,0 +1,74 @@
+# 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.
+
+# AF_ALG support.
+
+include <linux/socket.h>
+include <linux/net.h>
+include <linux/crypto.h>
+include <uapi/linux/if_alg.h>
+
+resource sock_alg[sock]
+resource sock_algconn[sock]
+
+socket$alg(domain const[AF_ALG], type const[SOCK_SEQPACKET], proto const[0]) sock_alg
+bind$alg(fd sock_alg, addr ptr[in, sockaddr_alg], addrlen len[addr])
+setsockopt$ALG_SET_KEY(fd sock_alg, level const[SOL_ALG], opt const[ALG_SET_KEY], key buffer[in], keylen len[key])
+setsockopt$ALG_SET_AEAD_AUTHSIZE(fd sock_alg, level const[SOL_ALG], opt const[ALG_SET_AEAD_AUTHSIZE], val const[0], size intptr)
+accept$alg(fd sock_alg, peer ptr[out, sockaddr_alg, opt], peerlen ptr[inout, len[peer, int32]]) sock_algconn
+sendmsg$alg(fd sock_algconn, msg ptr[in, msghdr_alg], f flags[send_flags])
+sendmmsg$alg(fd sock_algconn, mmsg ptr[in, array[msghdr_alg]], vlen len[mmsg], f flags[send_flags])
+
+sockaddr_alg {
+ family const[AF_ALG, int16]
+ type string[salg_type, 14]
+ feat flags[af_alg_type, int32]
+ mask flags[af_alg_type, int32]
+ name string[salg_name, 64]
+}
+
+msghdr_alg {
+ addr const[0, intptr]
+ addrlen const[0, int32]
+ vec ptr[in, array[iovec_in]]
+ vlen len[vec, intptr]
+ ctrl ptr[in, array[cmsghdr_alg], opt]
+ ctrllen bytesize[ctrl, intptr]
+ f flags[send_flags, int32]
+}
+
+cmsghdr_alg [
+ iv cmsghdr_alg_iv
+ op cmsghdr_alg_op
+ assoc cmsghdr_alg_assoc
+] [varlen]
+
+cmsghdr_alg_iv {
+ len len[parent, intptr]
+ level const[SOL_ALG, int32]
+ type const[ALG_SET_IV, int32]
+ ivlen len[iv, int32]
+ iv array[int8]
+} [align_ptr]
+
+cmsghdr_alg_op {
+ len len[parent, intptr]
+ level const[SOL_ALG, int32]
+ type const[ALG_SET_OP, int32]
+ op int32
+} [align_ptr]
+
+cmsghdr_alg_assoc {
+ len len[parent, intptr]
+ level const[SOL_ALG, int32]
+ type const[ALG_SET_AEAD_ASSOCLEN, int32]
+ assoc int32
+} [align_ptr]
+
+af_alg_type = CRYPTO_ALG_TYPE_MASK, CRYPTO_ALG_TYPE_CIPHER, CRYPTO_ALG_TYPE_COMPRESS, CRYPTO_ALG_TYPE_AEAD, CRYPTO_ALG_TYPE_BLKCIPHER, CRYPTO_ALG_TYPE_ABLKCIPHER, CRYPTO_ALG_TYPE_GIVCIPHER, CRYPTO_ALG_TYPE_DIGEST, CRYPTO_ALG_TYPE_HASH, CRYPTO_ALG_TYPE_SHASH, CRYPTO_ALG_TYPE_AHASH, CRYPTO_ALG_TYPE_RNG, CRYPTO_ALG_TYPE_AKCIPHER, CRYPTO_ALG_TYPE_PCOMPRESS, CRYPTO_ALG_LARVAL, CRYPTO_ALG_DEAD, CRYPTO_ALG_DYING, CRYPTO_ALG_ASYNC, CRYPTO_ALG_NEED_FALLBACK, CRYPTO_ALG_GENIV, CRYPTO_ALG_TESTED, CRYPTO_ALG_INSTANCE, CRYPTO_ALG_KERN_DRIVER_ONLY, CRYPTO_ALG_INTERNAL
+
+salg_type = "aead", "hash", "rng", "skcipher"
+salg_name = "cmac(aes)", "ecb(aes)", "cbc(aes)", "hmac(sha1)", "pcbc(fcrypt)", "ghash", "jitterentropy_rng", "stdrng", "stdrng", "stdrng", "stdrng", "hmac(sha256)", "stdrng", "stdrng", "stdrng", "stdrng", "stdrng", "842", "lz4hc", "lz4", "lzo", "crct10dif", "crc32", "crc32c", "michael_mic", "zlib", "deflate", "poly1305", "chacha20", "salsa20", "seed", "anubis", "khazad", "xeta", "xtea", "tea", "ecb(arc4)", "arc4", "cast6", "cast5", "camellia", "aes", "tnepres", "serpent", "twofish", "blowfish", "fcrypt", "des3_ede", "des", "tgr128", "tgr160", "tgr192", "wp256", "wp384", "wp512", "sha384", "sha512", "sha224", "sha256", "sha1", "rmd320", "rmd256", "rmd160", "rmd128", "md5", "md4", "digest_null", "compress_null", "ecb(cipher_null)", "cipher_null", "rsa", "poly1305", "xts(serpent)", "lrw(serpent)", "ctr(serpent)", "cbc(serpent)", "__ecb-serpent-sse2", "ecb(serpent)", "__xts-serpent-sse2", "__lrw-serpent-sse2", "__ctr-serpent-sse2", "__cbc-serpent-sse2", "__ecb-serpent-sse2", "salsa20", "xts(twofish)", "lrw(twofish)", "ctr(twofish)", "cbc(twofish)", "ecb(twofish)", "twofish", "ctr(blowfish)", "cbc(blowfish)", "ecb(blowfish)", "blowfish", "xts(camellia)", "lrw(camellia)", "ctr(camellia)", "cbc(camellia)", "ecb(camellia)", "camellia", "ctr(des3_ede)", "cbc(des3_ede)", "ecb(des3_ede)", "des3_ede", "aes"
+
+# Removed in next-20160210 (commit 11049218)
+define CRYPTO_ALG_TYPE_PCOMPRESS 0x0000000f
diff --git a/sys/socket_alg_amd64.const b/sys/socket_alg_amd64.const
new file mode 100644
index 000000000..8bdb46c24
--- /dev/null
+++ b/sys/socket_alg_amd64.const
@@ -0,0 +1,39 @@
+# AUTOGENERATED FILE
+AF_ALG = 38
+ALG_SET_AEAD_ASSOCLEN = 4
+ALG_SET_AEAD_AUTHSIZE = 5
+ALG_SET_IV = 2
+ALG_SET_KEY = 1
+ALG_SET_OP = 3
+CRYPTO_ALG_ASYNC = 128
+CRYPTO_ALG_DEAD = 32
+CRYPTO_ALG_DYING = 64
+CRYPTO_ALG_GENIV = 512
+CRYPTO_ALG_INSTANCE = 2048
+CRYPTO_ALG_INTERNAL = 8192
+CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
+CRYPTO_ALG_LARVAL = 16
+CRYPTO_ALG_NEED_FALLBACK = 256
+CRYPTO_ALG_TESTED = 1024
+CRYPTO_ALG_TYPE_ABLKCIPHER = 5
+CRYPTO_ALG_TYPE_AEAD = 3
+CRYPTO_ALG_TYPE_AHASH = 15
+CRYPTO_ALG_TYPE_AKCIPHER = 13
+CRYPTO_ALG_TYPE_BLKCIPHER = 4
+CRYPTO_ALG_TYPE_CIPHER = 1
+CRYPTO_ALG_TYPE_COMPRESS = 2
+CRYPTO_ALG_TYPE_DIGEST = 14
+CRYPTO_ALG_TYPE_GIVCIPHER = 6
+CRYPTO_ALG_TYPE_HASH = 14
+CRYPTO_ALG_TYPE_MASK = 15
+CRYPTO_ALG_TYPE_PCOMPRESS = 15
+CRYPTO_ALG_TYPE_RNG = 12
+CRYPTO_ALG_TYPE_SHASH = 14
+SOCK_SEQPACKET = 5
+SOL_ALG = 279
+__NR_accept = 43
+__NR_bind = 49
+__NR_sendmmsg = 307
+__NR_sendmsg = 46
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_alg_arm64.const b/sys/socket_alg_arm64.const
new file mode 100644
index 000000000..0da690d0a
--- /dev/null
+++ b/sys/socket_alg_arm64.const
@@ -0,0 +1,39 @@
+# AUTOGENERATED FILE
+AF_ALG = 38
+ALG_SET_AEAD_ASSOCLEN = 4
+ALG_SET_AEAD_AUTHSIZE = 5
+ALG_SET_IV = 2
+ALG_SET_KEY = 1
+ALG_SET_OP = 3
+CRYPTO_ALG_ASYNC = 128
+CRYPTO_ALG_DEAD = 32
+CRYPTO_ALG_DYING = 64
+CRYPTO_ALG_GENIV = 512
+CRYPTO_ALG_INSTANCE = 2048
+CRYPTO_ALG_INTERNAL = 8192
+CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
+CRYPTO_ALG_LARVAL = 16
+CRYPTO_ALG_NEED_FALLBACK = 256
+CRYPTO_ALG_TESTED = 1024
+CRYPTO_ALG_TYPE_ABLKCIPHER = 5
+CRYPTO_ALG_TYPE_AEAD = 3
+CRYPTO_ALG_TYPE_AHASH = 15
+CRYPTO_ALG_TYPE_AKCIPHER = 13
+CRYPTO_ALG_TYPE_BLKCIPHER = 4
+CRYPTO_ALG_TYPE_CIPHER = 1
+CRYPTO_ALG_TYPE_COMPRESS = 2
+CRYPTO_ALG_TYPE_DIGEST = 14
+CRYPTO_ALG_TYPE_GIVCIPHER = 6
+CRYPTO_ALG_TYPE_HASH = 14
+CRYPTO_ALG_TYPE_MASK = 15
+CRYPTO_ALG_TYPE_PCOMPRESS = 15
+CRYPTO_ALG_TYPE_RNG = 12
+CRYPTO_ALG_TYPE_SHASH = 14
+SOCK_SEQPACKET = 5
+SOL_ALG = 279
+__NR_accept = 202
+__NR_bind = 200
+__NR_sendmmsg = 269
+__NR_sendmsg = 211
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_alg_ppc64le.const b/sys/socket_alg_ppc64le.const
new file mode 100644
index 000000000..43eca7c92
--- /dev/null
+++ b/sys/socket_alg_ppc64le.const
@@ -0,0 +1,39 @@
+# AUTOGENERATED FILE
+AF_ALG = 38
+ALG_SET_AEAD_ASSOCLEN = 4
+ALG_SET_AEAD_AUTHSIZE = 5
+ALG_SET_IV = 2
+ALG_SET_KEY = 1
+ALG_SET_OP = 3
+CRYPTO_ALG_ASYNC = 128
+CRYPTO_ALG_DEAD = 32
+CRYPTO_ALG_DYING = 64
+CRYPTO_ALG_GENIV = 512
+CRYPTO_ALG_INSTANCE = 2048
+CRYPTO_ALG_INTERNAL = 8192
+CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
+CRYPTO_ALG_LARVAL = 16
+CRYPTO_ALG_NEED_FALLBACK = 256
+CRYPTO_ALG_TESTED = 1024
+CRYPTO_ALG_TYPE_ABLKCIPHER = 5
+CRYPTO_ALG_TYPE_AEAD = 3
+CRYPTO_ALG_TYPE_AHASH = 15
+CRYPTO_ALG_TYPE_AKCIPHER = 13
+CRYPTO_ALG_TYPE_BLKCIPHER = 4
+CRYPTO_ALG_TYPE_CIPHER = 1
+CRYPTO_ALG_TYPE_COMPRESS = 2
+CRYPTO_ALG_TYPE_DIGEST = 14
+CRYPTO_ALG_TYPE_GIVCIPHER = 6
+CRYPTO_ALG_TYPE_HASH = 14
+CRYPTO_ALG_TYPE_MASK = 15
+CRYPTO_ALG_TYPE_PCOMPRESS = 15
+CRYPTO_ALG_TYPE_RNG = 12
+CRYPTO_ALG_TYPE_SHASH = 14
+SOCK_SEQPACKET = 5
+SOL_ALG = 279
+__NR_accept = 330
+__NR_bind = 327
+__NR_sendmmsg = 349
+__NR_sendmsg = 341
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/socket_amd64.const b/sys/socket_amd64.const
index 6eae25fc5..fe4c4b0a9 100644
--- a/sys/socket_amd64.const
+++ b/sys/socket_amd64.const
@@ -1,188 +1,14 @@
# AUTOGENERATED FILE
-AF_ALG = 38
AF_APPLETALK = 5
AF_ATMPVC = 8
AF_AX25 = 3
-AF_BLUETOOTH = 31
AF_INET = 2
AF_INET6 = 10
AF_IPX = 4
AF_NETLINK = 16
-AF_NFC = 39
AF_PACKET = 17
AF_UNIX = 1
-AF_UNSPEC = 0
AF_X25 = 9
-ALG_SET_AEAD_ASSOCLEN = 4
-ALG_SET_AEAD_AUTHSIZE = 5
-ALG_SET_IV = 2
-ALG_SET_KEY = 1
-ALG_SET_OP = 3
-BNEPCONNADD = 1074021064
-BNEPCONNDEL = 1074021065
-BNEPGETCONNINFO = 2147762899
-BNEPGETCONNLIST = 2147762898
-BNEPGETSUPPFEAT = 2147762900
-BTPROTO_BNEP = 4
-BTPROTO_CMTP = 5
-BTPROTO_HCI = 1
-BTPROTO_HIDP = 6
-BTPROTO_L2CAP = 0
-BTPROTO_RFCOMM = 3
-BTPROTO_SCO = 2
-BT_CHANNEL_POLICY = 10
-BT_DEFER_SETUP = 7
-BT_FLUSHABLE = 8
-BT_POWER = 9
-BT_RCVMTU = 13
-BT_SECURITY = 4
-BT_SNDMTU = 12
-BT_VOICE = 11
-CMTPCONNADD = 1074021320
-CMTPCONNDEL = 1074021321
-CMTPGETCONNINFO = 2147763155
-CMTPGETCONNLIST = 2147763154
-CRYPTO_ALG_ASYNC = 128
-CRYPTO_ALG_DEAD = 32
-CRYPTO_ALG_DYING = 64
-CRYPTO_ALG_GENIV = 512
-CRYPTO_ALG_INSTANCE = 2048
-CRYPTO_ALG_INTERNAL = 8192
-CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
-CRYPTO_ALG_LARVAL = 16
-CRYPTO_ALG_NEED_FALLBACK = 256
-CRYPTO_ALG_TESTED = 1024
-CRYPTO_ALG_TYPE_ABLKCIPHER = 5
-CRYPTO_ALG_TYPE_AEAD = 3
-CRYPTO_ALG_TYPE_AHASH = 15
-CRYPTO_ALG_TYPE_AKCIPHER = 13
-CRYPTO_ALG_TYPE_BLKCIPHER = 4
-CRYPTO_ALG_TYPE_CIPHER = 1
-CRYPTO_ALG_TYPE_COMPRESS = 2
-CRYPTO_ALG_TYPE_DIGEST = 14
-CRYPTO_ALG_TYPE_GIVCIPHER = 6
-CRYPTO_ALG_TYPE_HASH = 14
-CRYPTO_ALG_TYPE_MASK = 15
-CRYPTO_ALG_TYPE_PCOMPRESS = 15
-CRYPTO_ALG_TYPE_RNG = 12
-CRYPTO_ALG_TYPE_SHASH = 14
-HCIBLOCKADDR = 1074022630
-HCIDEVDOWN = 1074022602
-HCIDEVRESET = 1074022603
-HCIDEVRESTAT = 1074022604
-HCIDEVUP = 1074022601
-HCIGETAUTHINFO = 2147764439
-HCIGETCONNINFO = 2147764437
-HCIGETCONNLIST = 2147764436
-HCIGETDEVINFO = 2147764435
-HCIGETDEVLIST = 2147764434
-HCIINQUIRY = 2147764464
-HCISETACLMTU = 1074022627
-HCISETAUTH = 1074022622
-HCISETENCRYPT = 1074022623
-HCISETLINKMODE = 1074022626
-HCISETLINKPOL = 1074022625
-HCISETPTYPE = 1074022624
-HCISETRAW = 1074022620
-HCISETSCAN = 1074022621
-HCISETSCOMTU = 1074022628
-HCIUNBLOCKADDR = 1074022631
-HCI_CHANNEL_CONTROL = 3
-HCI_CHANNEL_MONITOR = 2
-HCI_CHANNEL_RAW = 0
-HCI_CHANNEL_USER = 1
-HCI_DATA_DIR = 1
-HCI_FILTER = 2
-HCI_TIME_STAMP = 3
-HIDPCONNADD = 1074022600
-HIDPCONNDEL = 1074022601
-HIDPGETCONNINFO = 2147764435
-HIDPGETCONNLIST = 2147764434
-IPPROTO_ICMP = 1
-IPPROTO_IP = 0
-IPPROTO_IPV6 = 41
-IPPROTO_TCP = 6
-IPPROTO_UDP = 17
-IPV6_2292DSTOPTS = 4
-IPV6_2292HOPLIMIT = 8
-IPV6_2292HOPOPTS = 3
-IPV6_2292PKTINFO = 2
-IPV6_2292PKTOPTIONS = 6
-IPV6_2292RTHDR = 5
-IPV6_ADDRFORM = 1
-IPV6_ADD_MEMBERSHIP = 20
-IPV6_AUTHHDR = 10
-IPV6_CHECKSUM = 7
-IPV6_DROP_MEMBERSHIP = 21
-IPV6_DSTOPTS = 59
-IPV6_FLOWINFO = 11
-IPV6_HOPLIMIT = 52
-IPV6_HOPOPTS = 54
-IPV6_JOIN_ANYCAST = 27
-IPV6_LEAVE_ANYCAST = 28
-IPV6_MTU = 24
-IPV6_MTU_DISCOVER = 23
-IPV6_MULTICAST_HOPS = 18
-IPV6_MULTICAST_IF = 17
-IPV6_MULTICAST_LOOP = 19
-IPV6_RECVERR = 25
-IPV6_RECVPKTINFO = 49
-IPV6_ROUTER_ALERT = 22
-IPV6_RTHDR = 57
-IPV6_UNICAST_HOPS = 16
-IPV6_V6ONLY = 26
-IP_ADD_MEMBERSHIP = 35
-IP_ADD_SOURCE_MEMBERSHIP = 39
-IP_BIND_ADDRESS_NO_PORT = 24
-IP_BLOCK_SOURCE = 38
-IP_CHECKSUM = 23
-IP_DROP_MEMBERSHIP = 36
-IP_DROP_SOURCE_MEMBERSHIP = 40
-IP_FREEBIND = 15
-IP_HDRINCL = 3
-IP_IPSEC_POLICY = 16
-IP_MINTTL = 21
-IP_MSFILTER = 41
-IP_MTU = 14
-IP_MTU_DISCOVER = 10
-IP_MULTICAST_ALL = 49
-IP_MULTICAST_IF = 32
-IP_MULTICAST_LOOP = 34
-IP_MULTICAST_TTL = 33
-IP_NODEFRAG = 22
-IP_OPTIONS = 4
-IP_PASSSEC = 18
-IP_PKTINFO = 8
-IP_PKTOPTIONS = 9
-IP_PMTUDISC_DO = 2
-IP_PMTUDISC_DONT = 0
-IP_PMTUDISC_INTERFACE = 4
-IP_PMTUDISC_OMIT = 5
-IP_PMTUDISC_PROBE = 3
-IP_PMTUDISC_WANT = 1
-IP_RECVERR = 11
-IP_RECVOPTS = 6
-IP_RECVORIGDSTADDR = 20
-IP_RECVTOS = 13
-IP_RECVTTL = 12
-IP_RETOPTS = 7
-IP_ROUTER_ALERT = 5
-IP_TOS = 1
-IP_TRANSPARENT = 19
-IP_TTL = 2
-IP_UNBLOCK_SOURCE = 37
-L2CAP_CONNINFO = 2
-L2CAP_LM = 3
-L2CAP_LM_AUTH = 2
-L2CAP_LM_ENCRYPT = 4
-L2CAP_LM_FIPS = 64
-L2CAP_LM_MASTER = 1
-L2CAP_LM_RELIABLE = 16
-L2CAP_LM_SECURE = 32
-L2CAP_LM_TRUSTED = 8
-L2CAP_OPTIONS = 1
-MCAST_EXCLUDE = 0
-MCAST_INCLUDE = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -199,30 +25,8 @@ MSG_PROBE = 16
MSG_TRUNC = 32
MSG_WAITALL = 256
MSG_WAITFORONE = 65536
-NFC_LLCP_MIUX = 1
-NFC_LLCP_REMOTE_LTO = 3
-NFC_LLCP_REMOTE_MIU = 2
-NFC_LLCP_REMOTE_RW = 4
-NFC_LLCP_RW = 0
-NFC_PROTO_FELICA = 3
-NFC_PROTO_ISO14443 = 4
-NFC_PROTO_ISO14443_B = 6
-NFC_PROTO_ISO15693 = 7
-NFC_PROTO_JEWEL = 1
-NFC_PROTO_MIFARE = 2
-NFC_PROTO_NFC_DEP = 5
-NFC_SOCKPROTO_LLCP = 1
-NFC_SOCKPROTO_RAW = 0
-RFCOMM_CONNINFO = 2
-RFCOMM_LM = 3
-SCM_CREDENTIALS = 2
-SCM_RIGHTS = 1
-SCO_CONNINFO = 2
-SCO_OPTIONS = 1
SHUT_RD = 0
SHUT_WR = 1
-SIOCGSTAMP = 35078
-SIOCGSTAMPNS = 35079
SIOCINQ = 21531
SIOCOUTQ = 21521
SOCK_CLOEXEC = 524288
@@ -245,43 +49,7 @@ 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_L2CAP = 6
-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_RFCOMM = 18
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCO = 17
-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
@@ -327,21 +95,6 @@ SO_TIMESTAMPING = 37
SO_TIMESTAMPNS = 35
SO_TYPE = 3
SO_WIFI_STATUS = 41
-TCP_CORK = 3
-TCP_DEFER_ACCEPT = 9
-TCP_INFO = 11
-TCP_KEEPCNT = 6
-TCP_KEEPIDLE = 4
-TCP_KEEPINTVL = 5
-TCP_LINGER2 = 8
-TCP_MAXSEG = 2
-TCP_NODELAY = 1
-TCP_QUICKACK = 12
-TCP_SYNCNT = 7
-TCP_WINDOW_CLAMP = 10
-TIOCINQ = 21531
-TIOCOUTQ = 21521
-UDP_CORK = 1
__NR_accept = 43
__NR_accept4 = 288
__NR_bind = 49
diff --git a/sys/socket_arm64.const b/sys/socket_arm64.const
index 2df95853f..35944d14d 100644
--- a/sys/socket_arm64.const
+++ b/sys/socket_arm64.const
@@ -1,188 +1,14 @@
# AUTOGENERATED FILE
-AF_ALG = 38
AF_APPLETALK = 5
AF_ATMPVC = 8
AF_AX25 = 3
-AF_BLUETOOTH = 31
AF_INET = 2
AF_INET6 = 10
AF_IPX = 4
AF_NETLINK = 16
-AF_NFC = 39
AF_PACKET = 17
AF_UNIX = 1
-AF_UNSPEC = 0
AF_X25 = 9
-ALG_SET_AEAD_ASSOCLEN = 4
-ALG_SET_AEAD_AUTHSIZE = 5
-ALG_SET_IV = 2
-ALG_SET_KEY = 1
-ALG_SET_OP = 3
-BNEPCONNADD = 1074021064
-BNEPCONNDEL = 1074021065
-BNEPGETCONNINFO = 2147762899
-BNEPGETCONNLIST = 2147762898
-BNEPGETSUPPFEAT = 2147762900
-BTPROTO_BNEP = 4
-BTPROTO_CMTP = 5
-BTPROTO_HCI = 1
-BTPROTO_HIDP = 6
-BTPROTO_L2CAP = 0
-BTPROTO_RFCOMM = 3
-BTPROTO_SCO = 2
-BT_CHANNEL_POLICY = 10
-BT_DEFER_SETUP = 7
-BT_FLUSHABLE = 8
-BT_POWER = 9
-BT_RCVMTU = 13
-BT_SECURITY = 4
-BT_SNDMTU = 12
-BT_VOICE = 11
-CMTPCONNADD = 1074021320
-CMTPCONNDEL = 1074021321
-CMTPGETCONNINFO = 2147763155
-CMTPGETCONNLIST = 2147763154
-CRYPTO_ALG_ASYNC = 128
-CRYPTO_ALG_DEAD = 32
-CRYPTO_ALG_DYING = 64
-CRYPTO_ALG_GENIV = 512
-CRYPTO_ALG_INSTANCE = 2048
-CRYPTO_ALG_INTERNAL = 8192
-CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
-CRYPTO_ALG_LARVAL = 16
-CRYPTO_ALG_NEED_FALLBACK = 256
-CRYPTO_ALG_TESTED = 1024
-CRYPTO_ALG_TYPE_ABLKCIPHER = 5
-CRYPTO_ALG_TYPE_AEAD = 3
-CRYPTO_ALG_TYPE_AHASH = 15
-CRYPTO_ALG_TYPE_AKCIPHER = 13
-CRYPTO_ALG_TYPE_BLKCIPHER = 4
-CRYPTO_ALG_TYPE_CIPHER = 1
-CRYPTO_ALG_TYPE_COMPRESS = 2
-CRYPTO_ALG_TYPE_DIGEST = 14
-CRYPTO_ALG_TYPE_GIVCIPHER = 6
-CRYPTO_ALG_TYPE_HASH = 14
-CRYPTO_ALG_TYPE_MASK = 15
-CRYPTO_ALG_TYPE_PCOMPRESS = 15
-CRYPTO_ALG_TYPE_RNG = 12
-CRYPTO_ALG_TYPE_SHASH = 14
-HCIBLOCKADDR = 1074022630
-HCIDEVDOWN = 1074022602
-HCIDEVRESET = 1074022603
-HCIDEVRESTAT = 1074022604
-HCIDEVUP = 1074022601
-HCIGETAUTHINFO = 2147764439
-HCIGETCONNINFO = 2147764437
-HCIGETCONNLIST = 2147764436
-HCIGETDEVINFO = 2147764435
-HCIGETDEVLIST = 2147764434
-HCIINQUIRY = 2147764464
-HCISETACLMTU = 1074022627
-HCISETAUTH = 1074022622
-HCISETENCRYPT = 1074022623
-HCISETLINKMODE = 1074022626
-HCISETLINKPOL = 1074022625
-HCISETPTYPE = 1074022624
-HCISETRAW = 1074022620
-HCISETSCAN = 1074022621
-HCISETSCOMTU = 1074022628
-HCIUNBLOCKADDR = 1074022631
-HCI_CHANNEL_CONTROL = 3
-HCI_CHANNEL_MONITOR = 2
-HCI_CHANNEL_RAW = 0
-HCI_CHANNEL_USER = 1
-HCI_DATA_DIR = 1
-HCI_FILTER = 2
-HCI_TIME_STAMP = 3
-HIDPCONNADD = 1074022600
-HIDPCONNDEL = 1074022601
-HIDPGETCONNINFO = 2147764435
-HIDPGETCONNLIST = 2147764434
-IPPROTO_ICMP = 1
-IPPROTO_IP = 0
-IPPROTO_IPV6 = 41
-IPPROTO_TCP = 6
-IPPROTO_UDP = 17
-IPV6_2292DSTOPTS = 4
-IPV6_2292HOPLIMIT = 8
-IPV6_2292HOPOPTS = 3
-IPV6_2292PKTINFO = 2
-IPV6_2292PKTOPTIONS = 6
-IPV6_2292RTHDR = 5
-IPV6_ADDRFORM = 1
-IPV6_ADD_MEMBERSHIP = 20
-IPV6_AUTHHDR = 10
-IPV6_CHECKSUM = 7
-IPV6_DROP_MEMBERSHIP = 21
-IPV6_DSTOPTS = 59
-IPV6_FLOWINFO = 11
-IPV6_HOPLIMIT = 52
-IPV6_HOPOPTS = 54
-IPV6_JOIN_ANYCAST = 27
-IPV6_LEAVE_ANYCAST = 28
-IPV6_MTU = 24
-IPV6_MTU_DISCOVER = 23
-IPV6_MULTICAST_HOPS = 18
-IPV6_MULTICAST_IF = 17
-IPV6_MULTICAST_LOOP = 19
-IPV6_RECVERR = 25
-IPV6_RECVPKTINFO = 49
-IPV6_ROUTER_ALERT = 22
-IPV6_RTHDR = 57
-IPV6_UNICAST_HOPS = 16
-IPV6_V6ONLY = 26
-IP_ADD_MEMBERSHIP = 35
-IP_ADD_SOURCE_MEMBERSHIP = 39
-IP_BIND_ADDRESS_NO_PORT = 24
-IP_BLOCK_SOURCE = 38
-IP_CHECKSUM = 23
-IP_DROP_MEMBERSHIP = 36
-IP_DROP_SOURCE_MEMBERSHIP = 40
-IP_FREEBIND = 15
-IP_HDRINCL = 3
-IP_IPSEC_POLICY = 16
-IP_MINTTL = 21
-IP_MSFILTER = 41
-IP_MTU = 14
-IP_MTU_DISCOVER = 10
-IP_MULTICAST_ALL = 49
-IP_MULTICAST_IF = 32
-IP_MULTICAST_LOOP = 34
-IP_MULTICAST_TTL = 33
-IP_NODEFRAG = 22
-IP_OPTIONS = 4
-IP_PASSSEC = 18
-IP_PKTINFO = 8
-IP_PKTOPTIONS = 9
-IP_PMTUDISC_DO = 2
-IP_PMTUDISC_DONT = 0
-IP_PMTUDISC_INTERFACE = 4
-IP_PMTUDISC_OMIT = 5
-IP_PMTUDISC_PROBE = 3
-IP_PMTUDISC_WANT = 1
-IP_RECVERR = 11
-IP_RECVOPTS = 6
-IP_RECVORIGDSTADDR = 20
-IP_RECVTOS = 13
-IP_RECVTTL = 12
-IP_RETOPTS = 7
-IP_ROUTER_ALERT = 5
-IP_TOS = 1
-IP_TRANSPARENT = 19
-IP_TTL = 2
-IP_UNBLOCK_SOURCE = 37
-L2CAP_CONNINFO = 2
-L2CAP_LM = 3
-L2CAP_LM_AUTH = 2
-L2CAP_LM_ENCRYPT = 4
-L2CAP_LM_FIPS = 64
-L2CAP_LM_MASTER = 1
-L2CAP_LM_RELIABLE = 16
-L2CAP_LM_SECURE = 32
-L2CAP_LM_TRUSTED = 8
-L2CAP_OPTIONS = 1
-MCAST_EXCLUDE = 0
-MCAST_INCLUDE = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -199,30 +25,8 @@ MSG_PROBE = 16
MSG_TRUNC = 32
MSG_WAITALL = 256
MSG_WAITFORONE = 65536
-NFC_LLCP_MIUX = 1
-NFC_LLCP_REMOTE_LTO = 3
-NFC_LLCP_REMOTE_MIU = 2
-NFC_LLCP_REMOTE_RW = 4
-NFC_LLCP_RW = 0
-NFC_PROTO_FELICA = 3
-NFC_PROTO_ISO14443 = 4
-NFC_PROTO_ISO14443_B = 6
-NFC_PROTO_ISO15693 = 7
-NFC_PROTO_JEWEL = 1
-NFC_PROTO_MIFARE = 2
-NFC_PROTO_NFC_DEP = 5
-NFC_SOCKPROTO_LLCP = 1
-NFC_SOCKPROTO_RAW = 0
-RFCOMM_CONNINFO = 2
-RFCOMM_LM = 3
-SCM_CREDENTIALS = 2
-SCM_RIGHTS = 1
-SCO_CONNINFO = 2
-SCO_OPTIONS = 1
SHUT_RD = 0
SHUT_WR = 1
-SIOCGSTAMP = 35078
-SIOCGSTAMPNS = 35079
SIOCINQ = 21531
SIOCOUTQ = 21521
SOCK_CLOEXEC = 524288
@@ -245,43 +49,7 @@ 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_L2CAP = 6
-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_RFCOMM = 18
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCO = 17
-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
@@ -327,21 +95,6 @@ SO_TIMESTAMPING = 37
SO_TIMESTAMPNS = 35
SO_TYPE = 3
SO_WIFI_STATUS = 41
-TCP_CORK = 3
-TCP_DEFER_ACCEPT = 9
-TCP_INFO = 11
-TCP_KEEPCNT = 6
-TCP_KEEPIDLE = 4
-TCP_KEEPINTVL = 5
-TCP_LINGER2 = 8
-TCP_MAXSEG = 2
-TCP_NODELAY = 1
-TCP_QUICKACK = 12
-TCP_SYNCNT = 7
-TCP_WINDOW_CLAMP = 10
-TIOCINQ = 21531
-TIOCOUTQ = 21521
-UDP_CORK = 1
__NR_accept = 202
__NR_accept4 = 242
__NR_bind = 200
diff --git a/sys/socket_bluetooth.txt b/sys/socket_bluetooth.txt
new file mode 100644
index 000000000..4dbb1cbe5
--- /dev/null
+++ b/sys/socket_bluetooth.txt
@@ -0,0 +1,264 @@
+# 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.
+
+# AF_BLUETOOTH support.
+
+include <linux/socket.h>
+include <linux/net.h>
+include <linux/isdn/capilli.h>
+include <net/bluetooth/bluetooth.h>
+include <net/bluetooth/hci_sock.h>
+include <net/bluetooth/l2cap.h>
+include <net/bluetooth/cmtp/cmtp.h>
+include <net/bluetooth/bnep/bnep.h>
+include <net/bluetooth/hidp/hidp.h>
+include <net/bluetooth/sco.h>
+include <net/bluetooth/rfcomm.h>
+include <asm/ioctls.h>
+
+resource sock_bt[sock]
+resource sock_bt_hci[sock_bt]
+
+socket$bt_hci(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HCI]) sock_bt_hci
+bind$bt_hci(fd sock_bt_hci, addr ptr[in, sockaddr_hci], addrlen len[addr])
+ioctl$bt_hci(fd sock_bt_hci, cmd flags[bt_hci_ioctl], arg buffer[inout])
+setsockopt$HCI_DATA_DIR(fd sock_bt_hci, level const[0], opt const[HCI_DATA_DIR], arg ptr[in, int32], arglen len[arg])
+setsockopt$HCI_TIME_STAMP(fd sock_bt_hci, level const[0], opt const[HCI_TIME_STAMP], arg ptr[in, int32], arglen len[arg])
+setsockopt$HCI_FILTER(fd sock_bt_hci, level const[0], opt const[HCI_FILTER], arg ptr[in, hci_ufilter], arglen len[arg])
+getsockopt$bt_hci(fd sock, level const[0], opt flags[bt_hci_sockopt], arg buffer[out], arglen ptr[inout, len[arg, int32]])
+
+resource sock_bt_sco[sock_bt]
+
+socket$bt_sco(fam const[AF_BLUETOOTH], type const[SOCK_SEQPACKET], proto const[BTPROTO_SCO]) sock_bt_sco
+bind$bt_sco(fd sock_bt_sco, addr ptr[in, sockaddr_sco], addrlen len[addr])
+connect$bt_sco(fd sock_bt_sco, addr ptr[in, sockaddr_sco], addrlen len[addr])
+getsockopt$SCO_OPTIONS(fd sock_bt_sco, level const[SOL_SCO], opt const[SCO_OPTIONS], arg buffer[out], arglen ptr[inout, len[arg, int32]])
+getsockopt$SCO_CONNINFO(fd sock_bt_sco, level const[SOL_SCO], opt const[SCO_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]])
+
+resource sock_bt_l2cap[sock_bt]
+
+socket$bt_l2cap(fam const[AF_BLUETOOTH], type flags[bt_l2cap_type], proto const[BTPROTO_L2CAP]) sock_bt_l2cap
+bind$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr])
+connect$bt_l2cap(fd sock_bt_l2cap, addr ptr[in, sockaddr_l2], addrlen len[addr])
+setsockopt$L2CAP_OPTIONS(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[in, l2cap_options], arglen len[arg])
+getsockopt$L2CAP_OPTIONS(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_OPTIONS], arg ptr[out, l2cap_options], arglen ptr[inout, len[arg, int32]])
+setsockopt$L2CAP_LM(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg])
+getsockopt$L2CAP_LM(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
+setsockopt$L2CAP_CONNINFO(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[in, l2cap_conninfo], arglen len[arg])
+getsockopt$L2CAP_CONNINFO(fd sock_bt_l2cap, level const[SOL_L2CAP], opt const[L2CAP_CONNINFO], arg ptr[out, l2cap_conninfo], arglen ptr[inout, len[arg, int32]])
+
+resource sock_bt_rfcomm[sock_bt]
+
+socket$bt_rfcomm(fam const[AF_BLUETOOTH], type flags[bt_rfcomm_type], proto const[BTPROTO_RFCOMM]) sock_bt_rfcomm
+bind$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rc], addrlen len[addr])
+connect$bt_rfcomm(fd sock_bt_rfcomm, addr ptr[in, sockaddr_rc], addrlen len[addr])
+setsockopt$RFCOMM_LM(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[in, flags[bt_l2cap_lm, int32]], arglen len[arg])
+getsockopt$RFCOMM_LM(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_LM], arg ptr[out, int32], arglen ptr[inout, len[arg, int32]])
+getsockopt$RFCOMM_CONNINFO(fd sock_bt_rfcomm, level const[SOL_RFCOMM], opt const[RFCOMM_CONNINFO], arg buffer[out], arglen ptr[inout, len[arg, int32]])
+
+resource sock_bt_hidp[sock_bt]
+
+socket$bt_hidp(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_HIDP]) sock_bt_hidp
+ioctl$HIDPCONNADD(fd sock_bt_hidp, cmd const[HIDPCONNADD], arg ptr[in, hidp_connadd_req])
+ioctl$HIDPCONNDEL(fd sock_bt_hidp, cmd const[HIDPCONNDEL], arg ptr[in, hidp_conndel_req])
+ioctl$HIDPGETCONNLIST(fd sock_bt_hidp, cmd const[HIDPGETCONNLIST], arg ptr[in, hidp_connlist_req])
+ioctl$HIDPGETCONNINFO(fd sock_bt_hidp, cmd const[HIDPGETCONNINFO], arg ptr[in, hidp_conninfo])
+
+resource sock_bt_cmtp[sock_bt]
+
+socket$bt_cmtp(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_CMTP]) sock_bt_cmtp
+ioctl$CMTPCONNADD(fd sock_bt_cmtp, cmd const[CMTPCONNADD], arg ptr[in, cmtp_connadd_req])
+ioctl$CMTPCONNDEL(fd sock_bt_cmtp, cmd const[CMTPCONNDEL], arg ptr[in, cmtp_conndel_req])
+ioctl$CMTPGETCONNLIST(fd sock_bt_cmtp, cmd const[CMTPGETCONNLIST], arg ptr[in, cmtp_connlist_req])
+ioctl$CMTPGETCONNINFO(fd sock_bt_cmtp, cmd const[CMTPGETCONNINFO], arg ptr[in, cmtp_conninfo])
+
+resource sock_bt_bnep[sock_bt]
+
+socket$bt_bnep(fam const[AF_BLUETOOTH], type const[SOCK_RAW], proto const[BTPROTO_BNEP]) sock_bt_bnep
+ioctl$BNEPCONNADD(fd sock_bt_bnep, cmd const[BNEPCONNADD], arg ptr[in, bnep_connadd_req])
+ioctl$BNEPCONNDEL(fd sock_bt_bnep, cmd const[BNEPCONNDEL], arg ptr[in, bnep_conndel_req])
+ioctl$BNEPGETCONNLIST(fd sock_bt_bnep, cmd const[BNEPGETCONNLIST], arg ptr[in, bnep_connlist_req])
+ioctl$BNEPGETCONNINFO(fd sock_bt_bnep, cmd const[BNEPGETCONNINFO], arg ptr[in, bnep_conninfo])
+ioctl$BNEPGETSUPPFEAT(fd sock_bt_bnep, cmd const[BNEPGETSUPPFEAT], arg ptr[in, int32])
+
+ioctl$bt(fd sock_bt, cmd flags[bt_ioctl], arg buffer[inout])
+setsockopt$BT_SECURITY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[in, bt_security], arglen len[arg])
+getsockopt$BT_SECURITY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SECURITY], arg ptr[out, bt_security], arglen len[arg])
+setsockopt$BT_DEFER_SETUP(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen len[arg])
+getsockopt$BT_DEFER_SETUP(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_DEFER_SETUP], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_VOICE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen len[arg])
+getsockopt$BT_VOICE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_VOICE], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_FLUSHABLE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen len[arg])
+getsockopt$BT_FLUSHABLE(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_FLUSHABLE], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_POWER(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen len[arg])
+getsockopt$BT_POWER(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_POWER], arg ptr[in, int8], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_CHANNEL_POLICY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen len[arg])
+getsockopt$BT_CHANNEL_POLICY(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_CHANNEL_POLICY], arg ptr[in, int32], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_SNDMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen len[arg])
+getsockopt$BT_SNDMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_SNDMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
+setsockopt$BT_RCVMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen len[arg])
+getsockopt$BT_RCVMTU(fd sock_bt, level const[SOL_BLUETOOTH], opt const[BT_RCVMTU], arg ptr[in, int16], arglen ptr[in, len[arg, intptr]])
+
+sockaddr_hci {
+ fam const[AF_BLUETOOTH, int16]
+ dev int16
+ chan flags[bt_chi_chan, int16]
+}
+
+hci_inquiry_req {
+ dev int16
+ flags int16
+ lap0 int8
+ lap1 int8
+ lap2 int8
+ len int8
+ rsp int8
+}
+
+hci_ufilter {
+ type int32
+ event0 int32
+ event1 int32
+ opcode int16
+}
+
+sockaddr_sco {
+ fam const[AF_BLUETOOTH, int16]
+ addr bdaddr
+}
+
+sockaddr_l2 {
+ fam const[AF_BLUETOOTH, int16]
+ psm int16
+ addr bdaddr
+ cid int16
+ typ int8
+}
+
+bdaddr {
+ addr0 int8
+ addr1 int8
+ addr2 int8
+ addr3 int8
+ addr4 int8
+ addr5 int8
+}
+
+bt_security {
+ lev int8
+ keysize int8
+}
+
+l2cap_options {
+ omtu int16
+ imtu int16
+ flushto int16
+ mode int8
+ fcs int8
+ maxtx int8
+ txwin int16
+}
+
+l2cap_conninfo {
+ handle int16
+ devcls0 int8
+ devcls1 int8
+ devcls2 int8
+}
+
+sockaddr_rc {
+ fam const[AF_BLUETOOTH, int16]
+ addr bdaddr
+ chan int8
+}
+
+hidp_connadd_req {
+ ctrlsk sock
+ intrsk sock
+ parser int16
+ rdsize int16
+ rddata buffer[in]
+ country int8
+ subclas int8
+ vendor int16
+ product int16
+ version int16
+ flags int32
+ idleto int32
+ name array[int8]
+}
+
+hidp_conndel_req {
+ addr bdaddr
+ flags int32
+}
+
+hidp_conninfo {
+ addr bdaddr
+ flags int32
+ state int16
+ vendor int16
+ product int16
+ ver int16
+ name array[int8]
+}
+
+hidp_connlist_req {
+ cnum len[ci, int32]
+ ci ptr[out, array[hidp_conninfo]]
+}
+
+cmtp_connadd_req {
+ sock sock
+ flags int32
+}
+
+cmtp_conndel_req {
+ addr bdaddr
+ flags int32
+}
+
+cmtp_conninfo {
+ addr bdaddr
+ flags int32
+ state int16
+ num int32
+}
+
+cmtp_connlist_req {
+ cnum len[ci, int32]
+ ci ptr[out, array[cmtp_conninfo]]
+}
+
+bnep_connadd_req {
+ sock sock
+ flags int32
+ role int16
+ device array[int8]
+}
+
+bnep_conndel_req {
+ flags int32
+ dst array[int8, 6]
+}
+
+bnep_conninfo {
+ flags int32
+ role int16
+ state int16
+ dst array[int8, 6]
+ device array[int8, 16]
+}
+
+bnep_connlist_req {
+ cnum len[ci, int32]
+ ci ptr[out, array[bnep_conninfo]]
+}
+
+bt_chi_chan = HCI_CHANNEL_RAW, HCI_CHANNEL_USER, HCI_CHANNEL_MONITOR, HCI_CHANNEL_CONTROL
+bt_hci_ioctl = HCIDEVUP, HCIDEVDOWN, HCIDEVRESET, HCIDEVRESTAT, HCIGETDEVLIST, HCIGETDEVINFO, HCIGETCONNLIST, HCIGETCONNINFO, HCIGETAUTHINFO, HCISETRAW, HCISETSCAN, HCISETAUTH, HCISETENCRYPT, HCISETPTYPE, HCISETLINKPOL, HCISETLINKMODE, HCISETACLMTU, HCISETSCOMTU, HCIBLOCKADDR, HCIUNBLOCKADDR, HCIINQUIRY
+bt_hci_sockopt = HCI_DATA_DIR, HCI_TIME_STAMP, HCI_FILTER
+bt_ioctl = TIOCOUTQ, TIOCINQ, SIOCGSTAMP, SIOCGSTAMPNS
+bt_l2cap_type = SOCK_SEQPACKET, SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
+bt_l2cap_lm = L2CAP_LM_MASTER, L2CAP_LM_AUTH, L2CAP_LM_ENCRYPT, L2CAP_LM_TRUSTED, L2CAP_LM_RELIABLE, L2CAP_LM_SECURE, L2CAP_LM_FIPS
+bt_rfcomm_type = SOCK_STREAM, SOCK_RAW
diff --git a/sys/socket_bluetooth_amd64.const b/sys/socket_bluetooth_amd64.const
new file mode 100644
index 000000000..8cb231d8e
--- /dev/null
+++ b/sys/socket_bluetooth_amd64.const
@@ -0,0 +1,90 @@
+# AUTOGENERATED FILE
+AF_BLUETOOTH = 31
+BNEPCONNADD = 1074021064
+BNEPCONNDEL = 1074021065
+BNEPGETCONNINFO = 2147762899
+BNEPGETCONNLIST = 2147762898
+BNEPGETSUPPFEAT = 2147762900
+BTPROTO_BNEP = 4
+BTPROTO_CMTP = 5
+BTPROTO_HCI = 1
+BTPROTO_HIDP = 6
+BTPROTO_L2CAP = 0
+BTPROTO_RFCOMM = 3
+BTPROTO_SCO = 2
+BT_CHANNEL_POLICY = 10
+BT_DEFER_SETUP = 7
+BT_FLUSHABLE = 8
+BT_POWER = 9
+BT_RCVMTU = 13
+BT_SECURITY = 4
+BT_SNDMTU = 12
+BT_VOICE = 11
+CMTPCONNADD = 1074021320
+CMTPCONNDEL = 1074021321
+CMTPGETCONNINFO = 2147763155
+CMTPGETCONNLIST = 2147763154
+HCIBLOCKADDR = 1074022630
+HCIDEVDOWN = 1074022602
+HCIDEVRESET = 1074022603
+HCIDEVRESTAT = 1074022604
+HCIDEVUP = 1074022601
+HCIGETAUTHINFO = 2147764439
+HCIGETCONNINFO = 2147764437
+HCIGETCONNLIST = 2147764436
+HCIGETDEVINFO = 2147764435
+HCIGETDEVLIST = 2147764434
+HCIINQUIRY = 2147764464
+HCISETACLMTU = 1074022627
+HCISETAUTH = 1074022622
+HCISETENCRYPT = 1074022623
+HCISETLINKMODE = 1074022626
+HCISETLINKPOL = 1074022625
+HCISETPTYPE = 1074022624
+HCISETRAW = 1074022620
+HCISETSCAN = 1074022621
+HCISETSCOMTU = 1074022628
+HCIUNBLOCKADDR = 1074022631
+HCI_CHANNEL_CONTROL = 3
+HCI_CHANNEL_MONITOR = 2
+HCI_CHANNEL_RAW = 0
+HCI_CHANNEL_USER = 1
+HCI_DATA_DIR = 1
+HCI_FILTER = 2
+HCI_TIME_STAMP = 3
+HIDPCONNADD = 1074022600
+HIDPCONNDEL = 1074022601
+HIDPGETCONNINFO = 2147764435
+HIDPGETCONNLIST = 2147764434
+L2CAP_CONNINFO = 2
+L2CAP_LM = 3
+L2CAP_LM_AUTH = 2
+L2CAP_LM_ENCRYPT = 4
+L2CAP_LM_FIPS = 64
+L2CAP_LM_MASTER = 1
+L2CAP_LM_RELIABLE = 16
+L2CAP_LM_SECURE = 32
+L2CAP_LM_TRUSTED = 8
+L2CAP_OPTIONS = 1
+RFCOMM_CONNINFO = 2
+RFCOMM_LM = 3
+SCO_CONNINFO = 2
+SCO_OPTIONS = 1
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_BLUETOOTH = 274
+SOL_L2CAP = 6
+SOL_RFCOMM = 18
+SOL_SCO = 17
+TIOCINQ = 21531
+TIOCOUTQ = 21521
+__NR_bind = 49
+__NR_connect = 42
+__NR_getsockopt = 55
+__NR_ioctl = 16
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_bluetooth_arm64.const b/sys/socket_bluetooth_arm64.const
new file mode 100644
index 000000000..26782a9e3
--- /dev/null
+++ b/sys/socket_bluetooth_arm64.const
@@ -0,0 +1,90 @@
+# AUTOGENERATED FILE
+AF_BLUETOOTH = 31
+BNEPCONNADD = 1074021064
+BNEPCONNDEL = 1074021065
+BNEPGETCONNINFO = 2147762899
+BNEPGETCONNLIST = 2147762898
+BNEPGETSUPPFEAT = 2147762900
+BTPROTO_BNEP = 4
+BTPROTO_CMTP = 5
+BTPROTO_HCI = 1
+BTPROTO_HIDP = 6
+BTPROTO_L2CAP = 0
+BTPROTO_RFCOMM = 3
+BTPROTO_SCO = 2
+BT_CHANNEL_POLICY = 10
+BT_DEFER_SETUP = 7
+BT_FLUSHABLE = 8
+BT_POWER = 9
+BT_RCVMTU = 13
+BT_SECURITY = 4
+BT_SNDMTU = 12
+BT_VOICE = 11
+CMTPCONNADD = 1074021320
+CMTPCONNDEL = 1074021321
+CMTPGETCONNINFO = 2147763155
+CMTPGETCONNLIST = 2147763154
+HCIBLOCKADDR = 1074022630
+HCIDEVDOWN = 1074022602
+HCIDEVRESET = 1074022603
+HCIDEVRESTAT = 1074022604
+HCIDEVUP = 1074022601
+HCIGETAUTHINFO = 2147764439
+HCIGETCONNINFO = 2147764437
+HCIGETCONNLIST = 2147764436
+HCIGETDEVINFO = 2147764435
+HCIGETDEVLIST = 2147764434
+HCIINQUIRY = 2147764464
+HCISETACLMTU = 1074022627
+HCISETAUTH = 1074022622
+HCISETENCRYPT = 1074022623
+HCISETLINKMODE = 1074022626
+HCISETLINKPOL = 1074022625
+HCISETPTYPE = 1074022624
+HCISETRAW = 1074022620
+HCISETSCAN = 1074022621
+HCISETSCOMTU = 1074022628
+HCIUNBLOCKADDR = 1074022631
+HCI_CHANNEL_CONTROL = 3
+HCI_CHANNEL_MONITOR = 2
+HCI_CHANNEL_RAW = 0
+HCI_CHANNEL_USER = 1
+HCI_DATA_DIR = 1
+HCI_FILTER = 2
+HCI_TIME_STAMP = 3
+HIDPCONNADD = 1074022600
+HIDPCONNDEL = 1074022601
+HIDPGETCONNINFO = 2147764435
+HIDPGETCONNLIST = 2147764434
+L2CAP_CONNINFO = 2
+L2CAP_LM = 3
+L2CAP_LM_AUTH = 2
+L2CAP_LM_ENCRYPT = 4
+L2CAP_LM_FIPS = 64
+L2CAP_LM_MASTER = 1
+L2CAP_LM_RELIABLE = 16
+L2CAP_LM_SECURE = 32
+L2CAP_LM_TRUSTED = 8
+L2CAP_OPTIONS = 1
+RFCOMM_CONNINFO = 2
+RFCOMM_LM = 3
+SCO_CONNINFO = 2
+SCO_OPTIONS = 1
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_BLUETOOTH = 274
+SOL_L2CAP = 6
+SOL_RFCOMM = 18
+SOL_SCO = 17
+TIOCINQ = 21531
+TIOCOUTQ = 21521
+__NR_bind = 200
+__NR_connect = 203
+__NR_getsockopt = 209
+__NR_ioctl = 29
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_bluetooth_ppc64le.const b/sys/socket_bluetooth_ppc64le.const
new file mode 100644
index 000000000..e01d7d39e
--- /dev/null
+++ b/sys/socket_bluetooth_ppc64le.const
@@ -0,0 +1,90 @@
+# AUTOGENERATED FILE
+AF_BLUETOOTH = 31
+BNEPCONNADD = 2147762888
+BNEPCONNDEL = 2147762889
+BNEPGETCONNINFO = 1074021075
+BNEPGETCONNLIST = 1074021074
+BNEPGETSUPPFEAT = 1074021076
+BTPROTO_BNEP = 4
+BTPROTO_CMTP = 5
+BTPROTO_HCI = 1
+BTPROTO_HIDP = 6
+BTPROTO_L2CAP = 0
+BTPROTO_RFCOMM = 3
+BTPROTO_SCO = 2
+BT_CHANNEL_POLICY = 10
+BT_DEFER_SETUP = 7
+BT_FLUSHABLE = 8
+BT_POWER = 9
+BT_RCVMTU = 13
+BT_SECURITY = 4
+BT_SNDMTU = 12
+BT_VOICE = 11
+CMTPCONNADD = 2147763144
+CMTPCONNDEL = 2147763145
+CMTPGETCONNINFO = 1074021331
+CMTPGETCONNLIST = 1074021330
+HCIBLOCKADDR = 2147764454
+HCIDEVDOWN = 2147764426
+HCIDEVRESET = 2147764427
+HCIDEVRESTAT = 2147764428
+HCIDEVUP = 2147764425
+HCIGETAUTHINFO = 1074022615
+HCIGETCONNINFO = 1074022613
+HCIGETCONNLIST = 1074022612
+HCIGETDEVINFO = 1074022611
+HCIGETDEVLIST = 1074022610
+HCIINQUIRY = 1074022640
+HCISETACLMTU = 2147764451
+HCISETAUTH = 2147764446
+HCISETENCRYPT = 2147764447
+HCISETLINKMODE = 2147764450
+HCISETLINKPOL = 2147764449
+HCISETPTYPE = 2147764448
+HCISETRAW = 2147764444
+HCISETSCAN = 2147764445
+HCISETSCOMTU = 2147764452
+HCIUNBLOCKADDR = 2147764455
+HCI_CHANNEL_CONTROL = 3
+HCI_CHANNEL_MONITOR = 2
+HCI_CHANNEL_RAW = 0
+HCI_CHANNEL_USER = 1
+HCI_DATA_DIR = 1
+HCI_FILTER = 2
+HCI_TIME_STAMP = 3
+HIDPCONNADD = 2147764424
+HIDPCONNDEL = 2147764425
+HIDPGETCONNINFO = 1074022611
+HIDPGETCONNLIST = 1074022610
+L2CAP_CONNINFO = 2
+L2CAP_LM = 3
+L2CAP_LM_AUTH = 2
+L2CAP_LM_ENCRYPT = 4
+L2CAP_LM_FIPS = 64
+L2CAP_LM_MASTER = 1
+L2CAP_LM_RELIABLE = 16
+L2CAP_LM_SECURE = 32
+L2CAP_LM_TRUSTED = 8
+L2CAP_OPTIONS = 1
+RFCOMM_CONNINFO = 2
+RFCOMM_LM = 3
+SCO_CONNINFO = 2
+SCO_OPTIONS = 1
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_BLUETOOTH = 274
+SOL_L2CAP = 6
+SOL_RFCOMM = 18
+SOL_SCO = 17
+TIOCINQ = 1074030207
+TIOCOUTQ = 1074033779
+__NR_bind = 327
+__NR_connect = 328
+__NR_getsockopt = 340
+__NR_ioctl = 54
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/socket_inet.txt b/sys/socket_inet.txt
new file mode 100644
index 000000000..41b214ccd
--- /dev/null
+++ b/sys/socket_inet.txt
@@ -0,0 +1,208 @@
+# 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.
+
+include <linux/ip.h>
+include <linux/ipv6.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
+
+in_addr [
+# 0.0.0.0
+ empty const[0x00000000, int32be]
+# 127.0.0.1
+ loopback const[0x7f000001, int32be]
+# 255.255.255.255
+ broadcast const[0xffffffff, int32be]
+]
+
+in6_addr_empty {
+ a0 const[0, int64be]
+ a1 const[0, int64be]
+}
+
+in6_addr_loopback {
+ a0 const[0, int64be]
+ a1 const[1, int64be]
+}
+
+in6_addr [
+ empty in6_addr_empty
+ 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]
+ flow int32
+ addr in6_addr
+ scope int32
+}
+
+sockaddr_storage_in {
+ addr sockaddr_in
+ pad array[const[0, int64], 15]
+}
+
+sockaddr_storage_in6 {
+ addr sockaddr_in6
+ pad array[const[0, int64], 12]
+}
+
+sockaddr_storage [
+ in sockaddr_storage_in
+ in6 sockaddr_storage_in6
+]
+
+ip_mreq {
+ multi in_addr
+ addr in_addr
+}
+
+ip_mreqn {
+ multi in_addr
+ addr in_addr
+ ifindex int32
+}
+
+ip_mreq_source {
+ multi in_addr
+ iface in_addr
+ source in_addr
+}
+
+ip_msfilter {
+ multi in_addr
+ iface in_addr
+ fmode flags[ip_msfilter_mode, int32]
+ numsrc len[slist, int32]
+ slist array[in_addr]
+}
+
+in_pktinfo {
+ ifindex int32
+ dst in_addr
+ addr in_addr
+}
+
+xfrm_filer {
+ info xfrm_userpolicy_info
+ tmpl xfrm_user_tmpl
+}
+
+xfrm_userpolicy_info {
+ sel xfrm_selector
+ lft xfrm_lifetime_cfg
+ cur xfrm_lifetime_cur
+ prio int32
+ index int32
+ dir int8
+ action int8
+ flags int8
+ share int8
+}
+
+xfrm_user_tmpl {
+ id xfrm_id
+ fam int16
+ saddr xfrm_in_addr
+ reqid int32
+ mode int8
+ share int8
+ opt int8
+ aalgod int32
+ ealgos int32
+ calgos int32
+}
+
+xfrm_selector {
+ daddr xfrm_in_addr
+ saddr xfrm_in_addr
+ dport proc[int16be, 20000, 4]
+ dmask int16
+ sport proc[int16be, 20000, 4]
+ smask int16
+ fam int16
+ len_d int8
+ len_s int8
+ proto int8
+ ifindex int32
+ user int32
+}
+
+xfrm_lifetime_cfg {
+ x0 int64
+ x1 int64
+ x2 int64
+ x3 int64
+ x4 int64
+ x5 int64
+ x6 int64
+ x7 int64
+}
+
+xfrm_lifetime_cur {
+ bytes int64
+ packets int64
+ atime int64
+ utime int64
+}
+
+xfrm_id {
+ daddr xfrm_in_addr
+ spi int32
+ proto int8
+}
+
+xfrm_in_addr [
+ in in_addr
+ in6 in6_addr
+]
+
+ipv6_mreq {
+ multi in6_addr
+ ifindex int32
+}
diff --git a/sys/socket_inet_amd64.const b/sys/socket_inet_amd64.const
new file mode 100644
index 000000000..e94a6be44
--- /dev/null
+++ b/sys/socket_inet_amd64.const
@@ -0,0 +1,111 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_ICMP = 1
+IPPROTO_IP = 0
+IPPROTO_IPV6 = 41
+IPV6_2292DSTOPTS = 4
+IPV6_2292HOPLIMIT = 8
+IPV6_2292HOPOPTS = 3
+IPV6_2292PKTINFO = 2
+IPV6_2292PKTOPTIONS = 6
+IPV6_2292RTHDR = 5
+IPV6_ADDRFORM = 1
+IPV6_ADD_MEMBERSHIP = 20
+IPV6_AUTHHDR = 10
+IPV6_CHECKSUM = 7
+IPV6_DROP_MEMBERSHIP = 21
+IPV6_DSTOPTS = 59
+IPV6_FLOWINFO = 11
+IPV6_HOPLIMIT = 52
+IPV6_HOPOPTS = 54
+IPV6_JOIN_ANYCAST = 27
+IPV6_LEAVE_ANYCAST = 28
+IPV6_MTU = 24
+IPV6_MTU_DISCOVER = 23
+IPV6_MULTICAST_HOPS = 18
+IPV6_MULTICAST_IF = 17
+IPV6_MULTICAST_LOOP = 19
+IPV6_RECVERR = 25
+IPV6_RECVPKTINFO = 49
+IPV6_ROUTER_ALERT = 22
+IPV6_RTHDR = 57
+IPV6_UNICAST_HOPS = 16
+IPV6_V6ONLY = 26
+IP_ADD_MEMBERSHIP = 35
+IP_ADD_SOURCE_MEMBERSHIP = 39
+IP_BIND_ADDRESS_NO_PORT = 24
+IP_BLOCK_SOURCE = 38
+IP_CHECKSUM = 23
+IP_DROP_MEMBERSHIP = 36
+IP_DROP_SOURCE_MEMBERSHIP = 40
+IP_FREEBIND = 15
+IP_HDRINCL = 3
+IP_IPSEC_POLICY = 16
+IP_MINTTL = 21
+IP_MSFILTER = 41
+IP_MTU = 14
+IP_MTU_DISCOVER = 10
+IP_MULTICAST_ALL = 49
+IP_MULTICAST_IF = 32
+IP_MULTICAST_LOOP = 34
+IP_MULTICAST_TTL = 33
+IP_NODEFRAG = 22
+IP_OPTIONS = 4
+IP_PASSSEC = 18
+IP_PKTINFO = 8
+IP_PKTOPTIONS = 9
+IP_PMTUDISC_DO = 2
+IP_PMTUDISC_DONT = 0
+IP_PMTUDISC_INTERFACE = 4
+IP_PMTUDISC_OMIT = 5
+IP_PMTUDISC_PROBE = 3
+IP_PMTUDISC_WANT = 1
+IP_RECVERR = 11
+IP_RECVOPTS = 6
+IP_RECVORIGDSTADDR = 20
+IP_RECVTOS = 13
+IP_RECVTTL = 12
+IP_RETOPTS = 7
+IP_ROUTER_ALERT = 5
+IP_TOS = 1
+IP_TRANSPARENT = 19
+IP_TTL = 2
+IP_UNBLOCK_SOURCE = 37
+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
+__NR_getsockopt = 55
+__NR_setsockopt = 54
diff --git a/sys/socket_inet_arm64.const b/sys/socket_inet_arm64.const
new file mode 100644
index 000000000..af41e04e1
--- /dev/null
+++ b/sys/socket_inet_arm64.const
@@ -0,0 +1,111 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_ICMP = 1
+IPPROTO_IP = 0
+IPPROTO_IPV6 = 41
+IPV6_2292DSTOPTS = 4
+IPV6_2292HOPLIMIT = 8
+IPV6_2292HOPOPTS = 3
+IPV6_2292PKTINFO = 2
+IPV6_2292PKTOPTIONS = 6
+IPV6_2292RTHDR = 5
+IPV6_ADDRFORM = 1
+IPV6_ADD_MEMBERSHIP = 20
+IPV6_AUTHHDR = 10
+IPV6_CHECKSUM = 7
+IPV6_DROP_MEMBERSHIP = 21
+IPV6_DSTOPTS = 59
+IPV6_FLOWINFO = 11
+IPV6_HOPLIMIT = 52
+IPV6_HOPOPTS = 54
+IPV6_JOIN_ANYCAST = 27
+IPV6_LEAVE_ANYCAST = 28
+IPV6_MTU = 24
+IPV6_MTU_DISCOVER = 23
+IPV6_MULTICAST_HOPS = 18
+IPV6_MULTICAST_IF = 17
+IPV6_MULTICAST_LOOP = 19
+IPV6_RECVERR = 25
+IPV6_RECVPKTINFO = 49
+IPV6_ROUTER_ALERT = 22
+IPV6_RTHDR = 57
+IPV6_UNICAST_HOPS = 16
+IPV6_V6ONLY = 26
+IP_ADD_MEMBERSHIP = 35
+IP_ADD_SOURCE_MEMBERSHIP = 39
+IP_BIND_ADDRESS_NO_PORT = 24
+IP_BLOCK_SOURCE = 38
+IP_CHECKSUM = 23
+IP_DROP_MEMBERSHIP = 36
+IP_DROP_SOURCE_MEMBERSHIP = 40
+IP_FREEBIND = 15
+IP_HDRINCL = 3
+IP_IPSEC_POLICY = 16
+IP_MINTTL = 21
+IP_MSFILTER = 41
+IP_MTU = 14
+IP_MTU_DISCOVER = 10
+IP_MULTICAST_ALL = 49
+IP_MULTICAST_IF = 32
+IP_MULTICAST_LOOP = 34
+IP_MULTICAST_TTL = 33
+IP_NODEFRAG = 22
+IP_OPTIONS = 4
+IP_PASSSEC = 18
+IP_PKTINFO = 8
+IP_PKTOPTIONS = 9
+IP_PMTUDISC_DO = 2
+IP_PMTUDISC_DONT = 0
+IP_PMTUDISC_INTERFACE = 4
+IP_PMTUDISC_OMIT = 5
+IP_PMTUDISC_PROBE = 3
+IP_PMTUDISC_WANT = 1
+IP_RECVERR = 11
+IP_RECVOPTS = 6
+IP_RECVORIGDSTADDR = 20
+IP_RECVTOS = 13
+IP_RECVTTL = 12
+IP_RETOPTS = 7
+IP_ROUTER_ALERT = 5
+IP_TOS = 1
+IP_TRANSPARENT = 19
+IP_TTL = 2
+IP_UNBLOCK_SOURCE = 37
+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
+__NR_getsockopt = 209
+__NR_setsockopt = 208
diff --git a/sys/socket_inet_icmp.txt b/sys/socket_inet_icmp.txt
new file mode 100644
index 000000000..0dd4036cf
--- /dev/null
+++ b/sys/socket_inet_icmp.txt
@@ -0,0 +1,47 @@
+# 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.
+
+# AF_INET and AF_INET6: ICMP support
+
+include <linux/icmp.h>
+include <linux/icmpv6.h>
+
+resource sock_icmp[sock]
+
+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]
+
+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
+}
diff --git a/sys/socket_inet_icmp_amd64.const b/sys/socket_inet_icmp_amd64.const
new file mode 100644
index 000000000..d02f17183
--- /dev/null
+++ b/sys/socket_inet_icmp_amd64.const
@@ -0,0 +1,17 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+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_socket = 41
+__NR_socketpair = 53
diff --git a/sys/socket_inet_icmp_arm64.const b/sys/socket_inet_icmp_arm64.const
new file mode 100644
index 000000000..487ef6903
--- /dev/null
+++ b/sys/socket_inet_icmp_arm64.const
@@ -0,0 +1,17 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+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_socket = 198
+__NR_socketpair = 199
diff --git a/sys/socket_inet_icmp_ppc64le.const b/sys/socket_inet_icmp_ppc64le.const
new file mode 100644
index 000000000..3715ed6e1
--- /dev/null
+++ b/sys/socket_inet_icmp_ppc64le.const
@@ -0,0 +1,17 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+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_socket = 326
+__NR_socketpair = 333
diff --git a/sys/socket_inet_ppc64le.const b/sys/socket_inet_ppc64le.const
new file mode 100644
index 000000000..5a3f556d5
--- /dev/null
+++ b/sys/socket_inet_ppc64le.const
@@ -0,0 +1,111 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_ICMP = 1
+IPPROTO_IP = 0
+IPPROTO_IPV6 = 41
+IPV6_2292DSTOPTS = 4
+IPV6_2292HOPLIMIT = 8
+IPV6_2292HOPOPTS = 3
+IPV6_2292PKTINFO = 2
+IPV6_2292PKTOPTIONS = 6
+IPV6_2292RTHDR = 5
+IPV6_ADDRFORM = 1
+IPV6_ADD_MEMBERSHIP = 20
+IPV6_AUTHHDR = 10
+IPV6_CHECKSUM = 7
+IPV6_DROP_MEMBERSHIP = 21
+IPV6_DSTOPTS = 59
+IPV6_FLOWINFO = 11
+IPV6_HOPLIMIT = 52
+IPV6_HOPOPTS = 54
+IPV6_JOIN_ANYCAST = 27
+IPV6_LEAVE_ANYCAST = 28
+IPV6_MTU = 24
+IPV6_MTU_DISCOVER = 23
+IPV6_MULTICAST_HOPS = 18
+IPV6_MULTICAST_IF = 17
+IPV6_MULTICAST_LOOP = 19
+IPV6_RECVERR = 25
+IPV6_RECVPKTINFO = 49
+IPV6_ROUTER_ALERT = 22
+IPV6_RTHDR = 57
+IPV6_UNICAST_HOPS = 16
+IPV6_V6ONLY = 26
+IP_ADD_MEMBERSHIP = 35
+IP_ADD_SOURCE_MEMBERSHIP = 39
+IP_BIND_ADDRESS_NO_PORT = 24
+IP_BLOCK_SOURCE = 38
+IP_CHECKSUM = 23
+IP_DROP_MEMBERSHIP = 36
+IP_DROP_SOURCE_MEMBERSHIP = 40
+IP_FREEBIND = 15
+IP_HDRINCL = 3
+IP_IPSEC_POLICY = 16
+IP_MINTTL = 21
+IP_MSFILTER = 41
+IP_MTU = 14
+IP_MTU_DISCOVER = 10
+IP_MULTICAST_ALL = 49
+IP_MULTICAST_IF = 32
+IP_MULTICAST_LOOP = 34
+IP_MULTICAST_TTL = 33
+IP_NODEFRAG = 22
+IP_OPTIONS = 4
+IP_PASSSEC = 18
+IP_PKTINFO = 8
+IP_PKTOPTIONS = 9
+IP_PMTUDISC_DO = 2
+IP_PMTUDISC_DONT = 0
+IP_PMTUDISC_INTERFACE = 4
+IP_PMTUDISC_OMIT = 5
+IP_PMTUDISC_PROBE = 3
+IP_PMTUDISC_WANT = 1
+IP_RECVERR = 11
+IP_RECVOPTS = 6
+IP_RECVORIGDSTADDR = 20
+IP_RECVTOS = 13
+IP_RECVTTL = 12
+IP_RETOPTS = 7
+IP_ROUTER_ALERT = 5
+IP_TOS = 1
+IP_TRANSPARENT = 19
+IP_TTL = 2
+IP_UNBLOCK_SOURCE = 37
+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
+__NR_getsockopt = 340
+__NR_setsockopt = 339
diff --git a/sys/sctp.txt b/sys/socket_inet_sctp.txt
index b993c526f..e3bbdcb1a 100755
--- a/sys/sctp.txt
+++ b/sys/socket_inet_sctp.txt
@@ -1,6 +1,8 @@
-# Copyright 2015 syzkaller project authors. All rights reserved.
+# 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.
+# AF_INET and AF_INET6: SCTP support
+
include <linux/sctp.h>
include <asm/ioctls.h>
diff --git a/sys/socket_inet_sctp_amd64.const b/sys/socket_inet_sctp_amd64.const
new file mode 100644
index 000000000..920c8a073
--- /dev/null
+++ b/sys/socket_inet_sctp_amd64.const
@@ -0,0 +1,82 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_SCTP = 132
+SCTP_ABORT = 4
+SCTP_ADAPTATION_LAYER = 7
+SCTP_ADDR_OVER = 2
+SCTP_ASSOCINFO = 1
+SCTP_AUTH_ACTIVE_KEY = 24
+SCTP_AUTH_CHUNK = 21
+SCTP_AUTH_DELETE_KEY = 25
+SCTP_AUTH_KEY = 23
+SCTP_AUTOCLOSE = 4
+SCTP_AUTO_ASCONF = 30
+SCTP_CONTEXT = 17
+SCTP_DEFAULT_SEND_PARAM = 10
+SCTP_DEFAULT_SNDINFO = 34
+SCTP_DELAYED_SACK = 16
+SCTP_DISABLE_FRAGMENTS = 8
+SCTP_EOF = 512
+SCTP_EVENTS = 11
+SCTP_FRAGMENT_INTERLEAVE = 18
+SCTP_GET_ASSOC_ID_LIST = 29
+SCTP_GET_ASSOC_NUMBER = 28
+SCTP_GET_ASSOC_STATS = 112
+SCTP_GET_LOCAL_ADDRS = 109
+SCTP_GET_PEER_ADDRS = 108
+SCTP_GET_PEER_ADDR_INFO = 15
+SCTP_HMAC_IDENT = 22
+SCTP_INIT = 0
+SCTP_INITMSG = 2
+SCTP_I_WANT_MAPPED_V4_ADDR = 12
+SCTP_LOCAL_AUTH_CHUNKS = 27
+SCTP_MAXSEG = 13
+SCTP_MAX_BURST = 20
+SCTP_NODELAY = 3
+SCTP_PARTIAL_DELIVERY_POINT = 19
+SCTP_PEER_ADDR_PARAMS = 9
+SCTP_PEER_ADDR_THLDS = 31
+SCTP_PEER_AUTH_CHUNKS = 26
+SCTP_PRIMARY_ADDR = 6
+SCTP_RECVNXTINFO = 33
+SCTP_RECVRCVINFO = 32
+SCTP_RTOINFO = 0
+SCTP_SET_PEER_PRIMARY_ADDR = 5
+SCTP_SNDINFO = 2
+SCTP_SNDRCV = 1
+SCTP_SOCKOPT_BINDX_ADD = 100
+SCTP_SOCKOPT_BINDX_REM = 101
+SCTP_SOCKOPT_CONNECTX = 110
+SCTP_SOCKOPT_CONNECTX3 = 111
+SCTP_SOCKOPT_CONNECTX_OLD = 107
+SCTP_SOCKOPT_PEELOFF = 102
+SCTP_STATUS = 14
+SCTP_UNORDERED = 1
+SIOCINQ = 21531
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SCTP = 132
+SPP_HB_DEMAND = 4
+SPP_HB_DISABLE = 2
+SPP_HB_ENABLE = 1
+SPP_HB_TIME_IS_ZERO = 128
+SPP_PMTUD_DISABLE = 16
+SPP_PMTUD_ENABLE = 8
+SPP_SACKDELAY_DISABLE = 64
+SPP_SACKDELAY_ENABLE = 32
+__NR_accept = 43
+__NR_accept4 = 288
+__NR_bind = 49
+__NR_connect = 42
+__NR_getpeername = 52
+__NR_getsockname = 51
+__NR_getsockopt = 55
+__NR_ioctl = 16
+__NR_recvfrom = 45
+__NR_sendmmsg = 307
+__NR_sendmsg = 46
+__NR_sendto = 44
+__NR_setsockopt = 54
+__NR_socket = 41
+__NR_socketpair = 53
diff --git a/sys/socket_inet_sctp_arm64.const b/sys/socket_inet_sctp_arm64.const
new file mode 100644
index 000000000..145e44476
--- /dev/null
+++ b/sys/socket_inet_sctp_arm64.const
@@ -0,0 +1,82 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_SCTP = 132
+SCTP_ABORT = 4
+SCTP_ADAPTATION_LAYER = 7
+SCTP_ADDR_OVER = 2
+SCTP_ASSOCINFO = 1
+SCTP_AUTH_ACTIVE_KEY = 24
+SCTP_AUTH_CHUNK = 21
+SCTP_AUTH_DELETE_KEY = 25
+SCTP_AUTH_KEY = 23
+SCTP_AUTOCLOSE = 4
+SCTP_AUTO_ASCONF = 30
+SCTP_CONTEXT = 17
+SCTP_DEFAULT_SEND_PARAM = 10
+SCTP_DEFAULT_SNDINFO = 34
+SCTP_DELAYED_SACK = 16
+SCTP_DISABLE_FRAGMENTS = 8
+SCTP_EOF = 512
+SCTP_EVENTS = 11
+SCTP_FRAGMENT_INTERLEAVE = 18
+SCTP_GET_ASSOC_ID_LIST = 29
+SCTP_GET_ASSOC_NUMBER = 28
+SCTP_GET_ASSOC_STATS = 112
+SCTP_GET_LOCAL_ADDRS = 109
+SCTP_GET_PEER_ADDRS = 108
+SCTP_GET_PEER_ADDR_INFO = 15
+SCTP_HMAC_IDENT = 22
+SCTP_INIT = 0
+SCTP_INITMSG = 2
+SCTP_I_WANT_MAPPED_V4_ADDR = 12
+SCTP_LOCAL_AUTH_CHUNKS = 27
+SCTP_MAXSEG = 13
+SCTP_MAX_BURST = 20
+SCTP_NODELAY = 3
+SCTP_PARTIAL_DELIVERY_POINT = 19
+SCTP_PEER_ADDR_PARAMS = 9
+SCTP_PEER_ADDR_THLDS = 31
+SCTP_PEER_AUTH_CHUNKS = 26
+SCTP_PRIMARY_ADDR = 6
+SCTP_RECVNXTINFO = 33
+SCTP_RECVRCVINFO = 32
+SCTP_RTOINFO = 0
+SCTP_SET_PEER_PRIMARY_ADDR = 5
+SCTP_SNDINFO = 2
+SCTP_SNDRCV = 1
+SCTP_SOCKOPT_BINDX_ADD = 100
+SCTP_SOCKOPT_BINDX_REM = 101
+SCTP_SOCKOPT_CONNECTX = 110
+SCTP_SOCKOPT_CONNECTX3 = 111
+SCTP_SOCKOPT_CONNECTX_OLD = 107
+SCTP_SOCKOPT_PEELOFF = 102
+SCTP_STATUS = 14
+SCTP_UNORDERED = 1
+SIOCINQ = 21531
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SCTP = 132
+SPP_HB_DEMAND = 4
+SPP_HB_DISABLE = 2
+SPP_HB_ENABLE = 1
+SPP_HB_TIME_IS_ZERO = 128
+SPP_PMTUD_DISABLE = 16
+SPP_PMTUD_ENABLE = 8
+SPP_SACKDELAY_DISABLE = 64
+SPP_SACKDELAY_ENABLE = 32
+__NR_accept = 202
+__NR_accept4 = 242
+__NR_bind = 200
+__NR_connect = 203
+__NR_getpeername = 205
+__NR_getsockname = 204
+__NR_getsockopt = 209
+__NR_ioctl = 29
+__NR_recvfrom = 207
+__NR_sendmmsg = 269
+__NR_sendmsg = 211
+__NR_sendto = 206
+__NR_setsockopt = 208
+__NR_socket = 198
+__NR_socketpair = 199
diff --git a/sys/socket_inet_sctp_ppc64le.const b/sys/socket_inet_sctp_ppc64le.const
new file mode 100644
index 000000000..b90794f9a
--- /dev/null
+++ b/sys/socket_inet_sctp_ppc64le.const
@@ -0,0 +1,82 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_SCTP = 132
+SCTP_ABORT = 4
+SCTP_ADAPTATION_LAYER = 7
+SCTP_ADDR_OVER = 2
+SCTP_ASSOCINFO = 1
+SCTP_AUTH_ACTIVE_KEY = 24
+SCTP_AUTH_CHUNK = 21
+SCTP_AUTH_DELETE_KEY = 25
+SCTP_AUTH_KEY = 23
+SCTP_AUTOCLOSE = 4
+SCTP_AUTO_ASCONF = 30
+SCTP_CONTEXT = 17
+SCTP_DEFAULT_SEND_PARAM = 10
+SCTP_DEFAULT_SNDINFO = 34
+SCTP_DELAYED_SACK = 16
+SCTP_DISABLE_FRAGMENTS = 8
+SCTP_EOF = 512
+SCTP_EVENTS = 11
+SCTP_FRAGMENT_INTERLEAVE = 18
+SCTP_GET_ASSOC_ID_LIST = 29
+SCTP_GET_ASSOC_NUMBER = 28
+SCTP_GET_ASSOC_STATS = 112
+SCTP_GET_LOCAL_ADDRS = 109
+SCTP_GET_PEER_ADDRS = 108
+SCTP_GET_PEER_ADDR_INFO = 15
+SCTP_HMAC_IDENT = 22
+SCTP_INIT = 0
+SCTP_INITMSG = 2
+SCTP_I_WANT_MAPPED_V4_ADDR = 12
+SCTP_LOCAL_AUTH_CHUNKS = 27
+SCTP_MAXSEG = 13
+SCTP_MAX_BURST = 20
+SCTP_NODELAY = 3
+SCTP_PARTIAL_DELIVERY_POINT = 19
+SCTP_PEER_ADDR_PARAMS = 9
+SCTP_PEER_ADDR_THLDS = 31
+SCTP_PEER_AUTH_CHUNKS = 26
+SCTP_PRIMARY_ADDR = 6
+SCTP_RECVNXTINFO = 33
+SCTP_RECVRCVINFO = 32
+SCTP_RTOINFO = 0
+SCTP_SET_PEER_PRIMARY_ADDR = 5
+SCTP_SNDINFO = 2
+SCTP_SNDRCV = 1
+SCTP_SOCKOPT_BINDX_ADD = 100
+SCTP_SOCKOPT_BINDX_REM = 101
+SCTP_SOCKOPT_CONNECTX = 110
+SCTP_SOCKOPT_CONNECTX3 = 111
+SCTP_SOCKOPT_CONNECTX_OLD = 107
+SCTP_SOCKOPT_PEELOFF = 102
+SCTP_STATUS = 14
+SCTP_UNORDERED = 1
+SIOCINQ = 1074030207
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SCTP = 132
+SPP_HB_DEMAND = 4
+SPP_HB_DISABLE = 2
+SPP_HB_ENABLE = 1
+SPP_HB_TIME_IS_ZERO = 128
+SPP_PMTUD_DISABLE = 16
+SPP_PMTUD_ENABLE = 8
+SPP_SACKDELAY_DISABLE = 64
+SPP_SACKDELAY_ENABLE = 32
+__NR_accept = 330
+__NR_accept4 = 344
+__NR_bind = 327
+__NR_connect = 328
+__NR_getpeername = 332
+__NR_getsockname = 331
+__NR_getsockopt = 340
+__NR_ioctl = 54
+__NR_recvfrom = 337
+__NR_sendmmsg = 349
+__NR_sendmsg = 341
+__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
new file mode 100644
index 000000000..c4d8fdae9
--- /dev/null
+++ b/sys/socket_inet_tcp.txt
@@ -0,0 +1,49 @@
+# 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.
+
+# AF_INET and AF_INET6: TCP support
+
+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]])
+
+tcp_pair {
+ f0 sock_tcp
+ f1 sock_tcp
+}
+
+resource sock_tcp6[sock]
+
+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]])
+
+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
+
+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])
diff --git a/sys/socket_inet_tcp_amd64.const b/sys/socket_inet_tcp_amd64.const
new file mode 100644
index 000000000..9d58825e7
--- /dev/null
+++ b/sys/socket_inet_tcp_amd64.const
@@ -0,0 +1,29 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_TCP = 6
+SOCK_STREAM = 1
+TCP_CORK = 3
+TCP_DEFER_ACCEPT = 9
+TCP_INFO = 11
+TCP_KEEPCNT = 6
+TCP_KEEPIDLE = 4
+TCP_KEEPINTVL = 5
+TCP_LINGER2 = 8
+TCP_MAXSEG = 2
+TCP_NODELAY = 1
+TCP_QUICKACK = 12
+TCP_SYNCNT = 7
+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
new file mode 100644
index 000000000..f43649f49
--- /dev/null
+++ b/sys/socket_inet_tcp_arm64.const
@@ -0,0 +1,29 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_TCP = 6
+SOCK_STREAM = 1
+TCP_CORK = 3
+TCP_DEFER_ACCEPT = 9
+TCP_INFO = 11
+TCP_KEEPCNT = 6
+TCP_KEEPIDLE = 4
+TCP_KEEPINTVL = 5
+TCP_LINGER2 = 8
+TCP_MAXSEG = 2
+TCP_NODELAY = 1
+TCP_QUICKACK = 12
+TCP_SYNCNT = 7
+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
new file mode 100644
index 000000000..c82d7ed3d
--- /dev/null
+++ b/sys/socket_inet_tcp_ppc64le.const
@@ -0,0 +1,29 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+AF_INET6 = 10
+IPPROTO_TCP = 6
+SOCK_STREAM = 1
+TCP_CORK = 3
+TCP_DEFER_ACCEPT = 9
+TCP_INFO = 11
+TCP_KEEPCNT = 6
+TCP_KEEPIDLE = 4
+TCP_KEEPINTVL = 5
+TCP_LINGER2 = 8
+TCP_MAXSEG = 2
+TCP_NODELAY = 1
+TCP_QUICKACK = 12
+TCP_SYNCNT = 7
+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
new file mode 100644
index 000000000..20151fdd2
--- /dev/null
+++ b/sys/socket_inet_udp.txt
@@ -0,0 +1,45 @@
+# 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.
+
+# AF_INET and AF_INET6: UDP support
+
+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]])
+
+udp_pair {
+ f0 sock_udp
+ f1 sock_udp
+}
+
+resource sock_udp6[sock]
+
+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]])
+
+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])
diff --git a/sys/socket_inet_udp_amd64.const b/sys/socket_inet_udp_amd64.const
new file mode 100644
index 000000000..2357f1ca3
--- /dev/null
+++ b/sys/socket_inet_udp_amd64.const
@@ -0,0 +1,18 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+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
+__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
new file mode 100644
index 000000000..bea5eb77c
--- /dev/null
+++ b/sys/socket_inet_udp_arm64.const
@@ -0,0 +1,18 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+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
+__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
new file mode 100644
index 000000000..2cccf51da
--- /dev/null
+++ b/sys/socket_inet_udp_ppc64le.const
@@ -0,0 +1,18 @@
+# AUTOGENERATED FILE
+AF_INET = 2
+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
+__NR_getsockopt = 340
+__NR_recvfrom = 337
+__NR_sendto = 335
+__NR_setsockopt = 339
+__NR_socket = 326
+__NR_socketpair = 333
diff --git a/sys/kcm.txt b/sys/socket_kcm.txt
index feb7eb80c..feb7eb80c 100755
--- a/sys/kcm.txt
+++ b/sys/socket_kcm.txt
diff --git a/sys/socket_kcm_amd64.const b/sys/socket_kcm_amd64.const
new file mode 100644
index 000000000..5abfdf57c
--- /dev/null
+++ b/sys/socket_kcm_amd64.const
@@ -0,0 +1,16 @@
+# AUTOGENERATED FILE
+AF_KCM = 41
+KCMPROTO_CONNECTED = 0
+KCM_RECV_DISABLE = 1
+SIOCKCMATTACH = 35296
+SIOCKCMCLONE = 35298
+SIOCKCMUNATTACH = 35297
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOL_KCM = 281
+__NR_getsockopt = 55
+__NR_ioctl = 16
+__NR_recvmsg = 47
+__NR_sendmsg = 46
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_kcm_arm64.const b/sys/socket_kcm_arm64.const
new file mode 100644
index 000000000..518eb36db
--- /dev/null
+++ b/sys/socket_kcm_arm64.const
@@ -0,0 +1,16 @@
+# AUTOGENERATED FILE
+AF_KCM = 41
+KCMPROTO_CONNECTED = 0
+KCM_RECV_DISABLE = 1
+SIOCKCMATTACH = 35296
+SIOCKCMCLONE = 35298
+SIOCKCMUNATTACH = 35297
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOL_KCM = 281
+__NR_getsockopt = 209
+__NR_ioctl = 29
+__NR_recvmsg = 212
+__NR_sendmsg = 211
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_kcm_ppc64le.const b/sys/socket_kcm_ppc64le.const
new file mode 100644
index 000000000..89120128d
--- /dev/null
+++ b/sys/socket_kcm_ppc64le.const
@@ -0,0 +1,16 @@
+# AUTOGENERATED FILE
+AF_KCM = 41
+KCMPROTO_CONNECTED = 0
+KCM_RECV_DISABLE = 1
+SIOCKCMATTACH = 35296
+SIOCKCMCLONE = 35298
+SIOCKCMUNATTACH = 35297
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOL_KCM = 281
+__NR_getsockopt = 340
+__NR_ioctl = 54
+__NR_recvmsg = 342
+__NR_sendmsg = 341
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/socket_key.txt b/sys/socket_key.txt
new file mode 100644
index 000000000..1d1ab0cb0
--- /dev/null
+++ b/sys/socket_key.txt
@@ -0,0 +1,13 @@
+# 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.
+
+# AF_KEY support.
+
+include <linux/socket.h>
+include <linux/net.h>
+include <uapi/linux/pfkeyv2.h>
+
+resource sock_key[sock]
+
+# See net/key/af_key.c, requires root.
+# socket$key(domain const[AF_KEY], type const[SOCK_RAW], proto const[PF_KEY_V2]) sock_key
diff --git a/sys/socket_key_amd64.const b/sys/socket_key_amd64.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/socket_key_amd64.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/socket_key_arm64.const b/sys/socket_key_arm64.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/socket_key_arm64.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/socket_key_ppc64le.const b/sys/socket_key_ppc64le.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/socket_key_ppc64le.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/netlink.txt b/sys/socket_netlink.txt
index dddd14954..c58807fb5 100644
--- a/sys/netlink.txt
+++ b/sys/socket_netlink.txt
@@ -1,6 +1,8 @@
-# Copyright 2015 syzkaller project authors. All rights reserved.
+# 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.
+# AF_NETLINK support.
+
include <linux/net.h>
include <uapi/linux/netlink.h>
diff --git a/sys/socket_netlink_amd64.const b/sys/socket_netlink_amd64.const
new file mode 100644
index 000000000..bd9793acd
--- /dev/null
+++ b/sys/socket_netlink_amd64.const
@@ -0,0 +1,59 @@
+# AUTOGENERATED FILE
+AF_NETLINK = 16
+AF_UNSPEC = 0
+NETLINK_ADD_MEMBERSHIP = 1
+NETLINK_AUDIT = 9
+NETLINK_BROADCAST_ERROR = 4
+NETLINK_CAP_ACK = 10
+NETLINK_CONNECTOR = 11
+NETLINK_CRYPTO = 21
+NETLINK_DNRTMSG = 14
+NETLINK_DROP_MEMBERSHIP = 2
+NETLINK_ECRYPTFS = 19
+NETLINK_FIB_LOOKUP = 10
+NETLINK_FIREWALL = 3
+NETLINK_GENERIC = 16
+NETLINK_INET_DIAG = 4
+NETLINK_IP6_FW = 13
+NETLINK_ISCSI = 8
+NETLINK_KOBJECT_UEVENT = 15
+NETLINK_LISTEN_ALL_NSID = 8
+NETLINK_LIST_MEMBERSHIPS = 9
+NETLINK_NETFILTER = 12
+NETLINK_NFLOG = 5
+NETLINK_NO_ENOBUFS = 5
+NETLINK_PKTINFO = 3
+NETLINK_RDMA = 20
+NETLINK_ROUTE = 0
+NETLINK_RX_RING = 6
+NETLINK_SCSITRANSPORT = 18
+NETLINK_SELINUX = 7
+NETLINK_SOCK_DIAG = 4
+NETLINK_TX_RING = 7
+NETLINK_UNUSED = 1
+NETLINK_USERSOCK = 2
+NETLINK_XFRM = 6
+NLM_F_ACK = 4
+NLM_F_APPEND = 2048
+NLM_F_ATOMIC = 1024
+NLM_F_CREATE = 1024
+NLM_F_DUMP = 768
+NLM_F_DUMP_FILTERED = 32
+NLM_F_DUMP_INTR = 16
+NLM_F_ECHO = 8
+NLM_F_EXCL = 512
+NLM_F_MATCH = 512
+NLM_F_MULTI = 2
+NLM_F_REPLACE = 256
+NLM_F_REQUEST = 1
+NLM_F_ROOT = 256
+SOCK_RAW = 3
+SOL_NETLINK = 270
+__NR_bind = 49
+__NR_connect = 42
+__NR_getpeername = 52
+__NR_getsockname = 51
+__NR_getsockopt = 55
+__NR_sendmsg = 46
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_netlink_arm64.const b/sys/socket_netlink_arm64.const
new file mode 100644
index 000000000..6e21dcae1
--- /dev/null
+++ b/sys/socket_netlink_arm64.const
@@ -0,0 +1,59 @@
+# AUTOGENERATED FILE
+AF_NETLINK = 16
+AF_UNSPEC = 0
+NETLINK_ADD_MEMBERSHIP = 1
+NETLINK_AUDIT = 9
+NETLINK_BROADCAST_ERROR = 4
+NETLINK_CAP_ACK = 10
+NETLINK_CONNECTOR = 11
+NETLINK_CRYPTO = 21
+NETLINK_DNRTMSG = 14
+NETLINK_DROP_MEMBERSHIP = 2
+NETLINK_ECRYPTFS = 19
+NETLINK_FIB_LOOKUP = 10
+NETLINK_FIREWALL = 3
+NETLINK_GENERIC = 16
+NETLINK_INET_DIAG = 4
+NETLINK_IP6_FW = 13
+NETLINK_ISCSI = 8
+NETLINK_KOBJECT_UEVENT = 15
+NETLINK_LISTEN_ALL_NSID = 8
+NETLINK_LIST_MEMBERSHIPS = 9
+NETLINK_NETFILTER = 12
+NETLINK_NFLOG = 5
+NETLINK_NO_ENOBUFS = 5
+NETLINK_PKTINFO = 3
+NETLINK_RDMA = 20
+NETLINK_ROUTE = 0
+NETLINK_RX_RING = 6
+NETLINK_SCSITRANSPORT = 18
+NETLINK_SELINUX = 7
+NETLINK_SOCK_DIAG = 4
+NETLINK_TX_RING = 7
+NETLINK_UNUSED = 1
+NETLINK_USERSOCK = 2
+NETLINK_XFRM = 6
+NLM_F_ACK = 4
+NLM_F_APPEND = 2048
+NLM_F_ATOMIC = 1024
+NLM_F_CREATE = 1024
+NLM_F_DUMP = 768
+NLM_F_DUMP_FILTERED = 32
+NLM_F_DUMP_INTR = 16
+NLM_F_ECHO = 8
+NLM_F_EXCL = 512
+NLM_F_MATCH = 512
+NLM_F_MULTI = 2
+NLM_F_REPLACE = 256
+NLM_F_REQUEST = 1
+NLM_F_ROOT = 256
+SOCK_RAW = 3
+SOL_NETLINK = 270
+__NR_bind = 200
+__NR_connect = 203
+__NR_getpeername = 205
+__NR_getsockname = 204
+__NR_getsockopt = 209
+__NR_sendmsg = 211
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_netlink_ppc64le.const b/sys/socket_netlink_ppc64le.const
new file mode 100644
index 000000000..dd73dbd3e
--- /dev/null
+++ b/sys/socket_netlink_ppc64le.const
@@ -0,0 +1,59 @@
+# AUTOGENERATED FILE
+AF_NETLINK = 16
+AF_UNSPEC = 0
+NETLINK_ADD_MEMBERSHIP = 1
+NETLINK_AUDIT = 9
+NETLINK_BROADCAST_ERROR = 4
+NETLINK_CAP_ACK = 10
+NETLINK_CONNECTOR = 11
+NETLINK_CRYPTO = 21
+NETLINK_DNRTMSG = 14
+NETLINK_DROP_MEMBERSHIP = 2
+NETLINK_ECRYPTFS = 19
+NETLINK_FIB_LOOKUP = 10
+NETLINK_FIREWALL = 3
+NETLINK_GENERIC = 16
+NETLINK_INET_DIAG = 4
+NETLINK_IP6_FW = 13
+NETLINK_ISCSI = 8
+NETLINK_KOBJECT_UEVENT = 15
+NETLINK_LISTEN_ALL_NSID = 8
+NETLINK_LIST_MEMBERSHIPS = 9
+NETLINK_NETFILTER = 12
+NETLINK_NFLOG = 5
+NETLINK_NO_ENOBUFS = 5
+NETLINK_PKTINFO = 3
+NETLINK_RDMA = 20
+NETLINK_ROUTE = 0
+NETLINK_RX_RING = 6
+NETLINK_SCSITRANSPORT = 18
+NETLINK_SELINUX = 7
+NETLINK_SOCK_DIAG = 4
+NETLINK_TX_RING = 7
+NETLINK_UNUSED = 1
+NETLINK_USERSOCK = 2
+NETLINK_XFRM = 6
+NLM_F_ACK = 4
+NLM_F_APPEND = 2048
+NLM_F_ATOMIC = 1024
+NLM_F_CREATE = 1024
+NLM_F_DUMP = 768
+NLM_F_DUMP_FILTERED = 32
+NLM_F_DUMP_INTR = 16
+NLM_F_ECHO = 8
+NLM_F_EXCL = 512
+NLM_F_MATCH = 512
+NLM_F_MULTI = 2
+NLM_F_REPLACE = 256
+NLM_F_REQUEST = 1
+NLM_F_ROOT = 256
+SOCK_RAW = 3
+SOL_NETLINK = 270
+__NR_bind = 327
+__NR_connect = 328
+__NR_getpeername = 332
+__NR_getsockname = 331
+__NR_getsockopt = 340
+__NR_sendmsg = 341
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/netrom.txt b/sys/socket_netrom.txt
index d346e85d0..d346e85d0 100755
--- a/sys/netrom.txt
+++ b/sys/socket_netrom.txt
diff --git a/sys/socket_netrom_amd64.const b/sys/socket_netrom_amd64.const
new file mode 100644
index 000000000..2474fe63f
--- /dev/null
+++ b/sys/socket_netrom_amd64.const
@@ -0,0 +1,27 @@
+# AUTOGENERATED FILE
+AF_NETROM = 6
+AX25_MAX_DIGIS = 8
+NETROM_IDLE = 7
+NETROM_N2 = 3
+NETROM_T1 = 1
+NETROM_T2 = 2
+NETROM_T4 = 6
+SIOCADDRT = 35083
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_SEQPACKET = 5
+SOL_NETROM = 259
+TIOCINQ = 21531
+TIOCOUTQ = 21521
+__NR_accept = 43
+__NR_bind = 49
+__NR_connect = 42
+__NR_getpeername = 52
+__NR_getsockname = 51
+__NR_getsockopt = 55
+__NR_ioctl = 16
+__NR_listen = 50
+__NR_recvmsg = 47
+__NR_sendmsg = 46
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_netrom_arm64.const b/sys/socket_netrom_arm64.const
new file mode 100644
index 000000000..1ecee7cdc
--- /dev/null
+++ b/sys/socket_netrom_arm64.const
@@ -0,0 +1,27 @@
+# AUTOGENERATED FILE
+AF_NETROM = 6
+AX25_MAX_DIGIS = 8
+NETROM_IDLE = 7
+NETROM_N2 = 3
+NETROM_T1 = 1
+NETROM_T2 = 2
+NETROM_T4 = 6
+SIOCADDRT = 35083
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_SEQPACKET = 5
+SOL_NETROM = 259
+TIOCINQ = 21531
+TIOCOUTQ = 21521
+__NR_accept = 202
+__NR_bind = 200
+__NR_connect = 203
+__NR_getpeername = 205
+__NR_getsockname = 204
+__NR_getsockopt = 209
+__NR_ioctl = 29
+__NR_listen = 201
+__NR_recvmsg = 212
+__NR_sendmsg = 211
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_netrom_ppc64le.const b/sys/socket_netrom_ppc64le.const
new file mode 100644
index 000000000..322abdf38
--- /dev/null
+++ b/sys/socket_netrom_ppc64le.const
@@ -0,0 +1,27 @@
+# AUTOGENERATED FILE
+AF_NETROM = 6
+AX25_MAX_DIGIS = 8
+NETROM_IDLE = 7
+NETROM_N2 = 3
+NETROM_T1 = 1
+NETROM_T2 = 2
+NETROM_T4 = 6
+SIOCADDRT = 35083
+SIOCGSTAMP = 35078
+SIOCGSTAMPNS = 35079
+SOCK_SEQPACKET = 5
+SOL_NETROM = 259
+TIOCINQ = 1074030207
+TIOCOUTQ = 1074033779
+__NR_accept = 330
+__NR_bind = 327
+__NR_connect = 328
+__NR_getpeername = 332
+__NR_getsockname = 331
+__NR_getsockopt = 340
+__NR_ioctl = 54
+__NR_listen = 329
+__NR_recvmsg = 342
+__NR_sendmsg = 341
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/socket_nfc.txt b/sys/socket_nfc.txt
new file mode 100644
index 000000000..db388f49e
--- /dev/null
+++ b/sys/socket_nfc.txt
@@ -0,0 +1,58 @@
+# 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.
+
+# AF_NFC support.
+
+include <linux/socket.h>
+include <linux/net.h>
+include <uapi/linux/nfc.h>
+
+resource sock_nfc_llcp[sock]
+
+socket$nfc_llcp(domain const[AF_NFC], type flags[nfc_llcp_type], proto const[NFC_SOCKPROTO_LLCP]) sock_nfc_llcp
+bind$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr])
+connect$nfc_llcp(fd sock_nfc_llcp, addr ptr[in, sockaddr_nfc_llcp], addrlen len[addr])
+accept$nfc_llcp(fd sock_nfc_llcp, peer ptr[out, sockaddr_nfc_llcp, opt], peerlen ptr[inout, len[peer, int32]]) sock_nfc_llcp
+setsockopt$NFC_LLCP_RW(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_RW], arg ptr[in, int32], arglen len[arg])
+setsockopt$NFC_LLCP_MIUX(fd sock_nfc_llcp, level const[SOL_NFC], opt const[NFC_LLCP_MIUX], arg ptr[in, int32], arglen len[arg])
+getsockopt$nfc_llcp(fd sock_nfc_llcp, level const[SOL_NFC], opt flags[nfc_llcp_opts], arg buffer[out], arglen len[arg])
+sendmsg$nfc_llcp(fd sock_nfc_llcp, msg ptr[in, nfc_llcp_send_msghdr], f flags[send_flags])
+sendmmsg$nfc_llcp(fd sock_nfc_llcp, mmsg ptr[in, array[nfc_llcp_send_msghdr]], vlen len[mmsg], f flags[send_flags])
+
+resource sock_nfc_raw[sock]
+
+socket$nfc_raw(domain const[AF_NFC], type flags[nfc_raw_type], proto const[NFC_SOCKPROTO_RAW]) sock_nfc_raw
+connect$nfc_raw(fd sock_nfc_raw, addr ptr[in, sockaddr_nfc], addrlen len[addr])
+
+nfc_llcp_type = SOCK_STREAM, SOCK_DGRAM, SOCK_RAW
+nfc_raw_type = SOCK_STREAM, SOCK_RAW
+nfc_proto = NFC_PROTO_JEWEL, NFC_PROTO_MIFARE, NFC_PROTO_FELICA, NFC_PROTO_ISO14443, NFC_PROTO_NFC_DEP, NFC_PROTO_ISO14443_B, NFC_PROTO_ISO15693
+nfc_llcp_opts = NFC_LLCP_RW, NFC_LLCP_MIUX, NFC_LLCP_REMOTE_MIU, NFC_LLCP_REMOTE_LTO, NFC_LLCP_REMOTE_RW
+
+sockaddr_nfc_llcp {
+ family const[AF_NFC, int16]
+ devidx int32
+ target int32
+ proto flags[nfc_proto, int32]
+ dsap int8
+ ssap int8
+ serv array[int8, 63]
+ servlen intptr
+}
+
+sockaddr_nfc {
+ family const[AF_NFC, int16]
+ dev int32
+ targ int32
+ proto flags[nfc_proto, int32]
+}
+
+nfc_llcp_send_msghdr {
+ addr ptr[in, sockaddr_nfc_llcp]
+ addrlen len[addr, int32]
+ vec ptr[in, array[iovec_in]]
+ vlen len[vec, intptr]
+ ctrl ptr[in, cmsghdr]
+ ctrllen len[ctrl, intptr]
+ f flags[send_flags, int32]
+}
diff --git a/sys/socket_nfc_amd64.const b/sys/socket_nfc_amd64.const
new file mode 100644
index 000000000..a3957eb8d
--- /dev/null
+++ b/sys/socket_nfc_amd64.const
@@ -0,0 +1,28 @@
+# AUTOGENERATED FILE
+AF_NFC = 39
+NFC_LLCP_MIUX = 1
+NFC_LLCP_REMOTE_LTO = 3
+NFC_LLCP_REMOTE_MIU = 2
+NFC_LLCP_REMOTE_RW = 4
+NFC_LLCP_RW = 0
+NFC_PROTO_FELICA = 3
+NFC_PROTO_ISO14443 = 4
+NFC_PROTO_ISO14443_B = 6
+NFC_PROTO_ISO15693 = 7
+NFC_PROTO_JEWEL = 1
+NFC_PROTO_MIFARE = 2
+NFC_PROTO_NFC_DEP = 5
+NFC_SOCKPROTO_LLCP = 1
+NFC_SOCKPROTO_RAW = 0
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_STREAM = 1
+SOL_NFC = 280
+__NR_accept = 43
+__NR_bind = 49
+__NR_connect = 42
+__NR_getsockopt = 55
+__NR_sendmmsg = 307
+__NR_sendmsg = 46
+__NR_setsockopt = 54
+__NR_socket = 41
diff --git a/sys/socket_nfc_arm64.const b/sys/socket_nfc_arm64.const
new file mode 100644
index 000000000..72a209079
--- /dev/null
+++ b/sys/socket_nfc_arm64.const
@@ -0,0 +1,28 @@
+# AUTOGENERATED FILE
+AF_NFC = 39
+NFC_LLCP_MIUX = 1
+NFC_LLCP_REMOTE_LTO = 3
+NFC_LLCP_REMOTE_MIU = 2
+NFC_LLCP_REMOTE_RW = 4
+NFC_LLCP_RW = 0
+NFC_PROTO_FELICA = 3
+NFC_PROTO_ISO14443 = 4
+NFC_PROTO_ISO14443_B = 6
+NFC_PROTO_ISO15693 = 7
+NFC_PROTO_JEWEL = 1
+NFC_PROTO_MIFARE = 2
+NFC_PROTO_NFC_DEP = 5
+NFC_SOCKPROTO_LLCP = 1
+NFC_SOCKPROTO_RAW = 0
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_STREAM = 1
+SOL_NFC = 280
+__NR_accept = 202
+__NR_bind = 200
+__NR_connect = 203
+__NR_getsockopt = 209
+__NR_sendmmsg = 269
+__NR_sendmsg = 211
+__NR_setsockopt = 208
+__NR_socket = 198
diff --git a/sys/socket_nfc_ppc64le.const b/sys/socket_nfc_ppc64le.const
new file mode 100644
index 000000000..dcd7dfe1e
--- /dev/null
+++ b/sys/socket_nfc_ppc64le.const
@@ -0,0 +1,28 @@
+# AUTOGENERATED FILE
+AF_NFC = 39
+NFC_LLCP_MIUX = 1
+NFC_LLCP_REMOTE_LTO = 3
+NFC_LLCP_REMOTE_MIU = 2
+NFC_LLCP_REMOTE_RW = 4
+NFC_LLCP_RW = 0
+NFC_PROTO_FELICA = 3
+NFC_PROTO_ISO14443 = 4
+NFC_PROTO_ISO14443_B = 6
+NFC_PROTO_ISO15693 = 7
+NFC_PROTO_JEWEL = 1
+NFC_PROTO_MIFARE = 2
+NFC_PROTO_NFC_DEP = 5
+NFC_SOCKPROTO_LLCP = 1
+NFC_SOCKPROTO_RAW = 0
+SOCK_DGRAM = 2
+SOCK_RAW = 3
+SOCK_STREAM = 1
+SOL_NFC = 280
+__NR_accept = 330
+__NR_bind = 327
+__NR_connect = 328
+__NR_getsockopt = 340
+__NR_sendmmsg = 349
+__NR_sendmsg = 341
+__NR_setsockopt = 339
+__NR_socket = 326
diff --git a/sys/socket_ppc64le.const b/sys/socket_ppc64le.const
index 813d52854..f563a1729 100644
--- a/sys/socket_ppc64le.const
+++ b/sys/socket_ppc64le.const
@@ -1,188 +1,14 @@
# AUTOGENERATED FILE
-AF_ALG = 38
AF_APPLETALK = 5
AF_ATMPVC = 8
AF_AX25 = 3
-AF_BLUETOOTH = 31
AF_INET = 2
AF_INET6 = 10
AF_IPX = 4
AF_NETLINK = 16
-AF_NFC = 39
AF_PACKET = 17
AF_UNIX = 1
-AF_UNSPEC = 0
AF_X25 = 9
-ALG_SET_AEAD_ASSOCLEN = 4
-ALG_SET_AEAD_AUTHSIZE = 5
-ALG_SET_IV = 2
-ALG_SET_KEY = 1
-ALG_SET_OP = 3
-BNEPCONNADD = 2147762888
-BNEPCONNDEL = 2147762889
-BNEPGETCONNINFO = 1074021075
-BNEPGETCONNLIST = 1074021074
-BNEPGETSUPPFEAT = 1074021076
-BTPROTO_BNEP = 4
-BTPROTO_CMTP = 5
-BTPROTO_HCI = 1
-BTPROTO_HIDP = 6
-BTPROTO_L2CAP = 0
-BTPROTO_RFCOMM = 3
-BTPROTO_SCO = 2
-BT_CHANNEL_POLICY = 10
-BT_DEFER_SETUP = 7
-BT_FLUSHABLE = 8
-BT_POWER = 9
-BT_RCVMTU = 13
-BT_SECURITY = 4
-BT_SNDMTU = 12
-BT_VOICE = 11
-CMTPCONNADD = 2147763144
-CMTPCONNDEL = 2147763145
-CMTPGETCONNINFO = 1074021331
-CMTPGETCONNLIST = 1074021330
-CRYPTO_ALG_ASYNC = 128
-CRYPTO_ALG_DEAD = 32
-CRYPTO_ALG_DYING = 64
-CRYPTO_ALG_GENIV = 512
-CRYPTO_ALG_INSTANCE = 2048
-CRYPTO_ALG_INTERNAL = 8192
-CRYPTO_ALG_KERN_DRIVER_ONLY = 4096
-CRYPTO_ALG_LARVAL = 16
-CRYPTO_ALG_NEED_FALLBACK = 256
-CRYPTO_ALG_TESTED = 1024
-CRYPTO_ALG_TYPE_ABLKCIPHER = 5
-CRYPTO_ALG_TYPE_AEAD = 3
-CRYPTO_ALG_TYPE_AHASH = 15
-CRYPTO_ALG_TYPE_AKCIPHER = 13
-CRYPTO_ALG_TYPE_BLKCIPHER = 4
-CRYPTO_ALG_TYPE_CIPHER = 1
-CRYPTO_ALG_TYPE_COMPRESS = 2
-CRYPTO_ALG_TYPE_DIGEST = 14
-CRYPTO_ALG_TYPE_GIVCIPHER = 6
-CRYPTO_ALG_TYPE_HASH = 14
-CRYPTO_ALG_TYPE_MASK = 15
-CRYPTO_ALG_TYPE_PCOMPRESS = 15
-CRYPTO_ALG_TYPE_RNG = 12
-CRYPTO_ALG_TYPE_SHASH = 14
-HCIBLOCKADDR = 2147764454
-HCIDEVDOWN = 2147764426
-HCIDEVRESET = 2147764427
-HCIDEVRESTAT = 2147764428
-HCIDEVUP = 2147764425
-HCIGETAUTHINFO = 1074022615
-HCIGETCONNINFO = 1074022613
-HCIGETCONNLIST = 1074022612
-HCIGETDEVINFO = 1074022611
-HCIGETDEVLIST = 1074022610
-HCIINQUIRY = 1074022640
-HCISETACLMTU = 2147764451
-HCISETAUTH = 2147764446
-HCISETENCRYPT = 2147764447
-HCISETLINKMODE = 2147764450
-HCISETLINKPOL = 2147764449
-HCISETPTYPE = 2147764448
-HCISETRAW = 2147764444
-HCISETSCAN = 2147764445
-HCISETSCOMTU = 2147764452
-HCIUNBLOCKADDR = 2147764455
-HCI_CHANNEL_CONTROL = 3
-HCI_CHANNEL_MONITOR = 2
-HCI_CHANNEL_RAW = 0
-HCI_CHANNEL_USER = 1
-HCI_DATA_DIR = 1
-HCI_FILTER = 2
-HCI_TIME_STAMP = 3
-HIDPCONNADD = 2147764424
-HIDPCONNDEL = 2147764425
-HIDPGETCONNINFO = 1074022611
-HIDPGETCONNLIST = 1074022610
-IPPROTO_ICMP = 1
-IPPROTO_IP = 0
-IPPROTO_IPV6 = 41
-IPPROTO_TCP = 6
-IPPROTO_UDP = 17
-IPV6_2292DSTOPTS = 4
-IPV6_2292HOPLIMIT = 8
-IPV6_2292HOPOPTS = 3
-IPV6_2292PKTINFO = 2
-IPV6_2292PKTOPTIONS = 6
-IPV6_2292RTHDR = 5
-IPV6_ADDRFORM = 1
-IPV6_ADD_MEMBERSHIP = 20
-IPV6_AUTHHDR = 10
-IPV6_CHECKSUM = 7
-IPV6_DROP_MEMBERSHIP = 21
-IPV6_DSTOPTS = 59
-IPV6_FLOWINFO = 11
-IPV6_HOPLIMIT = 52
-IPV6_HOPOPTS = 54
-IPV6_JOIN_ANYCAST = 27
-IPV6_LEAVE_ANYCAST = 28
-IPV6_MTU = 24
-IPV6_MTU_DISCOVER = 23
-IPV6_MULTICAST_HOPS = 18
-IPV6_MULTICAST_IF = 17
-IPV6_MULTICAST_LOOP = 19
-IPV6_RECVERR = 25
-IPV6_RECVPKTINFO = 49
-IPV6_ROUTER_ALERT = 22
-IPV6_RTHDR = 57
-IPV6_UNICAST_HOPS = 16
-IPV6_V6ONLY = 26
-IP_ADD_MEMBERSHIP = 35
-IP_ADD_SOURCE_MEMBERSHIP = 39
-IP_BIND_ADDRESS_NO_PORT = 24
-IP_BLOCK_SOURCE = 38
-IP_CHECKSUM = 23
-IP_DROP_MEMBERSHIP = 36
-IP_DROP_SOURCE_MEMBERSHIP = 40
-IP_FREEBIND = 15
-IP_HDRINCL = 3
-IP_IPSEC_POLICY = 16
-IP_MINTTL = 21
-IP_MSFILTER = 41
-IP_MTU = 14
-IP_MTU_DISCOVER = 10
-IP_MULTICAST_ALL = 49
-IP_MULTICAST_IF = 32
-IP_MULTICAST_LOOP = 34
-IP_MULTICAST_TTL = 33
-IP_NODEFRAG = 22
-IP_OPTIONS = 4
-IP_PASSSEC = 18
-IP_PKTINFO = 8
-IP_PKTOPTIONS = 9
-IP_PMTUDISC_DO = 2
-IP_PMTUDISC_DONT = 0
-IP_PMTUDISC_INTERFACE = 4
-IP_PMTUDISC_OMIT = 5
-IP_PMTUDISC_PROBE = 3
-IP_PMTUDISC_WANT = 1
-IP_RECVERR = 11
-IP_RECVOPTS = 6
-IP_RECVORIGDSTADDR = 20
-IP_RECVTOS = 13
-IP_RECVTTL = 12
-IP_RETOPTS = 7
-IP_ROUTER_ALERT = 5
-IP_TOS = 1
-IP_TRANSPARENT = 19
-IP_TTL = 2
-IP_UNBLOCK_SOURCE = 37
-L2CAP_CONNINFO = 2
-L2CAP_LM = 3
-L2CAP_LM_AUTH = 2
-L2CAP_LM_ENCRYPT = 4
-L2CAP_LM_FIPS = 64
-L2CAP_LM_MASTER = 1
-L2CAP_LM_RELIABLE = 16
-L2CAP_LM_SECURE = 32
-L2CAP_LM_TRUSTED = 8
-L2CAP_OPTIONS = 1
-MCAST_EXCLUDE = 0
-MCAST_INCLUDE = 1
MSG_BATCH = 262144
MSG_CMSG_CLOEXEC = 1073741824
MSG_CONFIRM = 2048
@@ -199,30 +25,8 @@ MSG_PROBE = 16
MSG_TRUNC = 32
MSG_WAITALL = 256
MSG_WAITFORONE = 65536
-NFC_LLCP_MIUX = 1
-NFC_LLCP_REMOTE_LTO = 3
-NFC_LLCP_REMOTE_MIU = 2
-NFC_LLCP_REMOTE_RW = 4
-NFC_LLCP_RW = 0
-NFC_PROTO_FELICA = 3
-NFC_PROTO_ISO14443 = 4
-NFC_PROTO_ISO14443_B = 6
-NFC_PROTO_ISO15693 = 7
-NFC_PROTO_JEWEL = 1
-NFC_PROTO_MIFARE = 2
-NFC_PROTO_NFC_DEP = 5
-NFC_SOCKPROTO_LLCP = 1
-NFC_SOCKPROTO_RAW = 0
-RFCOMM_CONNINFO = 2
-RFCOMM_LM = 3
-SCM_CREDENTIALS = 2
-SCM_RIGHTS = 1
-SCO_CONNINFO = 2
-SCO_OPTIONS = 1
SHUT_RD = 0
SHUT_WR = 1
-SIOCGSTAMP = 35078
-SIOCGSTAMPNS = 35079
SIOCINQ = 1074030207
SIOCOUTQ = 1074033779
SOCK_CLOEXEC = 524288
@@ -245,43 +49,7 @@ 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_L2CAP = 6
-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_RFCOMM = 18
-SOL_ROSE = 260
-SOL_RXRPC = 272
-SOL_SCO = 17
-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
@@ -327,21 +95,6 @@ SO_TIMESTAMPING = 37
SO_TIMESTAMPNS = 35
SO_TYPE = 3
SO_WIFI_STATUS = 41
-TCP_CORK = 3
-TCP_DEFER_ACCEPT = 9
-TCP_INFO = 11
-TCP_KEEPCNT = 6
-TCP_KEEPIDLE = 4
-TCP_KEEPINTVL = 5
-TCP_LINGER2 = 8
-TCP_MAXSEG = 2
-TCP_NODELAY = 1
-TCP_QUICKACK = 12
-TCP_SYNCNT = 7
-TCP_WINDOW_CLAMP = 10
-TIOCINQ = 1074030207
-TIOCOUTQ = 1074033779
-UDP_CORK = 1
__NR_accept = 330
__NR_accept4 = 344
__NR_bind = 327
diff --git a/sys/socket_unix.txt b/sys/socket_unix.txt
new file mode 100644
index 000000000..b5eed9483
--- /dev/null
+++ b/sys/socket_unix.txt
@@ -0,0 +1,78 @@
+# 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.
+
+# AF_UNIX support.
+
+include <linux/socket.h>
+include <linux/net.h>
+
+resource sock_unix[sock]
+
+socket$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0]) sock_unix
+socketpair$unix(domain const[AF_UNIX], type flags[unix_socket_type], proto const[0], fds ptr[out, unix_pair])
+bind$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
+connect$unix(fd sock_unix, addr ptr[in, sockaddr_un], addrlen len[addr])
+accept$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]]) sock_unix
+accept4$unix(fd sock_unix, peer ptr[out, sockaddr_un, opt], peerlen ptr[inout, len[peer, int32]], flags flags[accept_flags]) sock_unix
+
+sendto$unix(fd sock_unix, buf buffer[in], len len[buf], f flags[send_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
+sendmsg$unix(fd sock_unix, msg ptr[in, msghdr_un], f flags[send_flags])
+sendmmsg$unix(fd sock_unix, mmsg ptr[in, array[msghdr_un]], vlen len[mmsg], f flags[send_flags])
+recvfrom$unix(fd sock_unix, buf buffer[out], len len[buf], f flags[recv_flags], addr ptr[in, sockaddr_un, opt], addrlen len[addr])
+getsockname$unix(fd sock_unix, addr ptr[out, sockaddr_un], addrlen ptr[inout, len[addr, int32]])
+getpeername$unix(fd sock_unix, peer ptr[out, sockaddr_un], peerlen ptr[inout, len[peer, int32]])
+
+unix_socket_type = SOCK_STREAM, SOCK_DGRAM, SOCK_SEQPACKET
+unix_socket_family = AF_UNIX, AF_UNSPEC
+
+unix_pair {
+ fd0 sock_unix
+ fd1 sock_unix
+}
+
+sockaddr_un [
+ file sockaddr_un_file
+ abs sockaddr_un_abstract
+] [varlen]
+
+sockaddr_un_file {
+ family flags[unix_socket_family, int16]
+ path filename
+} [packed]
+
+sockaddr_un_abstract {
+ family flags[unix_socket_family, int16]
+ ind const[0, int8]
+ id proc[int32, 20000, 4]
+}
+
+msghdr_un {
+ addr ptr[in, sockaddr_un]
+ addrlen len[addr, int32]
+ vec ptr[in, array[iovec_in]]
+ vlen len[vec, intptr]
+ ctrl ptr[in, array[cmsghdr_un], opt]
+ ctrllen len[ctrl, intptr]
+ f flags[send_flags, int32]
+}
+
+cmsghdr_un [
+ rights cmsghdr_un_rights
+ cred cmsghdr_un_cred
+] [varlen]
+
+cmsghdr_un_rights {
+ len len[parent, intptr]
+ level const[SOL_SOCKET, int32]
+ type const[SCM_RIGHTS, int32]
+ fds array[fd]
+} [align_ptr]
+
+cmsghdr_un_cred {
+ len len[parent, intptr]
+ level const[SOL_SOCKET, int32]
+ type const[SCM_CREDENTIALS, int32]
+ pid pid
+ uid uid
+ gid gid
+} [align_ptr]
diff --git a/sys/socket_unix_amd64.const b/sys/socket_unix_amd64.const
new file mode 100644
index 000000000..d629748ca
--- /dev/null
+++ b/sys/socket_unix_amd64.const
@@ -0,0 +1,21 @@
+# AUTOGENERATED FILE
+AF_UNIX = 1
+AF_UNSPEC = 0
+SCM_CREDENTIALS = 2
+SCM_RIGHTS = 1
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SOCKET = 1
+__NR_accept = 43
+__NR_accept4 = 288
+__NR_bind = 49
+__NR_connect = 42
+__NR_getpeername = 52
+__NR_getsockname = 51
+__NR_recvfrom = 45
+__NR_sendmmsg = 307
+__NR_sendmsg = 46
+__NR_sendto = 44
+__NR_socket = 41
+__NR_socketpair = 53
diff --git a/sys/socket_unix_arm64.const b/sys/socket_unix_arm64.const
new file mode 100644
index 000000000..fc9ca9bc9
--- /dev/null
+++ b/sys/socket_unix_arm64.const
@@ -0,0 +1,21 @@
+# AUTOGENERATED FILE
+AF_UNIX = 1
+AF_UNSPEC = 0
+SCM_CREDENTIALS = 2
+SCM_RIGHTS = 1
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SOCKET = 1
+__NR_accept = 202
+__NR_accept4 = 242
+__NR_bind = 200
+__NR_connect = 203
+__NR_getpeername = 205
+__NR_getsockname = 204
+__NR_recvfrom = 207
+__NR_sendmmsg = 269
+__NR_sendmsg = 211
+__NR_sendto = 206
+__NR_socket = 198
+__NR_socketpair = 199
diff --git a/sys/socket_unix_ppc64le.const b/sys/socket_unix_ppc64le.const
new file mode 100644
index 000000000..b8ec03296
--- /dev/null
+++ b/sys/socket_unix_ppc64le.const
@@ -0,0 +1,21 @@
+# AUTOGENERATED FILE
+AF_UNIX = 1
+AF_UNSPEC = 0
+SCM_CREDENTIALS = 2
+SCM_RIGHTS = 1
+SOCK_DGRAM = 2
+SOCK_SEQPACKET = 5
+SOCK_STREAM = 1
+SOL_SOCKET = 1
+__NR_accept = 330
+__NR_accept4 = 344
+__NR_bind = 327
+__NR_connect = 328
+__NR_getpeername = 332
+__NR_getsockname = 331
+__NR_recvfrom = 337
+__NR_sendmmsg = 349
+__NR_sendmsg = 341
+__NR_sendto = 335
+__NR_socket = 326
+__NR_socketpair = 333
diff --git a/sys/sys.txt b/sys/sys.txt
index 553b07590..702579a77 100644
--- a/sys/sys.txt
+++ b/sys/sys.txt
@@ -830,140 +830,6 @@ ucred {
gid gid
}
-ip_mreq {
- multi in_addr
- addr in_addr
-}
-
-ip_mreqn {
- multi in_addr
- addr in_addr
- ifindex int32
-}
-
-ip_mreq_source {
- multi in_addr
- iface in_addr
- source in_addr
-}
-
-ip_msfilter {
- multi in_addr
- iface in_addr
- fmode flags[ip_msfilter_mode, int32]
- numsrc len[slist, int32]
- slist array[in_addr]
-}
-
-in_pktinfo {
- ifindex int32
- dst in_addr
- addr in_addr
-}
-
-xfrm_filer {
- info xfrm_userpolicy_info
- tmpl xfrm_user_tmpl
-}
-
-xfrm_userpolicy_info {
- sel xfrm_selector
- lft xfrm_lifetime_cfg
- cur xfrm_lifetime_cur
- prio int32
- index int32
- dir int8
- action int8
- flags int8
- share int8
-}
-
-xfrm_user_tmpl {
- id xfrm_id
- fam int16
- saddr xfrm_in_addr
- reqid int32
- mode int8
- share int8
- opt int8
- aalgod int32
- ealgos int32
- calgos int32
-}
-
-xfrm_selector {
- daddr xfrm_in_addr
- saddr xfrm_in_addr
- dport proc[int16be, 20000, 4]
- dmask int16
- sport proc[int16be, 20000, 4]
- smask int16
- fam int16
- len_d int8
- len_s int8
- proto int8
- ifindex int32
- user int32
-}
-
-xfrm_lifetime_cfg {
- x0 int64
- x1 int64
- x2 int64
- x3 int64
- x4 int64
- x5 int64
- x6 int64
- x7 int64
-}
-
-xfrm_lifetime_cur {
- bytes int64
- packets int64
- atime int64
- utime int64
-}
-
-xfrm_id {
- daddr xfrm_in_addr
- spi int32
- proto int8
-}
-
-xfrm_in_addr [
- in in_addr
- in6 in6_addr
-]
-
-in_addr [
-# 0.0.0.0
- empty const[0x00000000, int32be]
-# 127.0.0.1
- loopback const[0x7f000001, int32be]
-# 255.255.255.255
- broadcast const[0xffffffff, int32be]
-]
-
-in6_addr_empty {
- a0 const[0, int64be]
- a1 const[0, int64be]
-}
-
-in6_addr_loopback {
- a0 const[0, int64be]
- a1 const[1, int64be]
-}
-
-in6_addr [
- empty in6_addr_empty
- loopback in6_addr_loopback
-]
-
-ipv6_mreq {
- multi in6_addr
- ifindex int32
-}
-
fiemap {
start int64
len int64
diff --git a/sys/test_amd64.const b/sys/test_amd64.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/test_amd64.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/test_arm64.const b/sys/test_arm64.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/test_arm64.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/test_ppc64le.const b/sys/test_ppc64le.const
new file mode 100644
index 000000000..c9328ca7e
--- /dev/null
+++ b/sys/test_ppc64le.const
@@ -0,0 +1 @@
+# AUTOGENERATED FILE
diff --git a/sys/vnet_amd64.const b/sys/vnet_amd64.const
index a9ebe9aad..fe6731c78 100644
--- a/sys/vnet_amd64.const
+++ b/sys/vnet_amd64.const
@@ -66,8 +66,6 @@ ETH_P_X25 = 2053
ICMPV6_ADDR_UNREACH = 3
ICMPV6_ADM_PROHIBITED = 1
ICMPV6_DEST_UNREACH = 1
-ICMPV6_DHAAD_REPLY = 145
-ICMPV6_DHAAD_REQUEST = 144
ICMPV6_ECHO_REPLY = 129
ICMPV6_ECHO_REQUEST = 128
ICMPV6_EXC_FRAGTIME = 1
@@ -76,9 +74,6 @@ ICMPV6_HDR_FIELD = 0
ICMPV6_MGM_QUERY = 130
ICMPV6_MGM_REDUCTION = 132
ICMPV6_MGM_REPORT = 131
-ICMPV6_MLD2_REPORT = 143
-ICMPV6_MOBILE_PREFIX_ADV = 147
-ICMPV6_MOBILE_PREFIX_SOL = 146
ICMPV6_NI_QUERY = 139
ICMPV6_NI_REPLY = 140
ICMPV6_NOROUTE = 0
diff --git a/sys/vnet_arm64.const b/sys/vnet_arm64.const
index a9ebe9aad..fe6731c78 100644
--- a/sys/vnet_arm64.const
+++ b/sys/vnet_arm64.const
@@ -66,8 +66,6 @@ ETH_P_X25 = 2053
ICMPV6_ADDR_UNREACH = 3
ICMPV6_ADM_PROHIBITED = 1
ICMPV6_DEST_UNREACH = 1
-ICMPV6_DHAAD_REPLY = 145
-ICMPV6_DHAAD_REQUEST = 144
ICMPV6_ECHO_REPLY = 129
ICMPV6_ECHO_REQUEST = 128
ICMPV6_EXC_FRAGTIME = 1
@@ -76,9 +74,6 @@ ICMPV6_HDR_FIELD = 0
ICMPV6_MGM_QUERY = 130
ICMPV6_MGM_REDUCTION = 132
ICMPV6_MGM_REPORT = 131
-ICMPV6_MLD2_REPORT = 143
-ICMPV6_MOBILE_PREFIX_ADV = 147
-ICMPV6_MOBILE_PREFIX_SOL = 146
ICMPV6_NI_QUERY = 139
ICMPV6_NI_REPLY = 140
ICMPV6_NOROUTE = 0
diff --git a/sys/vnet_ppc64le.const b/sys/vnet_ppc64le.const
index a9ebe9aad..fe6731c78 100644
--- a/sys/vnet_ppc64le.const
+++ b/sys/vnet_ppc64le.const
@@ -66,8 +66,6 @@ ETH_P_X25 = 2053
ICMPV6_ADDR_UNREACH = 3
ICMPV6_ADM_PROHIBITED = 1
ICMPV6_DEST_UNREACH = 1
-ICMPV6_DHAAD_REPLY = 145
-ICMPV6_DHAAD_REQUEST = 144
ICMPV6_ECHO_REPLY = 129
ICMPV6_ECHO_REQUEST = 128
ICMPV6_EXC_FRAGTIME = 1
@@ -76,9 +74,6 @@ ICMPV6_HDR_FIELD = 0
ICMPV6_MGM_QUERY = 130
ICMPV6_MGM_REDUCTION = 132
ICMPV6_MGM_REPORT = 131
-ICMPV6_MLD2_REPORT = 143
-ICMPV6_MOBILE_PREFIX_ADV = 147
-ICMPV6_MOBILE_PREFIX_SOL = 146
ICMPV6_NI_QUERY = 139
ICMPV6_NI_REPLY = 140
ICMPV6_NOROUTE = 0