diff options
Diffstat (limited to 'sys/linux')
| -rw-r--r-- | sys/linux/socket.txt | 2 | ||||
| -rw-r--r-- | sys/linux/socket_inet6.txt | 23 | ||||
| -rw-r--r-- | sys/linux/socket_inet6.txt.const | 1 | ||||
| -rw-r--r-- | sys/linux/socket_inet_igmp.txt | 138 | ||||
| -rw-r--r-- | sys/linux/socket_inet_igmp.txt.const | 60 |
5 files changed, 199 insertions, 25 deletions
diff --git a/sys/linux/socket.txt b/sys/linux/socket.txt index 9f76895c8..4bf50c270 100644 --- a/sys/linux/socket.txt +++ b/sys/linux/socket.txt @@ -383,7 +383,7 @@ rtentry { # Note: lapb0, bpq0 and hwsim0 are only present in init namespace. # Note: for roseN and nrN we should use proc type, but for simplicity we currently use N=0. # Note: netdevsim0 and netpci0 are renamed in initialize_devlink_ports() -devnames = "", "lo", "tunl0", "gre0", "gretap0", "ip_vti0", "ip6_vti0", "sit0", "ip6tnl0", "ip6gre0", "ip6gretap0", "bond0", "dummy0", "nr0", "rose0", "erspan0", "vlan0", "bridge0", "vcan0", "team0", "syz_tun", "veth0", "veth1", "veth0_to_bridge", "veth1_to_bridge", "veth0_to_bond", "veth1_to_bond", "veth0_to_team", "veth1_to_team", "bridge_slave_0", "bridge_slave_1", "bond_slave_0", "bond_slave_1", "team_slave_0", "team_slave_1", "syzkaller0", "syzkaller1", "veth0_to_hsr", "veth1_to_hsr", "hsr0", "ip6erspan0", "vxcan1", "caif0", "batadv0", "veth0_to_batadv", "veth1_to_batadv", "batadv_slave_0", "batadv_slave_1", "netdevsim0", "netpci0", "xfrm0", "veth0_virt_wifi", "veth1_virt_wifi", "virt_wifi0", "veth0_vlan", "veth1_vlan", "vlan0", "vlan1", "macvlan0", "macvlan1", "ipvlan0", "ipvlan1", "veth0_macvtap", "veth1_macvtap", "macvtap0", "macsec0", "geneve0", "geneve1", "wg0", "wg1", "wg2", "wlan0", "wlan1" +devnames = "", "lo", "tunl0", "gre0", "gretap0", "ip_vti0", "ip6_vti0", "sit0", "ip6tnl0", "ip6gre0", "ip6gretap0", "bond0", "dummy0", "nr0", "rose0", "erspan0", "vlan0", "bridge0", "vcan0", "team0", "syz_tun", "veth0", "veth1", "veth0_to_bridge", "veth1_to_bridge", "veth0_to_bond", "veth1_to_bond", "veth0_to_team", "veth1_to_team", "bridge_slave_0", "bridge_slave_1", "bond_slave_0", "bond_slave_1", "team_slave_0", "team_slave_1", "syzkaller0", "syzkaller1", "veth0_to_hsr", "veth1_to_hsr", "hsr0", "ip6erspan0", "vxcan1", "caif0", "batadv0", "veth0_to_batadv", "veth1_to_batadv", "batadv_slave_0", "batadv_slave_1", "netdevsim0", "netpci0", "xfrm0", "veth0_virt_wifi", "veth1_virt_wifi", "virt_wifi0", "veth0_vlan", "veth1_vlan", "vlan0", "vlan1", "macvlan0", "macvlan1", "ipvlan0", "ipvlan1", "veth0_macvtap", "veth1_macvtap", "macvtap0", "macsec0", "geneve0", "geneve1", "wg0", "wg1", "wg2", "wlan0", "wlan1", "dvmrp0", "dvmrp1", "pimreg", "pimreg0", "pimreg1", "pim6reg", "pim6reg0", "pim6reg1" type devname string[devnames, IFNAMSIZ] diff --git a/sys/linux/socket_inet6.txt b/sys/linux/socket_inet6.txt index 62ae28889..28a2ef269 100644 --- a/sys/linux/socket_inet6.txt +++ b/sys/linux/socket_inet6.txt @@ -89,32 +89,9 @@ setsockopt$inet6_IPV6_DSTOPTS(fd sock_in6, level const[IPPROTO_IPV6], optname co # TODO: IPV6_PATHMTU # TODO: IP6T_SO_GET_REVISION_MATCH, IP6T_SO_GET_REVISION_TARGET -setsockopt$inet6_MRT6_ADD_MIF(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_ADD_MIF], optval ptr[in, mif6ctl], optlen len[optval]) -setsockopt$inet6_MRT6_ADD_MFC(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_ADD_MFC], optval ptr[in, mf6cctl], optlen len[optval]) -setsockopt$inet6_MRT6_DEL_MFC(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_DEL_MFC], optval ptr[in, mf6cctl], optlen len[optval]) -setsockopt$inet6_MRT6_ADD_MFC_PROXY(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_ADD_MFC_PROXY], optval ptr[in, mf6cctl], optlen len[optval]) -setsockopt$inet6_MRT6_DEL_MFC_PROXY(fd sock_in6, level const[IPPROTO_IPV6], optname const[MRT6_DEL_MFC_PROXY], optval ptr[in, mf6cctl], optlen len[optval]) - getsockopt$inet6_mtu(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[out, flags[ip_mtu_discover, int32]], optlen ptr[inout, len[optval, int32]]) setsockopt$inet6_mtu(fd sock_in6, level const[IPPROTO_IPV6], optname const[IPV6_MTU_DISCOVER], optval ptr[in, flags[ip_mtu_discover, int32]], optlen len[optval]) -mif6ctl { - mif6c_mifi int16 - mif6c_flags flags[mif6c_flags, int8] - vifc_threshold int8 - mif6c_pifi int16 - vifc_rate_limit int32 -} - -mif6c_flags = MIFF_REGISTER - -mf6cctl { - mf6cc_origin sockaddr_in6 - mf6cc_mcastgrp sockaddr_in6 - mf6cc_parent int16 - mf6cc_ifset array[int32, 8] -} - ipv6_mreq { multi ipv6_addr ifindex ifindex diff --git a/sys/linux/socket_inet6.txt.const b/sys/linux/socket_inet6.txt.const index 32c31d9c9..58dd244d4 100644 --- a/sys/linux/socket_inet6.txt.const +++ b/sys/linux/socket_inet6.txt.const @@ -79,7 +79,6 @@ MCAST_LEAVE_GROUP = 45 MCAST_LEAVE_SOURCE_GROUP = 47 MCAST_MSFILTER = 48 MCAST_UNBLOCK_SOURCE = 44 -MIFF_REGISTER = 1 MRT6_ADD_MFC = 204 MRT6_ADD_MFC_PROXY = 210 MRT6_ADD_MIF = 202 diff --git a/sys/linux/socket_inet_igmp.txt b/sys/linux/socket_inet_igmp.txt new file mode 100644 index 000000000..3889a9634 --- /dev/null +++ b/sys/linux/socket_inet_igmp.txt @@ -0,0 +1,138 @@ +# Copyright 2022 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> +include <uapi/linux/mroute.h> +include <uapi/linux/mroute6.h> + +resource sock_igmp[sock_in] +resource sock_igmp6[sock_in6] + +socket$igmp(domain const[AF_INET], type const[SOCK_RAW], proto const[IPPROTO_IGMP]) sock_igmp +socket$igmp6(domain const[AF_INET6], type const[SOCK_RAW], proto const[IPPROTO_IGMP]) sock_igmp6 + +setsockopt$MRT_INIT(fd sock_igmp, level const[SOL_IP], opt const[MRT_INIT], val ptr[in, const[0, int32]], len bytesize[val]) +setsockopt$MRT_DONE(fd sock_igmp, level const[SOL_IP], opt const[MRT_DONE], val const[0], len const[0]) +setsockopt$MRT_ADD_VIF(fd sock_igmp, level const[SOL_IP], opt const[MRT_ADD_VIF], val ptr[in, vifctl], len bytesize[val]) +setsockopt$MRT_DEL_VIF(fd sock_igmp, level const[SOL_IP], opt const[MRT_DEL_VIF], val ptr[in, vifctl], len bytesize[val]) +setsockopt$MRT_ADD_MFC(fd sock_igmp, level const[SOL_IP], opt const[MRT_ADD_MFC], val ptr[in, mfcctl], len bytesize[val]) +setsockopt$MRT_DEL_MFC(fd sock_igmp, level const[SOL_IP], opt const[MRT_DEL_MFC], val ptr[in, mfcctl], len bytesize[val]) +setsockopt$MRT_ADD_MFC_PROXY(fd sock_igmp, level const[SOL_IP], opt const[MRT_ADD_MFC_PROXY], val ptr[in, mfcctl], len bytesize[val]) +setsockopt$MRT_DEL_MFC_PROXY(fd sock_igmp, level const[SOL_IP], opt const[MRT_DEL_MFC_PROXY], val ptr[in, mfcctl], len bytesize[val]) +setsockopt$MRT_FLUSH(fd sock_igmp, level const[SOL_IP], opt const[MRT_FLUSH], val ptr[in, flags[mrt_flush_flags, int32]], len bytesize[val]) +setsockopt$MRT_ASSERT(fd sock_igmp, level const[SOL_IP], opt const[MRT_ASSERT], val ptr[in, bool32], len bytesize[val]) +setsockopt$MRT_PIM(fd sock_igmp, level const[SOL_IP], opt const[MRT_ASSERT], val ptr[in, int32[0:IGMPMSG_WRVIFWHOLE]], len bytesize[val]) +setsockopt$MRT_TABLE(fd sock_igmp, level const[SOL_IP], opt const[MRT_ASSERT], val ptr[in, flags[mrt_tables, int32]], len bytesize[val]) + +getsockopt$MRT(fd sock_igmp, level const[SOL_IP], opt flags[mrt_getsockopts], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) + +ioctl$SIOCGETVIFCNT(fd sock_igmp, cmd const[SIOCGETVIFCNT], arg ptr[in, sioc_vif_req]) +ioctl$SIOCGETSGCNT(fd sock_igmp, cmd const[SIOCGETSGCNT], arg ptr[in, sioc_sg_req]) + +setsockopt$MRT6_INIT(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_INIT], val ptr[in, const[0, int32]], len bytesize[val]) +setsockopt$MRT6_DONE(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_DONE], val const[0], len const[0]) +setsockopt$MRT6_ADD_MIF(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ADD_MIF], val ptr[in, mif6ctl], len bytesize[val]) +setsockopt$MRT6_DEL_MIF(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_DEL_MIF], val ptr[in, mif6ctl], len bytesize[val]) +setsockopt$MRT6_ADD_MFC(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ADD_MFC], val ptr[in, mf6cctl], len bytesize[val]) +setsockopt$MRT6_DEL_MFC(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_DEL_MFC], val ptr[in, mf6cctl], len bytesize[val]) +setsockopt$MRT6_ADD_MFC_PROXY(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ADD_MFC_PROXY], val ptr[in, mf6cctl], len bytesize[val]) +setsockopt$MRT6_DEL_MFC_PROXY(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_DEL_MFC_PROXY], val ptr[in, mf6cctl], len bytesize[val]) +setsockopt$MRT6_FLUSH(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_FLUSH], val ptr[in, flags[mrt6_flush_flags, int32]], len bytesize[val]) +setsockopt$MRT6_ASSERT(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ASSERT], val ptr[in, bool32], len bytesize[val]) +setsockopt$MRT6_PIM(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ASSERT], val ptr[in, int32[0:IGMPMSG_WRVIFWHOLE]], len bytesize[val]) +setsockopt$MRT6_TABLE(fd sock_igmp6, level const[SOL_IPV6], opt const[MRT6_ASSERT], val ptr[in, flags[mrt_tables, int32]], len bytesize[val]) + +getsockopt$MRT6(fd sock_igmp6, level const[SOL_IPV6], opt flags[mrt6_getsockopts], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) + +ioctl$SIOCGETMIFCNT_IN6(fd sock_igmp, cmd const[SIOCGETMIFCNT_IN6], arg ptr[in, sioc_mif_req6]) +ioctl$SIOCGETSGCNT_IN6(fd sock_igmp, cmd const[SIOCGETSGCNT_IN6], arg ptr[in, sioc_sg_req6]) + +type vifi_t int16[-1:1] +type mifi_t int16[-1:1] +mrt_flush_flags = MRT_FLUSH_MFC, MRT_FLUSH_MFC_STATIC, MRT_FLUSH_VIFS, MRT_FLUSH_VIFS_STATIC +mrt6_flush_flags = MRT6_FLUSH_MFC, MRT6_FLUSH_MFC_STATIC, MRT6_FLUSH_MIFS, MRT6_FLUSH_MIFS_STATIC +mrt_tables = RT_TABLE_UNSPEC, RT_TABLE_COMPAT, RT_TABLE_DEFAULT, RT_TABLE_MAIN, RT_TABLE_LOCAL, RT_TABLE_MAX, 1 +mrt_getsockopts = MRT_VERSION, MRT_PIM, MRT_ASSERT +mrt6_getsockopts = MRT6_VERSION, MRT6_PIM, MRT6_ASSERT + +vifctl { + vifc_vifi vifi_t + vifc_flags flags[viff_ctls, int8] + vifc_threshold int8 + vifc_rate_limit int32 + u vifctl_u + vifc_rmt_addr ipv4_addr +} + +vifctl_u [ + vifc_lcl_addr ipv4_addr + vifc_lcl_ifindex ifindex +] + +viff_ctls = 0, VIFF_TUNNEL, VIFF_REGISTER, VIFF_USE_IFINDEX + +mfcctl { + mfcc_origin ipv4_addr + mfcc_mcastgrp ipv4_addr + mfcc_parent vifi_t + mfcc_ttls array[int8, MAXVIFS] + mfcc_pkt_cnt int32 + mfcc_byte_cnt int32 + mfcc_wrong_if int32 + mfcc_expire int32 +} + +sioc_vif_req { + vifi vifi_t + icount intptr (out) + ocount intptr (out) + ibytes intptr (out) + obytes intptr (out) +} + +sioc_sg_req { + src ipv4_addr + grp ipv4_addr + pktcnt intptr (out) + bytecnt intptr (out) + wrong_if intptr (out) +} + +mif6ctl { + mif6c_mifi mifi_t + mif6c_flags flags[mif6ctl_flags, int8] + vifc_threshold int8 +# TODO: in the kernel this is int16 (WHY?!) + mif6c_pifi ifindex + vifc_rate_limit int32 +} + +mif6ctl_flags = 0, MIFF_REGISTER + +mf6cctl { + mf6cc_origin sockaddr_in6 + mf6cc_mcastgrp sockaddr_in6 + mf6cc_parent mifi_t + mf6cc_ifset if_set +} + +if_set { + ifs_bits array[int32, 8] +} + +sioc_mif_req6 { + mifi mifi_t + icount intptr (out) + ocount intptr (out) + ibytes intptr (out) + obytes intptr (out) +} + +sioc_sg_req6 { + src ipv6_addr + grp ipv6_addr + pktcnt intptr (out) + bytecnt intptr (out) + wrong_if intptr (out) +} diff --git a/sys/linux/socket_inet_igmp.txt.const b/sys/linux/socket_inet_igmp.txt.const new file mode 100644 index 000000000..3cc6c40a0 --- /dev/null +++ b/sys/linux/socket_inet_igmp.txt.const @@ -0,0 +1,60 @@ +# Code generated by syz-sysgen. DO NOT EDIT. +arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x +AF_INET = 2 +AF_INET6 = 10 +IGMPMSG_WRVIFWHOLE = 4 +IPPROTO_IGMP = 2 +MAXVIFS = 32 +MIFF_REGISTER = 1 +MRT6_ADD_MFC = 204 +MRT6_ADD_MFC_PROXY = 210 +MRT6_ADD_MIF = 202 +MRT6_ASSERT = 207 +MRT6_DEL_MFC = 205 +MRT6_DEL_MFC_PROXY = 211 +MRT6_DEL_MIF = 203 +MRT6_DONE = 201 +MRT6_FLUSH = 212 +MRT6_FLUSH_MFC = 1 +MRT6_FLUSH_MFC_STATIC = 2 +MRT6_FLUSH_MIFS = 4 +MRT6_FLUSH_MIFS_STATIC = 8 +MRT6_INIT = 200 +MRT6_PIM = 208 +MRT6_VERSION = 206 +MRT_ADD_MFC = 204 +MRT_ADD_MFC_PROXY = 210 +MRT_ADD_VIF = 202 +MRT_ASSERT = 207 +MRT_DEL_MFC = 205 +MRT_DEL_MFC_PROXY = 211 +MRT_DEL_VIF = 203 +MRT_DONE = 201 +MRT_FLUSH = 212 +MRT_FLUSH_MFC = 1 +MRT_FLUSH_MFC_STATIC = 2 +MRT_FLUSH_VIFS = 4 +MRT_FLUSH_VIFS_STATIC = 8 +MRT_INIT = 200 +MRT_PIM = 208 +MRT_VERSION = 206 +RT_TABLE_COMPAT = 252 +RT_TABLE_DEFAULT = 253 +RT_TABLE_LOCAL = 255 +RT_TABLE_MAIN = 254 +RT_TABLE_MAX = 4294967295 +RT_TABLE_UNSPEC = 0 +SIOCGETMIFCNT_IN6 = 35296 +SIOCGETSGCNT = 35297 +SIOCGETSGCNT_IN6 = 35297 +SIOCGETVIFCNT = 35296 +SOCK_RAW = 3 +SOL_IP = 0 +SOL_IPV6 = 41 +VIFF_REGISTER = 4 +VIFF_TUNNEL = 1 +VIFF_USE_IFINDEX = 8 +__NR_getsockopt = 209, 386:s390x:365, amd64:55, arm:295, mips64le:5054, ppc64le:340 +__NR_ioctl = 54, amd64:16, arm64:riscv64:29, mips64le:5015 +__NR_setsockopt = 208, 386:s390x:366, amd64:54, arm:294, mips64le:5053, ppc64le:339 +__NR_socket = 198, 386:s390x:359, amd64:41, arm:281, mips64le:5040, ppc64le:326 |
