blob: 38106f9957eb0b7c1ddff54ba8c5c5af3729cb15 [file] [log] [blame]
# Copyright 2017 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
# AF_NETLINK/NETLINK_NETFILTER support.
include <linux/net.h>
include <uapi/linux/netlink.h>
include <uapi/linux/netfilter.h>
include <uapi/linux/netfilter/nfnetlink.h>
resource sock_nl_netfilter[sock_netlink]
socket$nl_netfilter(domain const[AF_NETLINK], type const[SOCK_RAW], proto const[NETLINK_NETFILTER]) sock_nl_netfilter
sendmsg$nl_netfilter(fd sock_nl_netfilter, msg ptr[in, msghdr_nl_netfilter], f flags[send_flags])
msghdr_nl_netfilter {
addr ptr[in, sockaddr_nl_kern]
addrlen len[addr, int32]
vec ptr[in, iovec_nl_netfilter]
vlen const[1, intptr]
ctrl const[0, intptr]
ctrllen const[0, intptr]
f flags[send_flags, int32]
}
iovec_nl_netfilter {
data ptr[in, netlink_msg_netfilter]
len bytesize[data, intptr]
}
netlink_msg_netfilter {
len len[parent, int32]
type int8[0:20]
subsys flags[nfnl_subsys, int8]
flags flags[netlink_msg_flags, int16]
seq netlink_seq
pid netlink_port_id
hdr nfgenmsg
# No body. Generic attribute can represent a random body.
attrs array[nl_generic_attr]
} [align_4]
nfgenmsg {
nfgen_family flags[nfproto, int8]
version const[NFNETLINK_V0, int8]
# res_id seems to mean things like cpu/queue/group number, so prefer small values.
res_id int16be[0:10]
} [align_4]
nfnl_subsys = NFNL_SUBSYS_CTNETLINK, NFNL_SUBSYS_CTNETLINK_EXP, NFNL_SUBSYS_QUEUE, NFNL_SUBSYS_ULOG, NFNL_SUBSYS_OSF, NFNL_SUBSYS_IPSET, NFNL_SUBSYS_ACCT, NFNL_SUBSYS_CTNETLINK_TIMEOUT, NFNL_SUBSYS_CTHELPER, NFNL_SUBSYS_NFTABLES, NFNL_SUBSYS_NFT_COMPAT
nfproto = NFPROTO_UNSPEC, NFPROTO_INET, NFPROTO_IPV4, NFPROTO_ARP, NFPROTO_NETDEV, NFPROTO_BRIDGE, NFPROTO_IPV6, NFPROTO_DECNET