| # Copyright 2018 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 <uapi/linux/tipc_netlink.h> |
| include <uapi/linux/tipc_config.h> |
| include <uapi/linux/tipc_sockets_diag.h> |
| |
| 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 |
| |
| 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]) |
| sendmsg$TIPC_CMD_SET_LINK_WINDOW(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SET_LINK_WINDOW, tipc_tlv_desc[TIPC_TLV_LINK_CONFIG, tipc_link_config]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_ENABLE_BEARER(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_ENABLE_BEARER, tipc_tlv_desc[TIPC_TLV_BEARER_CONFIG, tipc_bearer_config]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_BEARER_NAMES(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_BEARER_NAMES, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_MEDIA_NAMES(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_MEDIA_NAMES, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SHOW_PORTS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SHOW_PORTS, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_REMOTE_MNG(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_REMOTE_MNG, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_MAX_PORTS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_MAX_PORTS, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_NETID(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_NETID, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_NODES(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_NODES, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_GET_LINKS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_GET_LINKS, tipc_tlv_desc[TIPC_TLV_NET_ADDR, tipc_net_addr]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SET_NODE_ADDR(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SET_NODE_ADDR, tipc_tlv_desc[TIPC_TLV_NET_ADDR, tipc_net_addr]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SHOW_NAME_TABLE(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SHOW_NAME_TABLE, tipc_tlv_desc[TIPC_TLV_NAME_TBL_QUERY, tipc_name_table_query]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SHOW_LINK_STATS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SHOW_LINK_STATS, tipc_tlv_desc[TIPC_TLV_LINK_NAME, string[tipc_links]]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SHOW_STATS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SHOW_STATS, void]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_DISABLE_BEARER(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_DISABLE_BEARER, tipc_tlv_desc[TIPC_TLV_BEARER_NAME, tipc_bearer_name]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_RESET_LINK_STATS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_RESET_LINK_STATS, tipc_tlv_desc[TIPC_TLV_LINK_NAME, string[tipc_links]]]], f flags[send_flags]) |
| sendmsg$TIPC_CMD_SET_NETID(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc[TIPC_CMD_SET_NETID, tipc_tlv_desc[TIPC_TLV_UNSIGNED, int32be]]], f flags[send_flags]) |
| |
| type msghdr_nl_tipc[CMD, DATA] msghdr_netlink[netlink_msg_t[genl_tipc_family_id, tipc_genlmsghdr[CMD, DATA], void]] |
| |
| type tipc_genlmsghdr[CMD, DATA] { |
| hdr genlmsghdr_t[TIPC_GENL_CMD] |
| dest const[0, int32] |
| cmd const[CMD, int16] |
| reserved const[0, int16] |
| data DATA |
| } [packed] |
| |
| type tipc_tlv_desc[TYP, DATA] { |
| tlv_len bytesize[parent, int16be] |
| tlv_type const[TYP, int16be] |
| data DATA |
| } [align_4] |
| |
| tipc_link_config { |
| value int32be |
| name tipc_bearer_link_or_media |
| } |
| |
| # TODO: links have complex names of the form "own_node_id:own_dev_name-peer_node_id:peer_dev_name" |
| # We can't generate this at the moment. |
| tipc_links = "broadcast-link", "syz0", "syz1" |
| tipc_media = "eth", "ib", "udp" |
| tipc_media_l2 = "eth", "ib" |
| tipc_bearer_name_udp = "udp:syz0", "udp:syz1", "udp:syz2" |
| |
| tipc_bearer_link_or_media [ |
| bearer tipc_bearer_name |
| link string[tipc_links, TIPC_MAX_LINK_NAME] |
| media string[tipc_media, TIPC_MAX_LINK_NAME] |
| ] [varlen] |
| |
| tipc_bearer_name [ |
| l2 tipc_bearer_name_l2 |
| udp string[tipc_bearer_name_udp] |
| ] [varlen] |
| |
| tipc_bearer_name_l2 { |
| media stringnoz[tipc_media_l2] |
| colon const[':', int8] |
| dev string[devnames] |
| } [packed] |
| |
| tipc_bearer_config { |
| priority int32be[0:TIPC_MEDIA_LINK_PRI] |
| disc_domain int32be |
| name tipc_bearer_name |
| } |
| |
| tipc_name_table_query { |
| depth int32be |
| type int32be |
| lowbound int32be |
| upbound int32be |
| } |
| |
| resource genl_tipc2_family_id[int16] |
| syz_genetlink_get_family_id$tipc2(name ptr[in, string["TIPCv2"]]) genl_tipc2_family_id |
| |
| type msghdr_nl_tipc2[CMD] msghdr_netlink[netlink_msg_t[genl_tipc2_family_id, genlmsghdr_t[CMD], tipc_nl_policy]] |
| |
| sendmsg$TIPC_NL_BEARER_DISABLE(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_BEARER_DISABLE]], f flags[send_flags]) |
| |
| sendmsg$TIPC_NL_BEARER_ENABLE(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_BEARER_ENABLE]], f flags[send_flags]) |
| sendmsg$TIPC_NL_BEARER_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_BEARER_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_BEARER_ADD(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_BEARER_ADD]], f flags[send_flags]) |
| sendmsg$TIPC_NL_BEARER_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_BEARER_SET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_SOCK_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_SOCK_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_PUBL_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_PUBL_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_LINK_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_LINK_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_LINK_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_LINK_SET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_LINK_RESET_STATS(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_LINK_RESET_STATS]], f flags[send_flags]) |
| sendmsg$TIPC_NL_MEDIA_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_MEDIA_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_MEDIA_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_MEDIA_SET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_NODE_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_NODE_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_NET_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_NET_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_NET_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_NET_SET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_NAME_TABLE_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_NAME_TABLE_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_MON_SET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_MON_SET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_MON_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_MON_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_MON_PEER_GET(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_MON_PEER_GET]], f flags[send_flags]) |
| sendmsg$TIPC_NL_PEER_REMOVE(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_PEER_REMOVE]], f flags[send_flags]) |
| sendmsg$TIPC_NL_UDP_GET_REMOTEIP(fd sock_nl_generic, msg ptr[in, msghdr_nl_tipc2[TIPC_NL_UDP_GET_REMOTEIP]], f flags[send_flags]) |
| |
| tipc_nl_policy [ |
| TIPC_NLA_BEARER nlattr[TIPC_NLA_BEARER, array[tipc_nl_bearer_policy]] |
| TIPC_NLA_SOCK nlattr[TIPC_NLA_SOCK, array[tipc_nl_sock_policy]] |
| TIPC_NLA_LINK nlattr[TIPC_NLA_LINK, array[tipc_nl_link_policy]] |
| TIPC_NLA_MEDIA nlattr[TIPC_NLA_MEDIA, array[tipc_nl_media_policy]] |
| TIPC_NLA_NODE nlattr[TIPC_NLA_NODE, array[tipc_nl_node_policy]] |
| TIPC_NLA_NET nlattr[TIPC_NLA_NET, array[tipc_nl_net_policy]] |
| TIPC_NLA_MON nlattr[TIPC_NLA_MON, array[tipc_nl_monitor_policy]] |
| ] [varlen] |
| |
| tipc_nl_bearer_policy [ |
| TIPC_NLA_BEARER_NAME nlattr[TIPC_NLA_BEARER_NAME, tipc_bearer_name] |
| TIPC_NLA_BEARER_PROP nlattr[TIPC_NLA_BEARER_PROP, array[tipc_nl_prop_policy]] |
| TIPC_NLA_BEARER_DOMAIN nlattr[TIPC_NLA_BEARER_DOMAIN, int32] |
| TIPC_NLA_BEARER_UDP_OPTS nlattr[TIPC_NLA_BEARER_UDP_OPTS, tipc_bearer_udp] |
| ] [varlen] |
| |
| tipc_nl_sock_policy [ |
| TIPC_NLA_SOCK_ADDR nlattr[TIPC_NLA_SOCK_ADDR, int32] |
| TIPC_NLA_SOCK_REF nlattr[TIPC_NLA_SOCK_REF, int32] |
| TIPC_NLA_SOCK_HAS_PUBL nlattr[TIPC_NLA_SOCK_HAS_PUBL, void] |
| ] [varlen] |
| |
| tipc_nl_link_policy [ |
| TIPC_NLA_LINK_NAME nlattr[TIPC_NLA_LINK_NAME, string[tipc_links]] |
| TIPC_NLA_LINK_PROP nlattr[TIPC_NLA_LINK_PROP, array[tipc_nl_prop_policy]] |
| ] [varlen] |
| |
| tipc_nl_media_policy [ |
| TIPC_NLA_MEDIA_NAME nlattr[TIPC_NLA_MEDIA_NAME, string[tipc_media]] |
| TIPC_NLA_MEDIA_PROP nlattr[TIPC_NLA_MEDIA_PROP, array[tipc_nl_prop_policy]] |
| ] [varlen] |
| |
| tipc_nl_node_policy [ |
| TIPC_NLA_NODE_ADDR nlattr[TIPC_NLA_NODE_ADDR, int32] |
| TIPC_NLA_NODE_UP nlattr[TIPC_NLA_NODE_UP, void] |
| ] [varlen] |
| |
| tipc_nl_net_policy [ |
| TIPC_NLA_NET_ID nlattr[TIPC_NLA_NET_ID, int32] |
| TIPC_NLA_NET_ADDR nlattr[TIPC_NLA_NET_ADDR, int32] |
| TIPC_NLA_NET_NODEID nlattr[TIPC_NLA_NET_NODEID, int64] |
| TIPC_NLA_NET_NODEID_W1 nlattr[TIPC_NLA_NET_NODEID_W1, int64] |
| ] [varlen] |
| |
| tipc_nl_monitor_policy [ |
| TIPC_NLA_MON_REF nlattr[TIPC_NLA_MON_REF, int32] |
| TIPC_NLA_MON_ACTIVATION_THRESHOLD nlattr[TIPC_NLA_MON_ACTIVATION_THRESHOLD, int32] |
| ] [varlen] |
| |
| tipc_nl_prop_policy [ |
| TIPC_NLA_PROP_PRIO nlattr[TIPC_NLA_PROP_PRIO, int32[0:TIPC_MEDIA_LINK_PRI]] |
| TIPC_NLA_PROP_TOL nlattr[TIPC_NLA_PROP_TOL, int32] |
| TIPC_NLA_PROP_WIN nlattr[TIPC_NLA_PROP_WIN, int32] |
| TIPC_NLA_PROP_MTU nlattr[TIPC_NLA_PROP_MTU, int32] |
| ] [varlen] |
| |
| tipc_bearer_udp { |
| TIPC_NLA_UDP_LOCAL nlattr[TIPC_NLA_UDP_LOCAL, sockaddr_tipc_udp] |
| TIPC_NLA_UDP_REMOTE nlattr[TIPC_NLA_UDP_REMOTE, sockaddr_tipc_udp] |
| } [packed] |
| |
| sockaddr_tipc_udp [ |
| in sockaddr_in |
| in6 sockaddr_in6 |
| ] [varlen] |