# 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]
