diff options
Diffstat (limited to 'sys/linux')
27 files changed, 853 insertions, 58 deletions
diff --git a/sys/linux/dev_nbd.txt b/sys/linux/dev_nbd.txt index 3c42e4c5f..3fe5482dd 100644 --- a/sys/linux/dev_nbd.txt +++ b/sys/linux/dev_nbd.txt @@ -27,12 +27,12 @@ ioctl$NBD_CLEAR_QUE(fd fd_nbd, cmd const[NBD_CLEAR_QUE]) type msghdr_nl_nbd[CMD] msghdr_netlink[netlink_msg_t[genl_nbd_family_id, genlmsghdr_t[CMD], nbd_attr_policy]] -syz_genetlink_get_family_id$nbd(name ptr[in, string["nbd"]]) genl_nbd_family_id +syz_genetlink_get_family_id$nbd(name ptr[in, string["nbd"]], fd sock_nl_generic_init) genl_nbd_family_id -sendmsg$NBD_CMD_CONNECT(fd sock_nl_generic, msg ptr[in, msghdr_nl_nbd[NBD_CMD_CONNECT]], f flags[send_flags]) -sendmsg$NBD_CMD_DISCONNECT(fd sock_nl_generic, msg ptr[in, msghdr_nl_nbd[NBD_CMD_DISCONNECT]], f flags[send_flags]) -sendmsg$NBD_CMD_RECONFIGURE(fd sock_nl_generic, msg ptr[in, msghdr_nl_nbd[NBD_CMD_RECONFIGURE]], f flags[send_flags]) -sendmsg$NBD_CMD_STATUS(fd sock_nl_generic, msg ptr[in, msghdr_nl_nbd[NBD_CMD_STATUS]], f flags[send_flags]) +sendmsg$NBD_CMD_CONNECT(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nbd[NBD_CMD_CONNECT]], f flags[send_flags]) +sendmsg$NBD_CMD_DISCONNECT(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nbd[NBD_CMD_DISCONNECT]], f flags[send_flags]) +sendmsg$NBD_CMD_RECONFIGURE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nbd[NBD_CMD_RECONFIGURE]], f flags[send_flags]) +sendmsg$NBD_CMD_STATUS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_nbd[NBD_CMD_STATUS]], f flags[send_flags]) nbd_attr_policy [ NBD_ATTR_INDEX nlattr[NBD_ATTR_INDEX, proc[0, 1, int32]] diff --git a/sys/linux/init.go b/sys/linux/init.go index 15d6f7960..d3373b5ab 100644 --- a/sys/linux/init.go +++ b/sys/linux/init.go @@ -40,6 +40,10 @@ func InitTarget(target *prog.Target) { AF_AX25: target.GetConst("AF_AX25"), AF_NETROM: target.GetConst("AF_NETROM"), AF_ROSE: target.GetConst("AF_ROSE"), + AF_IEEE802154: target.GetConst("AF_IEEE802154"), + AF_NETLINK: target.GetConst("AF_NETLINK"), + SOCK_RAW: target.GetConst("SOCK_RAW"), + NETLINK_GENERIC: target.GetConst("NETLINK_GENERIC"), USB_MAJOR: target.GetConst("USB_MAJOR"), TIOCSSERIAL: target.GetConst("TIOCSSERIAL"), TIOCGSERIAL: target.GetConst("TIOCGSERIAL"), @@ -141,6 +145,10 @@ type arch struct { AF_AX25 uint64 AF_NETROM uint64 AF_ROSE uint64 + AF_IEEE802154 uint64 + AF_NETLINK uint64 + SOCK_RAW uint64 + NETLINK_GENERIC uint64 USB_MAJOR uint64 TIOCSSERIAL uint64 TIOCGSERIAL uint64 @@ -200,8 +208,11 @@ func (arch *arch) neutralize(c *prog.Call) { // Don't let it mess with arbitrary sockets in init namespace. family := c.Args[0].(*prog.ConstArg) switch uint64(uint32(family.Val)) { - case arch.AF_NFC, arch.AF_LLC, arch.AF_BLUETOOTH, + case arch.AF_NFC, arch.AF_LLC, arch.AF_BLUETOOTH, arch.AF_IEEE802154, arch.AF_X25, arch.AF_AX25, arch.AF_NETROM, arch.AF_ROSE: + case arch.AF_NETLINK: + c.Args[1].(*prog.ConstArg).Val = arch.SOCK_RAW + c.Args[2].(*prog.ConstArg).Val = arch.NETLINK_GENERIC default: family.Val = ^uint64(0) } diff --git a/sys/linux/netfilter_ipvs.txt b/sys/linux/netfilter_ipvs.txt index 179d68d72..0a45c8fe9 100644 --- a/sys/linux/netfilter_ipvs.txt +++ b/sys/linux/netfilter_ipvs.txt @@ -12,7 +12,7 @@ include <uapi/linux/ip_vs.h> resource genl_ipvs_family_id[int16] type msghdr_nl_ipvs[CMD] msghdr_netlink[netlink_msg_t[genl_ipvs_family_id, genlmsghdr_t[CMD], ip_vs_cmd_policy]] -syz_genetlink_get_family_id$ipvs(name ptr[in, string["IPVS"]]) genl_ipvs_family_id +syz_genetlink_get_family_id$ipvs(name ptr[in, string["IPVS"]], fd sock_nl_generic) genl_ipvs_family_id sendmsg$IPVS_CMD_NEW_SERVICE(fd sock_nl_generic, msg ptr[in, msghdr_nl_ipvs[IPVS_CMD_NEW_SERVICE]], f flags[send_flags]) sendmsg$IPVS_CMD_SET_SERVICE(fd sock_nl_generic, msg ptr[in, msghdr_nl_ipvs[IPVS_CMD_SET_SERVICE]], f flags[send_flags]) diff --git a/sys/linux/socket.txt b/sys/linux/socket.txt index dbda63c5d..5bb3a74a1 100644 --- a/sys/linux/socket.txt +++ b/sys/linux/socket.txt @@ -55,7 +55,7 @@ sock_pair { } # This sockaddr type corresponds to the struct sockaddr and is 16 bytes or less. -# TODO: add AF_APPLETALK, AF_ATMPVC, AF_X25, AF_ROSE, AF_DECnet, AF_ATMSVC, AF_IRDA, AF_IB, AF_TIPC, AF_IUCV, AF_RXRPC, AF_ISDN, AF_PHONET, AF_IEEE802154, AF_CAIF +# TODO: add AF_APPLETALK, AF_ATMPVC, AF_ROSE, AF_DECnet, AF_ATMSVC, AF_IRDA, AF_IB, AF_IUCV # Note: AF_UNIX, AF_INET6, AF_PACKET, AF_ALG, AF_PPPOX sockaddr is bigger than 16 bytes # Note: AF_NETROM sockaddr is the same as AF_AX25 sockaddr [ @@ -117,6 +117,7 @@ sockaddr_storage [ phonet sockaddr_pn ethernet sockaddr_ethernet qipcrtr sockaddr_qrtr + ieee802154 sockaddr_ieee802154 generic sockaddr_storage_generic ] [size[SOCKADDR_STORAGE_SIZE]] diff --git a/sys/linux/socket_ieee802154.txt b/sys/linux/socket_ieee802154.txt new file mode 100644 index 000000000..e087fc12c --- /dev/null +++ b/sys/linux/socket_ieee802154.txt @@ -0,0 +1,558 @@ +# Copyright 2021 syzkaller project authors. All rights reserved. +# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file. + +# TODO: these descriptions allow some basic testing, but does not seem to cover ingress path and lots of other things. +# Some things that can be improved: +# - supporting net namespaces in 802.15.4 subsystem for proper isolation, reproducubility +# (https://bugzilla.kernel.org/show_bug.cgi?id=211675) +# currently, parallel test processes use the same wpan0/wpan1 global devices in init namespace, +# thus no isolation, reproducubility, coverage guidance does not work +# - supporting phy flags (WPAN_PHY_FLAG_TXPOWER, etc) in mac802154_hwsim +# this will increase coverage that can be achieved with mac802154_hwsim +# - supporting remote coverage in 802.15.4 subsystem, lots of code seems to execute asynchronously +# - figuring out how to achieve coverage of ingress path and describing 802.15.4 packet format +# - there is something called 6lowpan that is related to 802.15.4, need to figure out what it is and how to reach it +# - executor sets wpan0/1 UP in setup_802154, but lots of commands require the device to be DOWN +# since these are in init net namespace, our descriptions in socket_netlink_route.txt can change these devices +# thus commands that require devices to be DOWN don't actually work + +include <linux/net.h> +include <linux/socket.h> +include <uapi/linux/netlink.h> +include <uapi/linux/genetlink.h> +include <net/af_ieee802154.h> +include <net/netlink.h> +include <net/nl802154.h> +include <linux/ieee802154.h> +include <linux/nl802154.h> + +resource sock_802154_raw[sock] +resource sock_802154_dgram[sock] + +syz_init_net_socket$802154_raw(domain const[AF_IEEE802154], type const[SOCK_RAW], proto const[0]) sock_802154_raw +bind$802154_raw(fd sock_802154_raw, addr ptr[in, sockaddr_ieee802154], len bytesize[addr]) +sendmsg$802154_raw(fd sock_802154_raw, msg ptr[in, msghdr_802154], f flags[send_flags]) + +syz_init_net_socket$802154_dgram(domain const[AF_IEEE802154], type const[SOCK_DGRAM], proto const[0]) sock_802154_dgram +connect$802154_dgram(fd sock_802154_dgram, addr ptr[in, sockaddr_ieee802154], len bytesize[addr]) +bind$802154_dgram(fd sock_802154_dgram, addr ptr[in, sockaddr_ieee802154], len bytesize[addr]) +sendmsg$802154_dgram(fd sock_802154_dgram, msg ptr[in, msghdr_802154], f flags[send_flags]) + +setsockopt$WPAN_WANTACK(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_WANTACK], val ptr[in, bool32], len bytesize[val]) +setsockopt$WPAN_WANTLQI(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_WANTLQI], val ptr[in, bool32], len bytesize[val]) +setsockopt$WPAN_SECURITY(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_SECURITY], val ptr[in, flags[ieee802154_security, int32]], len bytesize[val]) +setsockopt$WPAN_SECURITY_LEVEL(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_SECURITY_LEVEL], val ptr[in, int32[WPAN_SECURITY_LEVEL_DEFAULT:IEEE802154_SCF_SECLEVEL_ENC_MIC128]], len bytesize[val]) +getsockopt$WPAN_WANTACK(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_WANTACK], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$WPAN_WANTLQI(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_WANTLQI], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$WPAN_SECURITY(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_SECURITY], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) +getsockopt$WPAN_SECURITY_LEVEL(fd sock_802154_dgram, level const[SOL_IEEE802154], opt const[WPAN_SECURITY_LEVEL], val ptr[out, int32], len ptr[inout, bytesize[val, int32]]) + +resource genl_nl802154_family_id[int16] +resource ieee802154_ifindex[int32] +type msghdr_nl802154[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_nl802154_family_id, genlmsghdr_t[CMD], POLICY]] + +syz_genetlink_get_family_id$nl802154(name ptr[in, string["nl802154"]], fd sock_nl_generic_init) genl_nl802154_family_id +ioctl$sock_SIOCGIFINDEX_802154(fd sock_nl_generic_init, cmd const[SIOCGIFINDEX], arg ptr[inout, ifreq_dev_t[ieee802154_dev_names, ieee802154_ifindex]]) + +sendmsg$NL802154_CMD_GET_WPAN_PHY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_WPAN_PHY, nl802154_policy_GET_WPAN_PHY]], f flags[send_flags]) +sendmsg$NL802154_CMD_GET_INTERFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_INTERFACE, nl802154_policy_GET_INTERFACE]], f flags[send_flags]) +sendmsg$NL802154_CMD_NEW_INTERFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_NEW_INTERFACE, nl802154_policy_NEW_INTERFACE]], f flags[send_flags]) +# This is disabled as we only have 2 global hwsim devices, if we delete them we are out of devices. +# sendmsg$NL802154_CMD_DEL_INTERFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_DEL_INTERFACE, nl802154_policy_DEL_INTERFACE]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_CHANNEL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_CHANNEL, nl802154_policy_SET_CHANNEL]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_CCA_MODE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_CCA_MODE, nl802154_policy_SET_CCA_MODE]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_CCA_ED_LEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_CCA_ED_LEVEL, nl802154_policy_SET_CCA_ED_LEVEL]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_TX_POWER(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_TX_POWER, nl802154_policy_SET_TX_POWER]], f flags[send_flags]) +# This may be more harmful than useful. Once we move the device from init ns, we won't be able to test it anymore... +sendmsg$NL802154_CMD_SET_WPAN_PHY_NETNS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_WPAN_PHY_NETNS, nl802154_policy_SET_WPAN_PHY_NETNS]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_PAN_ID(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_PAN_ID, nl802154_policy_SET_PAN_ID]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_SHORT_ADDR(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_SHORT_ADDR, nl802154_policy_SET_SHORT_ADDR]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_BACKOFF_EXPONENT(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_BACKOFF_EXPONENT, nl802154_policy_SET_BACKOFF_EXPONENT]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_MAX_CSMA_BACKOFFS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_MAX_CSMA_BACKOFFS, nl802154_policy_SET_MAX_CSMA_BACKOFFS]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_MAX_FRAME_RETRIES(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_MAX_FRAME_RETRIES, nl802154_policy_SET_MAX_FRAME_RETRIES]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_LBT_MODE(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_LBT_MODE, nl802154_policy_SET_LBT_MODE]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_ACKREQ_DEFAULT(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_ACKREQ_DEFAULT, nl802154_policy_SET_ACKREQ_DEFAULT]], f flags[send_flags]) +sendmsg$NL802154_CMD_SET_SEC_PARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_SET_SEC_PARAMS, nl802154_policy_SET_SEC_PARAMS]], f flags[send_flags]) +sendmsg$NL802154_CMD_GET_SEC_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_SEC_KEY, nl802154_policy_GET_SEC_KEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_NEW_SEC_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_NEW_SEC_KEY, nl802154_policy_NEW_SEC_KEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_DEL_SEC_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_DEL_SEC_KEY, nl802154_policy_DEL_SEC_KEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_GET_SEC_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_SEC_DEV, nl802154_policy_GET_SEC_DEV]], f flags[send_flags]) +sendmsg$NL802154_CMD_NEW_SEC_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_NEW_SEC_DEV, nl802154_policy_NEW_SEC_DEV]], f flags[send_flags]) +sendmsg$NL802154_CMD_DEL_SEC_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_DEL_SEC_DEV, nl802154_policy_DEL_SEC_DEV]], f flags[send_flags]) +sendmsg$NL802154_CMD_GET_SEC_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_SEC_DEVKEY, nl802154_policy_GET_SEC_DEVKEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_NEW_SEC_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_NEW_SEC_DEVKEY, nl802154_policy_NEW_SEC_DEVKEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_DEL_SEC_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_DEL_SEC_DEVKEY, nl802154_policy_DEL_SEC_DEVKEY]], f flags[send_flags]) +sendmsg$NL802154_CMD_GET_SEC_LEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_GET_SEC_LEVEL, nl802154_policy_GET_SEC_LEVEL]], f flags[send_flags]) +sendmsg$NL802154_CMD_NEW_SEC_LEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_NEW_SEC_LEVEL, nl802154_policy_NEW_DEL_SEC_LEVEL]], f flags[send_flags]) +sendmsg$NL802154_CMD_DEL_SEC_LEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_nl802154[NL802154_CMD_DEL_SEC_LEVEL, nl802154_policy_NEW_DEL_SEC_LEVEL]], f flags[send_flags]) + +nl802154_policy_GET_WPAN_PHY [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_GET_INTERFACE [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_NEW_INTERFACE [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_IFNAME nlattr[NL802154_ATTR_IFNAME, string[ieee802154_dev_names]] + NL802154_ATTR_IFTYPE nlattr[NL802154_ATTR_IFTYPE, flags[nl802154_iftype, int32]] + NL802154_ATTR_EXTENDED_ADDR nlattr[NL802154_ATTR_EXTENDED_ADDR, ieee802154_hwaddr] +] [varlen] + +nl802154_iftype = NL802154_IFTYPE_UNSPEC, NL802154_IFTYPE_NODE, NL802154_IFTYPE_MONITOR, NL802154_IFTYPE_COORD + +#nl802154_policy_DEL_INTERFACE [ +# NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] +# NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +#] [varlen] + +nl802154_policy_SET_CHANNEL [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_PAGE nlattr[NL802154_ATTR_PAGE, int8[0:IEEE802154_MAX_PAGE]] + NL802154_ATTR_CHANNEL nlattr[NL802154_ATTR_CHANNEL, int8[0:IEEE802154_MAX_CHANNEL]] +] [varlen] + +nl802154_policy_SET_CCA_MODE [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_CCA_MODE nlattr[NL802154_ATTR_CCA_MODE, flags[nl802154_cca_modes, int32]] + NL802154_ATTR_CCA_OPT nlattr[NL802154_ATTR_CCA_OPT, flags[nl802154_cca_opts, int32]] +] [varlen] + +nl802154_cca_modes = NL802154_CCA_ENERGY, NL802154_CCA_CARRIER, NL802154_CCA_ENERGY_CARRIER, NL802154_CCA_ALOHA, NL802154_CCA_UWB_SHR, NL802154_CCA_UWB_MULTIPLEXED +nl802154_cca_opts = NL802154_CCA_OPT_ENERGY_CARRIER_AND, NL802154_CCA_OPT_ENERGY_CARRIER_OR + +nl802154_policy_SET_CCA_ED_LEVEL [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_CCA_ED_LEVEL nlattr[NL802154_ATTR_CCA_ED_LEVEL, int32[0:16]] +] [varlen] + +nl802154_policy_SET_TX_POWER [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_TX_POWER nlattr[NL802154_ATTR_TX_POWER, int32] +] [varlen] + +nl802154_policy_SET_WPAN_PHY_NETNS [ + NL802154_ATTR_WPAN_PHY nlattr[NL802154_ATTR_WPAN_PHY, flags[ieee802154_phy_index, int32]] + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_PID nlattr[NL802154_ATTR_PID, pid] + NL802154_ATTR_NETNS_FD nlattr[NL802154_ATTR_NETNS_FD, fd_namespace] +] [varlen] + +nl802154_policy_SET_PAN_ID [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_PAN_ID nlattr[NL802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] +] [varlen] + +nl802154_policy_SET_SHORT_ADDR [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SHORT_ADDR nlattr[NL802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] +] [varlen] + +nl802154_policy_SET_BACKOFF_EXPONENT [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_MIN_BE nlattr[NL802154_ATTR_MIN_BE, int8] + NL802154_ATTR_MAX_BE nlattr[NL802154_ATTR_MAX_BE, int8] +] [varlen] + +nl802154_policy_SET_MAX_CSMA_BACKOFFS [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_MAX_CSMA_BACKOFFS nlattr[NL802154_ATTR_MAX_CSMA_BACKOFFS, int8] +] [varlen] + +nl802154_policy_SET_MAX_FRAME_RETRIES [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_MAX_FRAME_RETRIES nlattr[NL802154_ATTR_MAX_FRAME_RETRIES, int8] +] [varlen] + +nl802154_policy_SET_LBT_MODE [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_LBT_MODE nlattr[NL802154_ATTR_LBT_MODE, bool8] +] [varlen] + +nl802154_policy_SET_ACKREQ_DEFAULT [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_ACKREQ_DEFAULT nlattr[NL802154_ATTR_ACKREQ_DEFAULT, bool8] +] [varlen] + +nl802154_policy_SET_SEC_PARAMS [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_ENABLED nlattr[NL802154_ATTR_SEC_ENABLED, bool8] + NL802154_ATTR_SEC_OUT_KEY_ID nlnest[NL802154_ATTR_SEC_OUT_KEY_ID, array[nl802154_key_id_policy]] + NL802154_ATTR_SEC_OUT_LEVEL nlattr[NL802154_ATTR_SEC_OUT_LEVEL, int32[0:NL802154_SECLEVEL_MAX]] + NL802154_ATTR_SEC_FRAME_COUNTER nlattr[NL802154_ATTR_SEC_FRAME_COUNTER, int32] +] [varlen] + +nl802154_policy_GET_SEC_KEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_NEW_SEC_KEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_KEY nlnest[NL802154_ATTR_SEC_KEY, array[nl802154_key_policy]] +] [varlen] + +nl802154_key_policy [ + NL802154_KEY_ATTR_ID nlnest[NL802154_KEY_ATTR_ID, array[nl802154_key_id_policy]] + NL802154_KEY_ATTR_USAGE_FRAMES nlattr[NL802154_KEY_ATTR_USAGE_FRAMES, int8] + NL802154_KEY_ATTR_USAGE_CMDS nlattr[NL802154_KEY_ATTR_USAGE_CMDS, array[int8, 32]] + NL802154_KEY_ATTR_BYTES nlattr[NL802154_KEY_ATTR_BYTES, array[int8, NL802154_KEY_SIZE]] +] [varlen] + +nl802154_key_id_policy [ + NL802154_KEY_ID_ATTR_MODE nlattr[NL802154_KEY_ID_ATTR_MODE, int32[0:NL802154_KEY_ID_MODE_MAX]] + NL802154_KEY_ID_ATTR_INDEX nlattr[NL802154_KEY_ID_ATTR_INDEX, flags[ieee802154_scf_key, int8]] + NL802154_KEY_ID_ATTR_IMPLICIT nlnest[NL802154_KEY_ID_ATTR_IMPLICIT, array[nl802154_dev_addr_policy]] + NL802154_KEY_ID_ATTR_SOURCE_SHORT nlattr[NL802154_KEY_ID_ATTR_SOURCE_SHORT, int32] + NL802154_KEY_ID_ATTR_SOURCE_EXTENDED nlattr[NL802154_KEY_ID_ATTR_SOURCE_EXTENDED, int64] +] [varlen] + +nl802154_dev_addr_policy [ + NL802154_DEV_ADDR_ATTR_PAN_ID nlattr[NL802154_DEV_ADDR_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + NL802154_DEV_ADDR_ATTR_MODE nlattr[NL802154_DEV_ADDR_ATTR_MODE, int32[0:NL802154_DEV_ADDR_MAX]] + NL802154_DEV_ADDR_ATTR_SHORT nlattr[NL802154_DEV_ADDR_ATTR_SHORT, flags[ieee802154_short_addr, int16]] + NL802154_DEV_ADDR_ATTR_EXTENDED nlattr[NL802154_DEV_ADDR_ATTR_EXTENDED, ieee802154_hwaddr] +] [varlen] + +nl802154_policy_DEL_SEC_KEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_KEY nlnest[NL802154_ATTR_SEC_KEY, array[nl802154_key_policy]] +] [varlen] + +nl802154_policy_GET_SEC_DEV [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_NEW_SEC_DEV [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_DEVICE nlnest[NL802154_ATTR_SEC_DEVICE, array[nl802154_dev_policy]] +] [varlen] + +nl802154_dev_policy [ + NL802154_DEV_ATTR_FRAME_COUNTER nlattr[NL802154_DEV_ATTR_FRAME_COUNTER, int16] + NL802154_DEV_ATTR_PAN_ID nlattr[NL802154_DEV_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + NL802154_DEV_ATTR_SHORT_ADDR nlattr[NL802154_DEV_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + NL802154_DEV_ATTR_EXTENDED_ADDR nlattr[NL802154_DEV_ATTR_EXTENDED_ADDR, ieee802154_hwaddr] + NL802154_DEV_ATTR_SECLEVEL_EXEMPT nlattr[NL802154_DEV_ATTR_SECLEVEL_EXEMPT, bool8] + NL802154_DEV_ATTR_KEY_MODE nlattr[NL802154_DEV_ATTR_KEY_MODE, int32[0:NL802154_DEVKEY_MAX]] +] [varlen] + +nl802154_policy_DEL_SEC_DEV [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_DEVICE nlnest[NL802154_ATTR_SEC_DEVICE, nlattr[NL802154_DEV_ATTR_EXTENDED_ADDR, ieee802154_hwaddr]] +] [varlen] + +nl802154_policy_GET_SEC_DEVKEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_NEW_SEC_DEVKEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_DEVKEY nlnest[NL802154_ATTR_SEC_DEVKEY, array[nl802154_devkey_policy]] +] [varlen] + +nl802154_devkey_policy [ + NL802154_DEVKEY_ATTR_FRAME_COUNTER nlattr[NL802154_DEVKEY_ATTR_FRAME_COUNTER, int32] + NL802154_DEVKEY_ATTR_EXTENDED_ADDR nlattr[NL802154_DEVKEY_ATTR_EXTENDED_ADDR, ieee802154_hwaddr] + NL802154_DEVKEY_ATTR_ID nlnest[NL802154_DEVKEY_ATTR_ID, array[nl802154_key_id_policy]] +] [varlen] + +nl802154_policy_DEL_SEC_DEVKEY [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_DEVKEY nlnest[NL802154_ATTR_SEC_DEVKEY, array[nl802154_devkey_policy]] +] [varlen] + +nl802154_policy_GET_SEC_LEVEL [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] +] [varlen] + +nl802154_policy_NEW_DEL_SEC_LEVEL [ + NL802154_ATTR_IFINDEX nlattr[NL802154_ATTR_IFINDEX, ieee802154_ifindex] + NL802154_ATTR_WPAN_DEV nlattr[NL802154_ATTR_WPAN_DEV, flags[ieee802154_dev_index, int64]] + NL802154_ATTR_SEC_LEVEL nlnest[NL802154_ATTR_SEC_LEVEL, array[nl802154_seclevel_policy]] +] [varlen] + +nl802154_seclevel_policy [ + NL802154_SECLEVEL_ATTR_LEVELS nlattr[NL802154_SECLEVEL_ATTR_LEVELS, int8] + NL802154_SECLEVEL_ATTR_FRAME nlattr[NL802154_SECLEVEL_ATTR_FRAME, int32[0:NL802154_FRAME_MAX]] + NL802154_SECLEVEL_ATTR_CMD_FRAME nlattr[NL802154_SECLEVEL_ATTR_CMD_FRAME, int32[0:NL802154_CMD_FRAME_MAX]] + NL802154_SECLEVEL_ATTR_DEV_OVERRIDE nlattr[NL802154_SECLEVEL_ATTR_DEV_OVERRIDE, bool8] +] [varlen] + +resource genl_ieee802154_family_id[int16] +type msghdr_ieee802154[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_ieee802154_family_id, genlmsghdr_t[CMD], POLICY]] + +syz_genetlink_get_family_id$ieee802154(name ptr[in, string["802.15.4 MAC"]], fd sock_nl_generic_init) genl_ieee802154_family_id + +sendmsg$IEEE802154_LIST_PHY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LIST_PHY, void]], f flags[send_flags]) +sendmsg$IEEE802154_ADD_IFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_ADD_IFACE, ieee802154_policy_ADD_IFACE]], f flags[send_flags]) +# This is disabled as we only have 2 global hwsim devices, if we delete them we are out of devices. +# sendmsg$IEEE802154_DEL_IFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_DEL_IFACE, ieee802154_policy_DEL_IFACE]], f flags[send_flags]) +sendmsg$IEEE802154_ASSOCIATE_REQ(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_ASSOCIATE_REQ, ieee802154_policy_ASSOCIATE_REQ]], f flags[send_flags]) +sendmsg$IEEE802154_ASSOCIATE_RESP(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_ASSOCIATE_RESP, ieee802154_policy_ASSOCIATE_RESP]], f flags[send_flags]) +sendmsg$IEEE802154_DISASSOCIATE_REQ(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_DISASSOCIATE_REQ, ieee802154_policy_DISASSOCIATE_REQ]], f flags[send_flags]) +sendmsg$IEEE802154_SCAN_REQ(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_SCAN_REQ, ieee802154_policy_SCAN_REQ]], f flags[send_flags]) +sendmsg$IEEE802154_START_REQ(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_START_REQ, ieee802154_policy_START_REQ]], f flags[send_flags]) +sendmsg$IEEE802154_LIST_IFACE(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LIST_IFACE, ieee802154_policy_LIST_IFACE]], f flags[send_flags]) +sendmsg$IEEE802154_SET_MACPARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_SET_MACPARAMS, ieee802154_policy_SET_MACPARAMS]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_GETPARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_GETPARAMS, ieee802154_policy_LLSEC_GETPARAMS]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_SETPARAMS(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_SETPARAMS, ieee802154_policy_LLSEC_SETPARAMS]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_LIST_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_LIST_KEY, void]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_ADD_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_ADD_KEY, ieee802154_policy_LLSEC_ADD_KEY]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_DEL_KEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_DEL_KEY, ieee802154_policy_LLSEC_DEL_KEY]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_LIST_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_LIST_DEV, void]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_ADD_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_ADD_DEV, ieee802154_policy_LLSEC_ADD_DEV]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_DEL_DEV(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_DEL_DEV, ieee802154_policy_LLSEC_DEL_DEV]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_LIST_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_LIST_DEVKEY, void]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_ADD_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_ADD_DEVKEY, ieee802154_policy_LLSEC_ADD_DEVKEY]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_DEL_DEVKEY(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_DEL_DEVKEY, ieee802154_policy_LLSEC_DEL_DEVKEY]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_LIST_SECLEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_LIST_SECLEVEL, void]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_ADD_SECLEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_ADD_SECLEVEL, ieee802154_policy_LLSEC_ADD_DEL_SECLEVEL]], f flags[send_flags]) +sendmsg$IEEE802154_LLSEC_DEL_SECLEVEL(fd sock_nl_generic_init, msg ptr[in, msghdr_ieee802154[IEEE802154_LLSEC_DEL_SECLEVEL, ieee802154_policy_LLSEC_ADD_DEL_SECLEVEL]], f flags[send_flags]) + +ieee802154_policy_ADD_IFACE [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_PHY_NAME nlattr[IEEE802154_ATTR_PHY_NAME, string[ieee802154_phy_names]] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_DEV_TYPE nlattr[IEEE802154_ATTR_DEV_TYPE, int8[IEEE802154_DEV_WPAN:IEEE802154_DEV_MONITOR]] +] [varlen] + +#ieee802154_policy_DEL_IFACE [ +# IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] +# IEEE802154_ATTR_PHY_NAME nlattr[IEEE802154_ATTR_PHY_NAME, string[ieee802154_phy_names]] +#] [varlen] + +ieee802154_policy_ASSOCIATE_REQ [ + IEEE802154_ATTR_CHANNEL nlattr[IEEE802154_ATTR_CHANNEL, int8[0:IEEE802154_MAX_CHANNEL]] + IEEE802154_ATTR_COORD_PAN_ID nlattr[IEEE802154_ATTR_COORD_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_COORD_HW_ADDR nlattr[IEEE802154_ATTR_COORD_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_COORD_SHORT_ADDR nlattr[IEEE802154_ATTR_COORD_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_CAPABILITY nlattr[IEEE802154_ATTR_CAPABILITY, int8] + IEEE802154_ATTR_PAGE nlattr[IEEE802154_ATTR_PAGE, int8[0:IEEE802154_MAX_PAGE]] +] [varlen] + +ieee802154_policy_ASSOCIATE_RESP [ + IEEE802154_ATTR_STATUS nlattr[IEEE802154_ATTR_STATUS, int8] + IEEE802154_ATTR_COORD_HW_ADDR nlattr[IEEE802154_ATTR_COORD_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_COORD_SHORT_ADDR nlattr[IEEE802154_ATTR_COORD_SHORT_ADDR, flags[ieee802154_short_addr, int16]] +] [varlen] + +ieee802154_policy_DISASSOCIATE_REQ [ + IEEE802154_ATTR_REASON nlattr[IEEE802154_ATTR_REASON, int8] + IEEE802154_ATTR_COORD_HW_ADDR nlattr[IEEE802154_ATTR_COORD_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_COORD_SHORT_ADDR nlattr[IEEE802154_ATTR_COORD_SHORT_ADDR, flags[ieee802154_short_addr, int16]] +] [varlen] + +ieee802154_policy_SCAN_REQ [ + IEEE802154_ATTR_SCAN_TYPE nlattr[IEEE802154_ATTR_SCAN_TYPE, int8] + IEEE802154_ATTR_CHANNELS nlattr[IEEE802154_ATTR_CHANNELS, int32[0:IEEE802154_MAX_CHANNEL]] + IEEE802154_ATTR_DURATION nlattr[IEEE802154_ATTR_DURATION, int8] + IEEE802154_ATTR_PAGE nlattr[IEEE802154_ATTR_PAGE, int8[0:IEEE802154_MAX_PAGE]] +] [varlen] + +ieee802154_policy_START_REQ [ + IEEE802154_ATTR_COORD_PAN_ID nlattr[IEEE802154_ATTR_COORD_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_COORD_SHORT_ADDR nlattr[IEEE802154_ATTR_COORD_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_CHANNEL nlattr[IEEE802154_ATTR_CHANNEL, int8[0:IEEE802154_MAX_CHANNEL]] + IEEE802154_ATTR_BCN_ORD nlattr[IEEE802154_ATTR_BCN_ORD, int8] + IEEE802154_ATTR_SF_ORD nlattr[IEEE802154_ATTR_SF_ORD, int8] + IEEE802154_ATTR_PAN_COORD nlattr[IEEE802154_ATTR_PAN_COORD, int8] + IEEE802154_ATTR_BAT_EXT nlattr[IEEE802154_ATTR_BAT_EXT, int8] + IEEE802154_ATTR_COORD_REALIGN nlattr[IEEE802154_ATTR_COORD_REALIGN, int8] + IEEE802154_ATTR_PAGE nlattr[IEEE802154_ATTR_PAGE, int8[0:IEEE802154_MAX_PAGE]] +] [varlen] + +ieee802154_policy_LIST_IFACE [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] +] [varlen] + +ieee802154_policy_SET_MACPARAMS [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LBT_ENABLED nlattr[IEEE802154_ATTR_LBT_ENABLED, bool8] + IEEE802154_ATTR_CCA_MODE nlattr[IEEE802154_ATTR_CCA_MODE, int8] + IEEE802154_ATTR_CCA_ED_LEVEL nlattr[IEEE802154_ATTR_CCA_ED_LEVEL, int32] + IEEE802154_ATTR_CSMA_RETRIES nlattr[IEEE802154_ATTR_CSMA_RETRIES, int8] + IEEE802154_ATTR_CSMA_MIN_BE nlattr[IEEE802154_ATTR_CSMA_MIN_BE, int8] + IEEE802154_ATTR_CSMA_MAX_BE nlattr[IEEE802154_ATTR_CSMA_MAX_BE, int8] + IEEE802154_ATTR_FRAME_RETRIES nlattr[IEEE802154_ATTR_FRAME_RETRIES, int8] + IEEE802154_ATTR_TXPOWER nlattr[IEEE802154_ATTR_TXPOWER, int8] +] [varlen] + +ieee802154_policy_LLSEC_GETPARAMS [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] +] [varlen] + +ieee802154_policy_LLSEC_SETPARAMS [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_SECLEVEL nlattr[IEEE802154_ATTR_LLSEC_SECLEVEL, int8[0:7]] + IEEE802154_ATTR_LLSEC_ENABLED nlattr[IEEE802154_ATTR_LLSEC_ENABLED, bool8] + IEEE802154_ATTR_LLSEC_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_KEY_MODE, flags[ieee802154_scf_key, int8]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_LLSEC_KEY_ID nlattr[IEEE802154_ATTR_LLSEC_KEY_ID, int8] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT, int32] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED, ieee802154_hwaddr] + IEEE802154_ATTR_LLSEC_FRAME_COUNTER nlattr[IEEE802154_ATTR_LLSEC_FRAME_COUNTER, int32] +] [varlen] + +ieee802154_scf_key = IEEE802154_SCF_KEY_IMPLICIT, IEEE802154_SCF_KEY_INDEX, IEEE802154_SCF_KEY_SHORT_INDEX, IEEE802154_SCF_KEY_HW_INDEX + +ieee802154_policy_LLSEC_ADD_KEY [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES nlattr[IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES, int8] + IEEE802154_ATTR_LLSEC_KEY_BYTES nlattr[IEEE802154_ATTR_LLSEC_KEY_BYTES, array[int8, 16]] + IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS nlattr[IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS, array[int8, 32]] + IEEE802154_ATTR_LLSEC_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_KEY_MODE, flags[ieee802154_scf_key, int8]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_LLSEC_KEY_ID nlattr[IEEE802154_ATTR_LLSEC_KEY_ID, int8] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT, int32] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED, ieee802154_hwaddr] +] [varlen] + +ieee802154_policy_LLSEC_DEL_KEY [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_KEY_MODE, flags[ieee802154_scf_key, int8]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_LLSEC_KEY_ID nlattr[IEEE802154_ATTR_LLSEC_KEY_ID, int8] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT, int32] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED, ieee802154_hwaddr] +] [varlen] + +ieee802154_policy_LLSEC_ADD_DEV [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_FRAME_COUNTER nlattr[IEEE802154_ATTR_LLSEC_FRAME_COUNTER, int32] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_LLSEC_DEV_OVERRIDE nlattr[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE, bool8] + IEEE802154_ATTR_LLSEC_DEV_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_DEV_KEY_MODE, flags[ieee802154_devkey_mode, int8]] +] [varlen] + +ieee802154_devkey_mode = NL802154_DEVKEY_IGNORE, NL802154_DEVKEY_RESTRICT, NL802154_DEVKEY_RECORD + +ieee802154_policy_LLSEC_DEL_DEV [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] +] [varlen] + +ieee802154_policy_LLSEC_ADD_DEVKEY [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_FRAME_COUNTER nlattr[IEEE802154_ATTR_LLSEC_FRAME_COUNTER, int32] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_LLSEC_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_KEY_MODE, flags[ieee802154_scf_key, int8]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_LLSEC_KEY_ID nlattr[IEEE802154_ATTR_LLSEC_KEY_ID, int8] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT, int32] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED, ieee802154_hwaddr] +] [varlen] + +ieee802154_policy_LLSEC_DEL_DEVKEY [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_HW_ADDR nlattr[IEEE802154_ATTR_HW_ADDR, ieee802154_hwaddr] + IEEE802154_ATTR_LLSEC_KEY_MODE nlattr[IEEE802154_ATTR_LLSEC_KEY_MODE, flags[ieee802154_scf_key, int8]] + IEEE802154_ATTR_PAN_ID nlattr[IEEE802154_ATTR_PAN_ID, flags[ieee802154_pan_id, int16]] + IEEE802154_ATTR_SHORT_ADDR nlattr[IEEE802154_ATTR_SHORT_ADDR, flags[ieee802154_short_addr, int16]] + IEEE802154_ATTR_LLSEC_KEY_ID nlattr[IEEE802154_ATTR_LLSEC_KEY_ID, int8] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT, int32] + IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED nlattr[IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED, ieee802154_hwaddr] +] [varlen] + +ieee802154_policy_LLSEC_ADD_DEL_SECLEVEL [ + IEEE802154_ATTR_DEV_NAME nlattr[IEEE802154_ATTR_DEV_NAME, string[ieee802154_dev_names]] + IEEE802154_ATTR_DEV_INDEX nlattr[IEEE802154_ATTR_DEV_INDEX, ieee802154_ifindex] + IEEE802154_ATTR_LLSEC_FRAME_TYPE nlattr[IEEE802154_ATTR_LLSEC_FRAME_TYPE, int8] + IEEE802154_ATTR_LLSEC_SECLEVELS nlattr[IEEE802154_ATTR_LLSEC_SECLEVELS, int8] + IEEE802154_ATTR_LLSEC_DEV_OVERRIDE nlattr[IEEE802154_ATTR_LLSEC_DEV_OVERRIDE, bool8] + IEEE802154_ATTR_LLSEC_CMD_FRAME_ID nlattr[IEEE802154_ATTR_LLSEC_CMD_FRAME_ID, int8] +] [varlen] + +sockaddr_ieee802154 { + family const[AF_IEEE802154, int16] + addr ieee802154_addr_sa +} + +ieee802154_addr_sa [ + none ieee802154_addr_sa_t[IEEE802154_ADDR_NONE, void] + short ieee802154_addr_sa_t[IEEE802154_ADDR_SHORT, flags[ieee802154_short_addr, int16]] + long ieee802154_addr_sa_t[IEEE802154_ADDR_LONG, ieee802154_hwaddr] +] + +type ieee802154_addr_sa_t[TYP, ADDR] { + addr_type const[TYP, int32] + pan_id flags[ieee802154_pan_id, int16] + addr ADDR +} + +ieee802154_hwaddr { + val flags[ieee802154_hwaddrs, int64] +} [align[1]] + +msghdr_802154 { + addr ptr[in, sockaddr_ieee802154, opt] + addrlen len[addr, int32] + vec ptr[in, iovec[in, array[int8]]] + vlen const[1, intptr] + ctrl const[0, intptr] + ctrllen const[0, intptr] + f flags[send_flags, int32] +} + +# executor/common_linux.h:setup_802154 knowns about these constants. +ieee802154_short_addr = IEEE802154_ADDR_UNDEF, IEEE802154_ADDR_BROADCAST, 0, 0xaaa0, 0xaaa1, 0xaaa2, 0xaaa3 +# Note: the last byte (02) is some flags that need to have a particular value. +ieee802154_hwaddrs = 0, 0xaaaaaaaaaaaa0002, 0xaaaaaaaaaaaa0102, 0xaaaaaaaaaaaa0202, 0xaaaaaaaaaaaa0302 +ieee802154_dev_names = "wpan0", "wpan1", "wpan3", "wpan4" +ieee802154_phy_names = "phy0", "phy1", "phy2", "phy3" +ieee802154_phy_index = 0, 1, 2, 3 +ieee802154_dev_index = 0x0, 0x100000001, 0x200000002, 0x300000003, 0x2, 0x3 +ieee802154_pan_id = IEEE802154_PANID_BROADCAST, 0, 1, 2, 3 +ieee802154_security = WPAN_SECURITY_DEFAULT, WPAN_SECURITY_OFF, WPAN_SECURITY_ON diff --git a/sys/linux/socket_ieee802154.txt.const b/sys/linux/socket_ieee802154.txt.const new file mode 100644 index 000000000..7f0765bf2 --- /dev/null +++ b/sys/linux/socket_ieee802154.txt.const @@ -0,0 +1,211 @@ +# Code generated by syz-sysgen. DO NOT EDIT. +arches = 386, amd64, arm, arm64, mips64le, ppc64le, riscv64, s390x +AF_IEEE802154 = 36 +IEEE802154_ADDR_BROADCAST = 65535 +IEEE802154_ADDR_LONG = 3 +IEEE802154_ADDR_NONE = 0 +IEEE802154_ADDR_SHORT = 2 +IEEE802154_ADDR_UNDEF = 65534 +IEEE802154_ADD_IFACE = 33 +IEEE802154_ASSOCIATE_REQ = 1 +IEEE802154_ASSOCIATE_RESP = 19 +IEEE802154_ATTR_BAT_EXT = 26 +IEEE802154_ATTR_BCN_ORD = 23 +IEEE802154_ATTR_CAPABILITY = 17 +IEEE802154_ATTR_CCA_ED_LEVEL = 36 +IEEE802154_ATTR_CCA_MODE = 35 +IEEE802154_ATTR_CHANNEL = 7 +IEEE802154_ATTR_CHANNELS = 20 +IEEE802154_ATTR_COORD_HW_ADDR = 9 +IEEE802154_ATTR_COORD_PAN_ID = 10 +IEEE802154_ATTR_COORD_REALIGN = 27 +IEEE802154_ATTR_COORD_SHORT_ADDR = 8 +IEEE802154_ATTR_CSMA_MAX_BE = 39 +IEEE802154_ATTR_CSMA_MIN_BE = 38 +IEEE802154_ATTR_CSMA_RETRIES = 37 +IEEE802154_ATTR_DEV_INDEX = 2 +IEEE802154_ATTR_DEV_NAME = 1 +IEEE802154_ATTR_DEV_TYPE = 32 +IEEE802154_ATTR_DURATION = 21 +IEEE802154_ATTR_FRAME_RETRIES = 40 +IEEE802154_ATTR_HW_ADDR = 5 +IEEE802154_ATTR_LBT_ENABLED = 34 +IEEE802154_ATTR_LLSEC_CMD_FRAME_ID = 52 +IEEE802154_ATTR_LLSEC_DEV_KEY_MODE = 55 +IEEE802154_ATTR_LLSEC_DEV_OVERRIDE = 54 +IEEE802154_ATTR_LLSEC_ENABLED = 41 +IEEE802154_ATTR_LLSEC_FRAME_COUNTER = 47 +IEEE802154_ATTR_LLSEC_FRAME_TYPE = 51 +IEEE802154_ATTR_LLSEC_KEY_BYTES = 48 +IEEE802154_ATTR_LLSEC_KEY_ID = 46 +IEEE802154_ATTR_LLSEC_KEY_MODE = 43 +IEEE802154_ATTR_LLSEC_KEY_SOURCE_EXTENDED = 45 +IEEE802154_ATTR_LLSEC_KEY_SOURCE_SHORT = 44 +IEEE802154_ATTR_LLSEC_KEY_USAGE_COMMANDS = 50 +IEEE802154_ATTR_LLSEC_KEY_USAGE_FRAME_TYPES = 49 +IEEE802154_ATTR_LLSEC_SECLEVEL = 42 +IEEE802154_ATTR_LLSEC_SECLEVELS = 53 +IEEE802154_ATTR_PAGE = 29 +IEEE802154_ATTR_PAN_COORD = 25 +IEEE802154_ATTR_PAN_ID = 6 +IEEE802154_ATTR_PHY_NAME = 31 +IEEE802154_ATTR_REASON = 18 +IEEE802154_ATTR_SCAN_TYPE = 19 +IEEE802154_ATTR_SF_ORD = 24 +IEEE802154_ATTR_SHORT_ADDR = 4 +IEEE802154_ATTR_STATUS = 3 +IEEE802154_ATTR_TXPOWER = 33 +IEEE802154_DEV_MONITOR = 1 +IEEE802154_DEV_WPAN = 0 +IEEE802154_DISASSOCIATE_REQ = 3 +IEEE802154_LIST_IFACE = 31 +IEEE802154_LIST_PHY = 32 +IEEE802154_LLSEC_ADD_DEV = 42 +IEEE802154_LLSEC_ADD_DEVKEY = 45 +IEEE802154_LLSEC_ADD_KEY = 39 +IEEE802154_LLSEC_ADD_SECLEVEL = 48 +IEEE802154_LLSEC_DEL_DEV = 43 +IEEE802154_LLSEC_DEL_DEVKEY = 46 +IEEE802154_LLSEC_DEL_KEY = 40 +IEEE802154_LLSEC_DEL_SECLEVEL = 49 +IEEE802154_LLSEC_GETPARAMS = 36 +IEEE802154_LLSEC_LIST_DEV = 41 +IEEE802154_LLSEC_LIST_DEVKEY = 44 +IEEE802154_LLSEC_LIST_KEY = 38 +IEEE802154_LLSEC_LIST_SECLEVEL = 47 +IEEE802154_LLSEC_SETPARAMS = 37 +IEEE802154_MAX_CHANNEL = 26 +IEEE802154_MAX_PAGE = 31 +IEEE802154_PANID_BROADCAST = 65535 +IEEE802154_SCAN_REQ = 9 +IEEE802154_SCF_KEY_HW_INDEX = 3 +IEEE802154_SCF_KEY_IMPLICIT = 0 +IEEE802154_SCF_KEY_INDEX = 1 +IEEE802154_SCF_KEY_SHORT_INDEX = 2 +IEEE802154_SCF_SECLEVEL_ENC_MIC128 = 7 +IEEE802154_SET_MACPARAMS = 35 +IEEE802154_START_REQ = 13 +NL802154_ATTR_ACKREQ_DEFAULT = 26 +NL802154_ATTR_CCA_ED_LEVEL = 14 +NL802154_ATTR_CCA_MODE = 12 +NL802154_ATTR_CCA_OPT = 13 +NL802154_ATTR_CHANNEL = 8 +NL802154_ATTR_EXTENDED_ADDR = 23 +NL802154_ATTR_IFINDEX = 3 +NL802154_ATTR_IFNAME = 4 +NL802154_ATTR_IFTYPE = 5 +NL802154_ATTR_LBT_MODE = 19 +NL802154_ATTR_MAX_BE = 16 +NL802154_ATTR_MAX_CSMA_BACKOFFS = 18 +NL802154_ATTR_MAX_FRAME_RETRIES = 15 +NL802154_ATTR_MIN_BE = 17 +NL802154_ATTR_NETNS_FD = 29 +NL802154_ATTR_PAGE = 7 +NL802154_ATTR_PAN_ID = 9 +NL802154_ATTR_PID = 28 +NL802154_ATTR_SEC_DEVICE = 35 +NL802154_ATTR_SEC_DEVKEY = 36 +NL802154_ATTR_SEC_ENABLED = 30 +NL802154_ATTR_SEC_FRAME_COUNTER = 33 +NL802154_ATTR_SEC_KEY = 37 +NL802154_ATTR_SEC_LEVEL = 34 +NL802154_ATTR_SEC_OUT_KEY_ID = 32 +NL802154_ATTR_SEC_OUT_LEVEL = 31 +NL802154_ATTR_SHORT_ADDR = 10 +NL802154_ATTR_TX_POWER = 11 +NL802154_ATTR_WPAN_DEV = 6 +NL802154_ATTR_WPAN_PHY = 1 +NL802154_CCA_ALOHA = 4 +NL802154_CCA_CARRIER = 2 +NL802154_CCA_ENERGY = 1 +NL802154_CCA_ENERGY_CARRIER = 3 +NL802154_CCA_OPT_ENERGY_CARRIER_AND = 0 +NL802154_CCA_OPT_ENERGY_CARRIER_OR = 1 +NL802154_CCA_UWB_MULTIPLEXED = 6 +NL802154_CCA_UWB_SHR = 5 +NL802154_CMD_DEL_SEC_DEV = 27 +NL802154_CMD_DEL_SEC_DEVKEY = 30 +NL802154_CMD_DEL_SEC_KEY = 24 +NL802154_CMD_DEL_SEC_LEVEL = 33 +NL802154_CMD_FRAME_MAX = 9 +NL802154_CMD_GET_INTERFACE = 5 +NL802154_CMD_GET_SEC_DEV = 25 +NL802154_CMD_GET_SEC_DEVKEY = 28 +NL802154_CMD_GET_SEC_KEY = 22 +NL802154_CMD_GET_SEC_LEVEL = 31 +NL802154_CMD_GET_WPAN_PHY = 1 +NL802154_CMD_NEW_INTERFACE = 7 +NL802154_CMD_NEW_SEC_DEV = 26 +NL802154_CMD_NEW_SEC_DEVKEY = 29 +NL802154_CMD_NEW_SEC_KEY = 23 +NL802154_CMD_NEW_SEC_LEVEL = 32 +NL802154_CMD_SET_ACKREQ_DEFAULT = 19 +NL802154_CMD_SET_BACKOFF_EXPONENT = 16 +NL802154_CMD_SET_CCA_ED_LEVEL = 14 +NL802154_CMD_SET_CCA_MODE = 13 +NL802154_CMD_SET_CHANNEL = 9 +NL802154_CMD_SET_LBT_MODE = 18 +NL802154_CMD_SET_MAX_CSMA_BACKOFFS = 17 +NL802154_CMD_SET_MAX_FRAME_RETRIES = 15 +NL802154_CMD_SET_PAN_ID = 10 +NL802154_CMD_SET_SEC_PARAMS = 21 +NL802154_CMD_SET_SHORT_ADDR = 11 +NL802154_CMD_SET_TX_POWER = 12 +NL802154_CMD_SET_WPAN_PHY_NETNS = 20 +NL802154_DEVKEY_ATTR_EXTENDED_ADDR = 2 +NL802154_DEVKEY_ATTR_FRAME_COUNTER = 1 +NL802154_DEVKEY_ATTR_ID = 3 +NL802154_DEVKEY_IGNORE = 0 +NL802154_DEVKEY_MAX = 2 +NL802154_DEVKEY_RECORD = 2 +NL802154_DEVKEY_RESTRICT = 1 +NL802154_DEV_ADDR_ATTR_EXTENDED = 4 +NL802154_DEV_ADDR_ATTR_MODE = 2 +NL802154_DEV_ADDR_ATTR_PAN_ID = 1 +NL802154_DEV_ADDR_ATTR_SHORT = 3 +NL802154_DEV_ADDR_MAX = 3 +NL802154_DEV_ATTR_EXTENDED_ADDR = 4 +NL802154_DEV_ATTR_FRAME_COUNTER = 1 +NL802154_DEV_ATTR_KEY_MODE = 6 +NL802154_DEV_ATTR_PAN_ID = 2 +NL802154_DEV_ATTR_SECLEVEL_EXEMPT = 5 +NL802154_DEV_ATTR_SHORT_ADDR = 3 +NL802154_FRAME_MAX = 3 +NL802154_IFTYPE_COORD = 2 +NL802154_IFTYPE_MONITOR = 1 +NL802154_IFTYPE_NODE = 0 +NL802154_IFTYPE_UNSPEC = 18446744073709551615 +NL802154_KEY_ATTR_BYTES = 4 +NL802154_KEY_ATTR_ID = 1 +NL802154_KEY_ATTR_USAGE_CMDS = 3 +NL802154_KEY_ATTR_USAGE_FRAMES = 2 +NL802154_KEY_ID_ATTR_IMPLICIT = 3 +NL802154_KEY_ID_ATTR_INDEX = 2 +NL802154_KEY_ID_ATTR_MODE = 1 +NL802154_KEY_ID_ATTR_SOURCE_EXTENDED = 5 +NL802154_KEY_ID_ATTR_SOURCE_SHORT = 4 +NL802154_KEY_ID_MODE_MAX = 3 +NL802154_KEY_SIZE = 16 +NL802154_SECLEVEL_ATTR_CMD_FRAME = 3 +NL802154_SECLEVEL_ATTR_DEV_OVERRIDE = 4 +NL802154_SECLEVEL_ATTR_FRAME = 2 +NL802154_SECLEVEL_ATTR_LEVELS = 1 +NL802154_SECLEVEL_MAX = 7 +SIOCGIFINDEX = 35123 +SOCK_DGRAM = 2, mips64le:1 +SOCK_RAW = 3 +SOL_IEEE802154 = 0 +WPAN_SECURITY = 1 +WPAN_SECURITY_DEFAULT = 0 +WPAN_SECURITY_LEVEL = 2 +WPAN_SECURITY_LEVEL_DEFAULT = 18446744073709551615 +WPAN_SECURITY_OFF = 1 +WPAN_SECURITY_ON = 2 +WPAN_WANTACK = 0 +WPAN_WANTLQI = 3 +__NR_bind = 200, 386:s390x:361, amd64:49, arm:282, mips64le:5048, ppc64le:327 +__NR_connect = 203, 386:s390x:362, amd64:42, arm:283, mips64le:5041, ppc64le:328 +__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_sendmsg = 211, 386:s390x:370, amd64:46, arm:296, mips64le:5045, ppc64le:341 +__NR_setsockopt = 208, 386:s390x:366, amd64:54, arm:294, mips64le:5053, ppc64le:339 diff --git a/sys/linux/socket_inet_l2tp.txt b/sys/linux/socket_inet_l2tp.txt index b283ea773..f5f7d0872 100644 --- a/sys/linux/socket_inet_l2tp.txt +++ b/sys/linux/socket_inet_l2tp.txt @@ -47,7 +47,7 @@ sockaddr_l2tpip6 { resource genl_l2tp_family_id[int16] type msghdr_nl_l2tp[CMD] msghdr_netlink[netlink_msg_t[genl_l2tp_family_id, genlmsghdr_t[CMD], l2tp_nl_policy]] -syz_genetlink_get_family_id$l2tp(name ptr[in, string["l2tp"]]) genl_l2tp_family_id +syz_genetlink_get_family_id$l2tp(name ptr[in, string["l2tp"]], fd sock_nl_generic) genl_l2tp_family_id sendmsg$L2TP_CMD_NOOP(fd sock_nl_generic, msg ptr[in, msghdr_nl_l2tp[L2TP_CMD_NOOP]], f flags[send_flags]) sendmsg$L2TP_CMD_TUNNEL_CREATE(fd sock_nl_generic, msg ptr[in, msghdr_nl_l2tp[L2TP_CMD_TUNNEL_CREATE]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic.txt b/sys/linux/socket_netlink_generic.txt index a4f64ac02..2f925733b 100644 --- a/sys/linux/socket_netlink_generic.txt +++ b/sys/linux/socket_netlink_generic.txt @@ -13,6 +13,20 @@ resource sock_nl_generic[sock_netlink] socket$nl_generic(domain const[AF_NETLINK], type const[SOCK_RAW], proto const[NETLINK_GENERIC]) sock_nl_generic +# This is NETLINK_GENERIC created in init_net namespace. Use with extreme care. +# It's very dangerous to use as it allows the fuzzer to bring down network connectivity +# and destroy the machine in other ways. But it's required for ieee802154 testing and +# some other netlink protocols that can be used only in init_net (.netnsok = false). +# It is specifically not derived from fd/sock, so that fuzzer does not try to use it other ways. +# However, it's still easy to abuse it since fd number is low and can easily be used +# as the result of race or something. If this proves to be problematic, we can either +# create a pseudo syscall that creates socket, moves it to a high fd and then changes namespace, +# and/or create a pseudo syscall that both creates the socket and send netlink message, +# or improve kernel to properly support namespaces for ieee802154. +resource sock_nl_generic_init[int32]: -1 + +syz_init_net_socket$nl_generic(domain const[AF_NETLINK], type const[SOCK_RAW], proto const[NETLINK_GENERIC]) sock_nl_generic_init + sendmsg$nl_generic(fd sock_nl_generic, msg ptr[in, msghdr_nl_generic], f flags[send_flags]) type msghdr_nl_generic msghdr_netlink[netlink_msg_t[netlink_random_msg_type, genlmsghdr, nl_generic_attr]] diff --git a/sys/linux/socket_netlink_generic_80211.txt b/sys/linux/socket_netlink_generic_80211.txt index 64cd222a3..7983492db 100644 --- a/sys/linux/socket_netlink_generic_80211.txt +++ b/sys/linux/socket_netlink_generic_80211.txt @@ -28,7 +28,7 @@ type msghdr_nl80211_rdev[CMD, POLICY] msghdr_nl80211[CMD, nl80211_rdev_payload, # TODO: fetch wiphy ids for devices created at executor initialization. Presently we're using small numbers in that hope that syzkaller will hit the right ones. type nl80211_wiphy int32[0:128] -syz_genetlink_get_family_id$nl80211(name ptr[in, string["nl80211"]]) nl80211_family_id +syz_genetlink_get_family_id$nl80211(name ptr[in, string["nl80211"]], fd sock_nl_generic) nl80211_family_id ioctl$sock_SIOCGIFINDEX_80211(fd sock, cmd const[SIOCGIFINDEX], arg ptr[inout, ifreq_dev_t[nl80211_devnames, nl80211_ifindex]]) sendmsg$NL80211_CMD_GET_WIPHY(fd sock_nl_generic, msg ptr[in, msghdr_nl80211_rdev[NL80211_CMD_GET_WIPHY, void]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_batadv.txt b/sys/linux/socket_netlink_generic_batadv.txt index 60fd39dea..6bfc147b0 100644 --- a/sys/linux/socket_netlink_generic_batadv.txt +++ b/sys/linux/socket_netlink_generic_batadv.txt @@ -9,7 +9,7 @@ include <uapi/linux/batman_adv.h> resource genl_batadv_family_id[int16] type msghdr_batadv[CMD] msghdr_netlink[netlink_msg_t[genl_batadv_family_id, genlmsghdr_t[CMD], batadv_netlink_policy]] -syz_genetlink_get_family_id$batadv(name ptr[in, string["batadv"]]) genl_batadv_family_id +syz_genetlink_get_family_id$batadv(name ptr[in, string["batadv"]], fd sock_nl_generic) genl_batadv_family_id sendmsg$BATADV_CMD_GET_MESH(fd sock_nl_generic, msg ptr[in, msghdr_batadv[BATADV_CMD_GET_MESH]], f flags[send_flags]) sendmsg$BATADV_CMD_TP_METER(fd sock_nl_generic, msg ptr[in, msghdr_batadv[BATADV_CMD_TP_METER]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_devlink.txt b/sys/linux/socket_netlink_generic_devlink.txt index 639ad9b3f..0e6dc7669 100644 --- a/sys/linux/socket_netlink_generic_devlink.txt +++ b/sys/linux/socket_netlink_generic_devlink.txt @@ -10,7 +10,7 @@ include <uapi/linux/genetlink.h> include <uapi/linux/devlink.h> resource genl_devlink_family_id[int16] -syz_genetlink_get_family_id$devlink(name ptr[in, string["devlink"]]) genl_devlink_family_id +syz_genetlink_get_family_id$devlink(name ptr[in, string["devlink"]], fd sock_nl_generic) genl_devlink_family_id type msghdr_nl_devlink[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_devlink_family_id, genlmsghdr_t[CMD], POLICY]] diff --git a/sys/linux/socket_netlink_generic_ethtool.txt b/sys/linux/socket_netlink_generic_ethtool.txt index c1eb3ed31..65a068f71 100644 --- a/sys/linux/socket_netlink_generic_ethtool.txt +++ b/sys/linux/socket_netlink_generic_ethtool.txt @@ -9,7 +9,7 @@ include <uapi/linux/ethtool_netlink.h> resource genl_ethtool_family_id[int16] type msghdr_ethtool[CMD, POLICY] msghdr_netlink[netlink_msg_t[genl_ethtool_family_id, genlmsghdr_t[CMD], POLICY]] -syz_genetlink_get_family_id$ethtool(name ptr[in, string["ethtool"]]) genl_ethtool_family_id +syz_genetlink_get_family_id$ethtool(name ptr[in, string["ethtool"]], fd sock_nl_generic) genl_ethtool_family_id sendmsg$ETHTOOL_MSG_STRSET_GET(fd sock_nl_generic, msg ptr[in, msghdr_ethtool[ETHTOOL_MSG_STRSET_GET, strset_get_policy]], f flags[send_flags]) sendmsg$ETHTOOL_MSG_LINKINFO_GET(fd sock_nl_generic, msg ptr[in, msghdr_ethtool[ETHTOOL_MSG_LINKINFO_GET, header_only_ethnl_policy[ETHTOOL_A_LINKINFO_HEADER]]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_fou.txt b/sys/linux/socket_netlink_generic_fou.txt index 49f449ad8..1fcf05457 100644 --- a/sys/linux/socket_netlink_generic_fou.txt +++ b/sys/linux/socket_netlink_generic_fou.txt @@ -11,7 +11,7 @@ include <uapi/linux/fou.h> resource genl_fou_family_id[int16] type msghdr_nl_fou[CMD] msghdr_netlink[netlink_msg_t[genl_fou_family_id, genlmsghdr_t[CMD], fou_nl_policy]] -syz_genetlink_get_family_id$fou(name ptr[in, string["fou"]]) genl_fou_family_id +syz_genetlink_get_family_id$fou(name ptr[in, string["fou"]], fd sock_nl_generic) genl_fou_family_id sendmsg$FOU_CMD_ADD(fd sock_nl_generic, msg ptr[in, msghdr_nl_fou[FOU_CMD_ADD]], f flags[send_flags]) sendmsg$FOU_CMD_DEL(fd sock_nl_generic, msg ptr[in, msghdr_nl_fou[FOU_CMD_DEL]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_gtp.txt b/sys/linux/socket_netlink_generic_gtp.txt index 918044ce8..287065d87 100644 --- a/sys/linux/socket_netlink_generic_gtp.txt +++ b/sys/linux/socket_netlink_generic_gtp.txt @@ -14,7 +14,7 @@ include <uapi/linux/gtp.h> resource genl_gtp_family_id[int16] type msghdr_nl_gtp[CMD] msghdr_netlink[netlink_msg_t[genl_gtp_family_id, genlmsghdr_t[CMD], gtp_genl_policy]] -syz_genetlink_get_family_id$gtp(name ptr[in, string["gtp"]]) genl_gtp_family_id +syz_genetlink_get_family_id$gtp(name ptr[in, string["gtp"]], fd sock_nl_generic) genl_gtp_family_id sendmsg$GTP_CMD_NEWPDP(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_NEWPDP]], f flags[send_flags]) sendmsg$GTP_CMD_DELPDP(fd sock_nl_generic, msg ptr[in, msghdr_nl_gtp[GTP_CMD_DELPDP]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_mptcp.txt b/sys/linux/socket_netlink_generic_mptcp.txt index a0ea0351a..c0ef24711 100644 --- a/sys/linux/socket_netlink_generic_mptcp.txt +++ b/sys/linux/socket_netlink_generic_mptcp.txt @@ -11,7 +11,7 @@ include <uapi/linux/mptcp.h> resource genl_mptcp_family_id[int16] type msghdr_nl_mptcp[CMD] msghdr_netlink[netlink_msg_t[genl_mptcp_family_id, genlmsghdr_t[CMD], mptcp_pm_policy]] -syz_genetlink_get_family_id$mptcp(name ptr[in, string["mptcp_pm"]]) genl_mptcp_family_id +syz_genetlink_get_family_id$mptcp(name ptr[in, string["mptcp_pm"]], fd sock_nl_generic) genl_mptcp_family_id sendmsg$MPTCP_PM_CMD_ADD_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_ADD_ADDR]], f flags[send_flags]) sendmsg$MPTCP_PM_CMD_DEL_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_mptcp[MPTCP_PM_CMD_DEL_ADDR]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_net_dm.txt b/sys/linux/socket_netlink_generic_net_dm.txt index f1fd4cde4..9bb9af274 100644 --- a/sys/linux/socket_netlink_generic_net_dm.txt +++ b/sys/linux/socket_netlink_generic_net_dm.txt @@ -11,7 +11,7 @@ include <uapi/linux/net_dropmon.h> resource genl_net_dm_family_id[int16] type msghdr_nl_net_dm[CMD] msghdr_netlink[netlink_msg_t[genl_net_dm_family_id, genlmsghdr_t[CMD], void]] -syz_genetlink_get_family_id$net_dm(name ptr[in, string["NET_DM"]]) genl_net_dm_family_id +syz_genetlink_get_family_id$net_dm(name ptr[in, string["NET_DM"]], fd sock_nl_generic_init) genl_net_dm_family_id -sendmsg$NET_DM_CMD_START(fd sock_nl_generic, msg ptr[in, msghdr_nl_net_dm[NET_DM_CMD_START]], f flags[send_flags]) -sendmsg$NET_DM_CMD_STOP(fd sock_nl_generic, msg ptr[in, msghdr_nl_net_dm[NET_DM_CMD_STOP]], f flags[send_flags]) +sendmsg$NET_DM_CMD_START(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_net_dm[NET_DM_CMD_START]], f flags[send_flags]) +sendmsg$NET_DM_CMD_STOP(fd sock_nl_generic_init, msg ptr[in, msghdr_nl_net_dm[NET_DM_CMD_STOP]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_netlabel.txt b/sys/linux/socket_netlink_generic_netlabel.txt index 1891a8c40..1de6843ab 100644 --- a/sys/linux/socket_netlink_generic_netlabel.txt +++ b/sys/linux/socket_netlink_generic_netlabel.txt @@ -17,16 +17,16 @@ include <net/netlabel/netlabel_calipso.h> resource netlbl_mgmt_family_id[int16] type msghdr_netlbl_mgmt[CMD] msghdr_netlink[netlink_msg_t[netlbl_mgmt_family_id, genlmsghdr_t[CMD], netlbl_mgmt_genl_policy]] -syz_genetlink_get_family_id$netlbl_mgmt(name ptr[in, string["NLBL_MGMT"]]) netlbl_mgmt_family_id +syz_genetlink_get_family_id$netlbl_mgmt(name ptr[in, string["NLBL_MGMT"]], fd sock_nl_generic_init) netlbl_mgmt_family_id -sendmsg$NLBL_MGMT_C_ADD(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_ADD]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_REMOVE(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_REMOVE]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_LISTALL(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_LISTALL]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_ADDDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_ADDDEF]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_REMOVEDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_REMOVEDEF]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_LISTDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_LISTDEF]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_PROTOCOLS(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_PROTOCOLS]], f flags[send_flags]) -sendmsg$NLBL_MGMT_C_VERSION(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_VERSION]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_ADD(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_ADD]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_REMOVE(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_REMOVE]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_LISTALL(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_LISTALL]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_ADDDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_ADDDEF]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_REMOVEDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_REMOVEDEF]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_LISTDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_LISTDEF]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_PROTOCOLS(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_PROTOCOLS]], f flags[send_flags]) +sendmsg$NLBL_MGMT_C_VERSION(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_mgmt[NLBL_MGMT_C_VERSION]], f flags[send_flags]) netlbl_mgmt_genl_policy [ # NLBL_MGMT_A_VERSION, NLBL_MGMT_A_ADDRSELECTOR, NLBL_MGMT_A_SELECTORLIST are output. @@ -48,16 +48,16 @@ nlbl_mgmt_protocol = NETLBL_NLTYPE_UNLABELED, NETLBL_NLTYPE_CIPSOV4, NETLBL_NLTY resource netlbl_unlabel_family_id[int16] type msghdr_netlbl_unlabel[CMD] msghdr_netlink[netlink_msg_t[netlbl_unlabel_family_id, genlmsghdr_t[CMD], netlbl_unlabel_genl_policy]] -syz_genetlink_get_family_id$netlbl_unlabel(name ptr[in, string["NLBL_UNLBL"]]) netlbl_unlabel_family_id +syz_genetlink_get_family_id$netlbl_unlabel(name ptr[in, string["NLBL_UNLBL"]], fd sock_nl_generic_init) netlbl_unlabel_family_id -sendmsg$NLBL_UNLABEL_C_STATICADD(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICADD]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_STATICREMOVE(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICREMOVE]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_STATICLIST(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICLIST]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_STATICADDDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICADDDEF]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_STATICREMOVEDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICREMOVEDEF]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_STATICLISTDEF(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICLISTDEF]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_ACCEPT(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_ACCEPT]], f flags[send_flags]) -sendmsg$NLBL_UNLABEL_C_LIST(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_LIST]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICADD(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICADD]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICREMOVE(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICREMOVE]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICLIST(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICLIST]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICADDDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICADDDEF]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICREMOVEDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICREMOVEDEF]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_STATICLISTDEF(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_STATICLISTDEF]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_ACCEPT(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_ACCEPT]], f flags[send_flags]) +sendmsg$NLBL_UNLABEL_C_LIST(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_unlabel[NLBL_UNLABEL_C_LIST]], f flags[send_flags]) netlbl_unlabel_genl_policy [ NLBL_UNLABEL_A_ACPTFLG nlattr[NLBL_UNLABEL_A_ACPTFLG, bool8] @@ -74,12 +74,12 @@ netlbl_unlabel_genl_policy [ resource netlbl_cipsov4_family_id[int16] type msghdr_netlbl_cipsov4[CMD] msghdr_netlink[netlink_msg_t[netlbl_cipsov4_family_id, genlmsghdr_t[CMD], netlbl_cipsov4_genl_policy]] -syz_genetlink_get_family_id$netlbl_cipso(name ptr[in, string["NLBL_CIPSOv4"]]) netlbl_cipsov4_family_id +syz_genetlink_get_family_id$netlbl_cipso(name ptr[in, string["NLBL_CIPSOv4"]], fd sock_nl_generic_init) netlbl_cipsov4_family_id -sendmsg$NLBL_CIPSOV4_C_ADD(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_ADD]], f flags[send_flags]) -sendmsg$NLBL_CIPSOV4_C_REMOVE(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_REMOVE]], f flags[send_flags]) -sendmsg$NLBL_CIPSOV4_C_LIST(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_LIST]], f flags[send_flags]) -sendmsg$NLBL_CIPSOV4_C_LISTALL(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_LISTALL]], f flags[send_flags]) +sendmsg$NLBL_CIPSOV4_C_ADD(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_ADD]], f flags[send_flags]) +sendmsg$NLBL_CIPSOV4_C_REMOVE(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_REMOVE]], f flags[send_flags]) +sendmsg$NLBL_CIPSOV4_C_LIST(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_LIST]], f flags[send_flags]) +sendmsg$NLBL_CIPSOV4_C_LISTALL(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_cipsov4[NLBL_CIPSOV4_C_LISTALL]], f flags[send_flags]) netlbl_cipsov4_genl_policy [ NLBL_CIPSOV4_A_DOI nlattr[NLBL_CIPSOV4_A_DOI, flags[cipso_doi, int32]] @@ -107,12 +107,12 @@ cipsov4_tags = CIPSO_V4_TAG_INVALID, CIPSO_V4_TAG_RBITMAP, CIPSO_V4_TAG_ENUM, CI resource netlbl_calipso_family_id[int16] type msghdr_netlbl_calipso[CMD] msghdr_netlink[netlink_msg_t[netlbl_calipso_family_id, genlmsghdr_t[CMD], calipso_genl_policy]] -syz_genetlink_get_family_id$netlbl_calipso(name ptr[in, string["NLBL_CALIPSO"]]) netlbl_calipso_family_id +syz_genetlink_get_family_id$netlbl_calipso(name ptr[in, string["NLBL_CALIPSO"]], fd sock_nl_generic_init) netlbl_calipso_family_id -sendmsg$NLBL_CALIPSO_C_ADD(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_ADD]], f flags[send_flags]) -sendmsg$NLBL_CALIPSO_C_REMOVE(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_REMOVE]], f flags[send_flags]) -sendmsg$NLBL_CALIPSO_C_LIST(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_LIST]], f flags[send_flags]) -sendmsg$NLBL_CALIPSO_C_LISTALL(fd sock_nl_generic, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_LISTALL]], f flags[send_flags]) +sendmsg$NLBL_CALIPSO_C_ADD(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_ADD]], f flags[send_flags]) +sendmsg$NLBL_CALIPSO_C_REMOVE(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_REMOVE]], f flags[send_flags]) +sendmsg$NLBL_CALIPSO_C_LIST(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_LIST]], f flags[send_flags]) +sendmsg$NLBL_CALIPSO_C_LISTALL(fd sock_nl_generic_init, msg ptr[in, msghdr_netlbl_calipso[NLBL_CALIPSO_C_LISTALL]], f flags[send_flags]) calipso_genl_policy [ NLBL_CALIPSO_A_DOI nlattr[NLBL_CALIPSO_A_DOI, flags[calipso_doi, int32]] diff --git a/sys/linux/socket_netlink_generic_seg6.txt b/sys/linux/socket_netlink_generic_seg6.txt index 488f56544..e9ff9affd 100644 --- a/sys/linux/socket_netlink_generic_seg6.txt +++ b/sys/linux/socket_netlink_generic_seg6.txt @@ -11,7 +11,7 @@ include <uapi/linux/seg6_genl.h> resource genl_seg6_family_id[int16] type msghdr_nl_seg6[CMD] msghdr_netlink[netlink_msg_t[genl_seg6_family_id, genlmsghdr_t[CMD], seg6_genl_policy]] -syz_genetlink_get_family_id$SEG6(name ptr[in, string["SEG6"]]) genl_seg6_family_id +syz_genetlink_get_family_id$SEG6(name ptr[in, string["SEG6"]], fd sock_nl_generic) genl_seg6_family_id sendmsg$SEG6_CMD_SETHMAC(fd sock_nl_generic, msg ptr[in, msghdr_nl_seg6[SEG6_CMD_SETHMAC]], f flags[send_flags]) sendmsg$SEG6_CMD_DUMPHMAC(fd sock_nl_generic, msg ptr[in, msghdr_nl_seg6[SEG6_CMD_DUMPHMAC]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_smc.txt b/sys/linux/socket_netlink_generic_smc.txt index 2c52c93a9..6e88a65fa 100644 --- a/sys/linux/socket_netlink_generic_smc.txt +++ b/sys/linux/socket_netlink_generic_smc.txt @@ -9,7 +9,7 @@ include <uapi/linux/smc.h> resource genl_smc_family_id[int16] type msghdr_nl_smc[CMD] msghdr_netlink[netlink_msg_t[genl_smc_family_id, genlmsghdr_t[CMD], smc_pnet_policy]] -syz_genetlink_get_family_id$smc(name ptr[in, string["SMC_PNETID"]]) genl_smc_family_id +syz_genetlink_get_family_id$smc(name ptr[in, string["SMC_PNETID"]], fd sock_nl_generic) genl_smc_family_id sendmsg$SMC_PNETID_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_GET]], f flags[send_flags]) sendmsg$SMC_PNETID_ADD(fd sock_nl_generic, msg ptr[in, msghdr_nl_smc[SMC_PNETID_ADD]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_team.txt b/sys/linux/socket_netlink_generic_team.txt index a622b5380..bf549224e 100644 --- a/sys/linux/socket_netlink_generic_team.txt +++ b/sys/linux/socket_netlink_generic_team.txt @@ -13,7 +13,7 @@ resource genl_team_family_id[int16] resource ifindex_team[ifindex] type msghdr_nl_team[CMD] msghdr_netlink[netlink_msg_t[genl_team_family_id, genlmsghdr_t[CMD], team_nl_policy]] -syz_genetlink_get_family_id$team(name ptr[in, string["team"]]) genl_team_family_id +syz_genetlink_get_family_id$team(name ptr[in, string["team"]], fd sock_nl_generic) genl_team_family_id ioctl$ifreq_SIOCGIFINDEX_team(fd sock, cmd const[SIOCGIFINDEX], arg ptr[inout, ifreq_dev_t["team0", ifindex_team]]) sendmsg$TEAM_CMD_NOOP(fd sock_nl_generic, msg ptr[in, msghdr_nl_team[TEAM_CMD_NOOP]], f flags[send_flags]) diff --git a/sys/linux/socket_netlink_generic_wireguard.txt b/sys/linux/socket_netlink_generic_wireguard.txt index ec13712c9..c315b9a5b 100644 --- a/sys/linux/socket_netlink_generic_wireguard.txt +++ b/sys/linux/socket_netlink_generic_wireguard.txt @@ -15,7 +15,7 @@ resource genl_wireguard_family_id[int16] type msghdr_wireguard[CMD] msghdr_netlink[netlink_msg_t[genl_wireguard_family_id, genlmsghdr_t[CMD], device_policy]] -syz_genetlink_get_family_id$wireguard(name ptr[in, string["wireguard"]]) genl_wireguard_family_id +syz_genetlink_get_family_id$wireguard(name ptr[in, string["wireguard"]], fd sock_nl_generic) genl_wireguard_family_id sendmsg$WG_CMD_GET_DEVICE(fd sock_nl_generic, msg ptr[in, msghdr_wireguard[WG_CMD_GET_DEVICE]], f flags[send_flags]) sendmsg$WG_CMD_SET_DEVICE(fd sock_nl_generic, msg ptr[in, msghdr_wireguard[WG_CMD_SET_DEVICE]], f flags[send_flags]) diff --git a/sys/linux/socket_tipc_netlink.txt b/sys/linux/socket_tipc_netlink.txt index 39704ea45..8093dea9e 100644 --- a/sys/linux/socket_tipc_netlink.txt +++ b/sys/linux/socket_tipc_netlink.txt @@ -9,7 +9,7 @@ type tipc_net_addr int32be resource genl_tipc_family_id[int16] -syz_genetlink_get_family_id$tipc(name ptr[in, string["TIPC"]]) genl_tipc_family_id +syz_genetlink_get_family_id$tipc(name ptr[in, string["TIPC"]], fd sock_nl_generic) genl_tipc_family_id sendmsg$TIPC_CMD_SET_LINK_TOL(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SET_LINK_TOL, tipc_tlv_desc[TIPC_TLV_LINK_CONFIG, tipc_link_config]]], f flags[send_flags]) sendmsg$TIPC_CMD_SET_LINK_PRI(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SET_LINK_PRI, tipc_tlv_desc[TIPC_TLV_LINK_CONFIG, tipc_link_config]]], f flags[send_flags]) @@ -102,7 +102,7 @@ tipc_aead_key { } resource genl_tipc2_family_id[int16] -syz_genetlink_get_family_id$tipc2(name ptr[in, string["TIPCv2"]]) genl_tipc2_family_id +syz_genetlink_get_family_id$tipc2(name ptr[in, string["TIPCv2"]], fd sock_nl_generic) genl_tipc2_family_id type msghdr_nl_tipc2[CMD] msghdr_netlink[netlink_msg_t[genl_tipc2_family_id, genlmsghdr_t[CMD], tipc_nl_policy]] diff --git a/sys/linux/test/80211_scan b/sys/linux/test/80211_scan index 32247fea3..8e5310795 100644 --- a/sys/linux/test/80211_scan +++ b/sys/linux/test/80211_scan @@ -1,7 +1,7 @@ # requires: -sandbox=namespace r0 = socket$nl_generic(0x10, 0x3, 0x10) -r1 = syz_genetlink_get_family_id$nl80211(&(0x7f0000000200)='nl80211\x00') +r1 = syz_genetlink_get_family_id$nl80211(&(0x7f0000000200)='nl80211\x00', 0xffffffffffffffff) ioctl$sock_SIOCGIFINDEX_80211(r0, 0x8933, &(0x7f0000000700)={'wlan1\x00', <r2=>0x0}) # Set station mode for wlan1. diff --git a/sys/linux/test/80211_setup_ap b/sys/linux/test/80211_setup_ap index be18aa80c..7e15ee267 100644 --- a/sys/linux/test/80211_setup_ap +++ b/sys/linux/test/80211_setup_ap @@ -1,5 +1,5 @@ r0 = socket$nl_generic(0x10, 0x3, 0x10) -r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00') +r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00', 0xffffffffffffffff) ioctl$sock_SIOCGIFINDEX_80211(r0, 0x8933, &AUTO={'wlan0\x00', <r2=>0x0}) # Set AP mode for wlan0. diff --git a/sys/linux/test/80211_setup_mesh b/sys/linux/test/80211_setup_mesh index f7652f0a4..8ea51d705 100644 --- a/sys/linux/test/80211_setup_mesh +++ b/sys/linux/test/80211_setup_mesh @@ -1,5 +1,5 @@ r0 = socket$nl_generic(0x10, 0x3, 0x10) -r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00') +r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00', 0xffffffffffffffff) ioctl$sock_SIOCGIFINDEX_80211(r0, 0x8933, &AUTO={'wlan0\x00', <r2=>0x0}) # Set mesh mode for wlan0. diff --git a/sys/linux/test/80211_setup_station b/sys/linux/test/80211_setup_station index 6fb2d0225..89d84f747 100644 --- a/sys/linux/test/80211_setup_station +++ b/sys/linux/test/80211_setup_station @@ -1,7 +1,7 @@ # requires: -sandbox=namespace r0 = socket$nl_generic(0x10, 0x3, 0x10) -r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00') +r1 = syz_genetlink_get_family_id$nl80211(&AUTO='nl80211\x00', 0xffffffffffffffff) ioctl$sock_SIOCGIFINDEX_80211(r0, 0x8933, &AUTO={'wlan1\x00', <r2=>0x0}) # Set station mode for wlan1. diff --git a/sys/linux/test/tipc b/sys/linux/test/tipc index 98424f23e..f002df653 100644 --- a/sys/linux/test/tipc +++ b/sys/linux/test/tipc @@ -1,5 +1,5 @@ # This badly crashes kernel, so for now sendmsg call is disabled. r0 = socket$nl_generic(0x10, 0x3, 0x10) -r1 = syz_genetlink_get_family_id$tipc2(&(0x7f0000000000)='TIPCv2\x00') +r1 = syz_genetlink_get_family_id$tipc2(&(0x7f0000000000)='TIPCv2\x00', 0xffffffffffffffff) #sendmsg$TIPC_NL_BEARER_ENABLE(r0, &AUTO={0x0, 0x0, &AUTO={&AUTO={AUTO, r1, 0x1, 0x123, 0x234, {0x3, 0x0, 0x0}, [@TIPC_NLA_BEARER={AUTO, AUTO, [@TIPC_NLA_BEARER_NAME={AUTO, AUTO, @udp='udp:syz0'}, @TIPC_NLA_BEARER_UDP_OPTS={AUTO, AUTO, {{AUTO, AUTO, @in={AUTO, 0x4e20, @loopback=AUTO}}, {AUTO, AUTO, @in={AUTO, 0x4e20, @loopback=AUTO}}}}]}]}, AUTO}, 0x1, 0x0, 0x0, 0x0}, 0x0) |
