xref: /linux/include/uapi/linux/netfilter/nfnetlink_hook.h (revision 8be4d31cb8aaeea27bde4b7ddb26e28a89062ebf)
1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2 #ifndef _NFNL_HOOK_H_
3 #define _NFNL_HOOK_H_
4 
5 enum nfnl_hook_msg_types {
6 	NFNL_MSG_HOOK_GET,
7 	NFNL_MSG_HOOK_MAX,
8 };
9 
10 /**
11  * enum nfnl_hook_attributes - netfilter hook netlink attributes
12  *
13  * @NFNLA_HOOK_HOOKNUM: netfilter hook number (NLA_U32)
14  * @NFNLA_HOOK_PRIORITY: netfilter hook priority (NLA_U32)
15  * @NFNLA_HOOK_DEV: netdevice name (NLA_STRING)
16  * @NFNLA_HOOK_FUNCTION_NAME: hook function name (NLA_STRING)
17  * @NFNLA_HOOK_MODULE_NAME: kernel module that registered this hook (NLA_STRING)
18  * @NFNLA_HOOK_CHAIN_INFO: basechain hook metadata (NLA_NESTED)
19  */
20 enum nfnl_hook_attributes {
21 	NFNLA_HOOK_UNSPEC,
22 	NFNLA_HOOK_HOOKNUM,
23 	NFNLA_HOOK_PRIORITY,
24 	NFNLA_HOOK_DEV,
25 	NFNLA_HOOK_FUNCTION_NAME,
26 	NFNLA_HOOK_MODULE_NAME,
27 	NFNLA_HOOK_CHAIN_INFO,
28 	__NFNLA_HOOK_MAX
29 };
30 #define NFNLA_HOOK_MAX		(__NFNLA_HOOK_MAX - 1)
31 
32 /**
33  * enum nfnl_hook_chain_info_attributes - chain description
34  *
35  * @NFNLA_HOOK_INFO_DESC: nft chain and table name (NLA_NESTED)
36  * @NFNLA_HOOK_INFO_TYPE: chain type (enum nfnl_hook_chaintype) (NLA_U32)
37  *
38  * NFNLA_HOOK_INFO_DESC depends on NFNLA_HOOK_INFO_TYPE value:
39  *   NFNL_HOOK_TYPE_NFTABLES: enum nft_table_attributes
40  *   NFNL_HOOK_TYPE_BPF: enum nfnl_hook_bpf_attributes
41  */
42 enum nfnl_hook_chain_info_attributes {
43 	NFNLA_HOOK_INFO_UNSPEC,
44 	NFNLA_HOOK_INFO_DESC,
45 	NFNLA_HOOK_INFO_TYPE,
46 	__NFNLA_HOOK_INFO_MAX,
47 };
48 #define NFNLA_HOOK_INFO_MAX (__NFNLA_HOOK_INFO_MAX - 1)
49 
50 enum nfnl_hook_chain_desc_attributes {
51 	NFNLA_CHAIN_UNSPEC,
52 	NFNLA_CHAIN_TABLE,
53 	NFNLA_CHAIN_FAMILY,
54 	NFNLA_CHAIN_NAME,
55 	__NFNLA_CHAIN_MAX,
56 };
57 #define NFNLA_CHAIN_MAX (__NFNLA_CHAIN_MAX - 1)
58 
59 /**
60  * enum nfnl_hook_chaintype - chain type
61  *
62  * @NFNL_HOOK_TYPE_NFTABLES: nf_tables base chain
63  * @NFNL_HOOK_TYPE_BPF: bpf program
64  * @NFNL_HOOK_TYPE_NFT_FLOWTABLE: nf_tables flowtable
65  */
66 enum nfnl_hook_chaintype {
67 	NFNL_HOOK_TYPE_NFTABLES = 0x1,
68 	NFNL_HOOK_TYPE_BPF,
69 	NFNL_HOOK_TYPE_NFT_FLOWTABLE,
70 };
71 
72 /**
73  * enum nfnl_hook_bpf_attributes - bpf prog description
74  *
75  * @NFNLA_HOOK_BPF_ID: bpf program id (NLA_U32)
76  */
77 enum nfnl_hook_bpf_attributes {
78 	NFNLA_HOOK_BPF_UNSPEC,
79 	NFNLA_HOOK_BPF_ID,
80 	__NFNLA_HOOK_BPF_MAX,
81 };
82 #define NFNLA_HOOK_BPF_MAX (__NFNLA_HOOK_BPF_MAX - 1)
83 
84 #endif /* _NFNL_HOOK_H */
85