xref: /linux/include/uapi/linux/netfilter/nfnetlink.h (revision 1b98f357dadd6ea613a435fbaef1a5dd7b35fd21)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _UAPI_NFNETLINK_H
3 #define _UAPI_NFNETLINK_H
4 #include <linux/types.h>
5 #include <linux/netfilter/nfnetlink_compat.h>
6 
7 enum nfnetlink_groups {
8 	NFNLGRP_NONE,
9 #define NFNLGRP_NONE			NFNLGRP_NONE
10 	NFNLGRP_CONNTRACK_NEW,
11 #define NFNLGRP_CONNTRACK_NEW		NFNLGRP_CONNTRACK_NEW
12 	NFNLGRP_CONNTRACK_UPDATE,
13 #define NFNLGRP_CONNTRACK_UPDATE	NFNLGRP_CONNTRACK_UPDATE
14 	NFNLGRP_CONNTRACK_DESTROY,
15 #define NFNLGRP_CONNTRACK_DESTROY	NFNLGRP_CONNTRACK_DESTROY
16 	NFNLGRP_CONNTRACK_EXP_NEW,
17 #define	NFNLGRP_CONNTRACK_EXP_NEW	NFNLGRP_CONNTRACK_EXP_NEW
18 	NFNLGRP_CONNTRACK_EXP_UPDATE,
19 #define NFNLGRP_CONNTRACK_EXP_UPDATE	NFNLGRP_CONNTRACK_EXP_UPDATE
20 	NFNLGRP_CONNTRACK_EXP_DESTROY,
21 #define NFNLGRP_CONNTRACK_EXP_DESTROY	NFNLGRP_CONNTRACK_EXP_DESTROY
22 	NFNLGRP_NFTABLES,
23 #define NFNLGRP_NFTABLES                NFNLGRP_NFTABLES
24 	NFNLGRP_ACCT_QUOTA,
25 #define NFNLGRP_ACCT_QUOTA		NFNLGRP_ACCT_QUOTA
26 	NFNLGRP_NFTRACE,
27 #define NFNLGRP_NFTRACE			NFNLGRP_NFTRACE
28 	NFNLGRP_NFT_DEV,
29 #define NFNLGRP_NFT_DEV			NFNLGRP_NFT_DEV
30 	__NFNLGRP_MAX,
31 };
32 #define NFNLGRP_MAX	(__NFNLGRP_MAX - 1)
33 
34 /* General form of address family dependent message.
35  */
36 struct nfgenmsg {
37 	__u8  nfgen_family;		/* AF_xxx */
38 	__u8  version;		/* nfnetlink version */
39 	__be16    res_id;		/* resource id */
40 };
41 
42 #define NFNETLINK_V0	0
43 
44 /* netfilter netlink message types are split in two pieces:
45  * 8 bit subsystem, 8bit operation.
46  */
47 
48 #define NFNL_SUBSYS_ID(x)	((x & 0xff00) >> 8)
49 #define NFNL_MSG_TYPE(x)	(x & 0x00ff)
50 
51 /* No enum here, otherwise __stringify() trick of MODULE_ALIAS_NFNL_SUBSYS()
52  * won't work anymore */
53 #define NFNL_SUBSYS_NONE 		0
54 #define NFNL_SUBSYS_CTNETLINK		1
55 #define NFNL_SUBSYS_CTNETLINK_EXP	2
56 #define NFNL_SUBSYS_QUEUE		3
57 #define NFNL_SUBSYS_ULOG		4
58 #define NFNL_SUBSYS_OSF			5
59 #define NFNL_SUBSYS_IPSET		6
60 #define NFNL_SUBSYS_ACCT		7
61 #define NFNL_SUBSYS_CTNETLINK_TIMEOUT	8
62 #define NFNL_SUBSYS_CTHELPER		9
63 #define NFNL_SUBSYS_NFTABLES		10
64 #define NFNL_SUBSYS_NFT_COMPAT		11
65 #define NFNL_SUBSYS_HOOK		12
66 #define NFNL_SUBSYS_COUNT		13
67 
68 /* Reserved control nfnetlink messages */
69 #define NFNL_MSG_BATCH_BEGIN		NLMSG_MIN_TYPE
70 #define NFNL_MSG_BATCH_END		NLMSG_MIN_TYPE+1
71 
72 /**
73  * enum nfnl_batch_attributes - nfnetlink batch netlink attributes
74  *
75  * @NFNL_BATCH_GENID: generation ID for this changeset (NLA_U32)
76  */
77 enum nfnl_batch_attributes {
78         NFNL_BATCH_UNSPEC,
79         NFNL_BATCH_GENID,
80         __NFNL_BATCH_MAX
81 };
82 #define NFNL_BATCH_MAX			(__NFNL_BATCH_MAX - 1)
83 
84 #endif /* _UAPI_NFNETLINK_H */
85