netfilter: nft_reject: introduce icmp code abstraction for inet and bridge
This patch introduces the NFT_REJECT_ICMPX_UNREACH type which provides an abstraction to the ICMP and ICMPv6 codes that you can use from the inet and bridge tables, they are: * NFT_REJECT_ICMPX_NO_ROUTE: no route to host - network unreachable * NFT_REJECT_ICMPX_PORT_UNREACH: port unreachable * NFT_REJECT_ICMPX_HOST_UNREACH: host unreachable * NFT_REJECT_ICMPX_ADMIN_PROHIBITED: administratevely prohibited You can still use the specific codes when restricting the rule to match the corresponding layer 3 protocol. I decided to not overload the existing NFT_REJECT_ICMP_UNREACH to have different semantics depending on the table family and to allow the user to specify ICMP family specific codes if they restrict it to the corresponding family. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
2c804d0f8f
commit
51b0a5d8c2
7 changed files with 241 additions and 17 deletions
|
@ -749,12 +749,33 @@ enum nft_queue_attributes {
|
|||
*
|
||||
* @NFT_REJECT_ICMP_UNREACH: reject using ICMP unreachable
|
||||
* @NFT_REJECT_TCP_RST: reject using TCP RST
|
||||
* @NFT_REJECT_ICMPX_UNREACH: abstracted ICMP unreachable for bridge and inet
|
||||
*/
|
||||
enum nft_reject_types {
|
||||
NFT_REJECT_ICMP_UNREACH,
|
||||
NFT_REJECT_TCP_RST,
|
||||
NFT_REJECT_ICMPX_UNREACH,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_reject_code - Generic reject codes for IPv4/IPv6
|
||||
*
|
||||
* @NFT_REJECT_ICMPX_NO_ROUTE: no route to host / network unreachable
|
||||
* @NFT_REJECT_ICMPX_PORT_UNREACH: port unreachable
|
||||
* @NFT_REJECT_ICMPX_HOST_UNREACH: host unreachable
|
||||
* @NFT_REJECT_ICMPX_ADMIN_PROHIBITED: administratively prohibited
|
||||
*
|
||||
* These codes are mapped to real ICMP and ICMPv6 codes.
|
||||
*/
|
||||
enum nft_reject_inet_code {
|
||||
NFT_REJECT_ICMPX_NO_ROUTE = 0,
|
||||
NFT_REJECT_ICMPX_PORT_UNREACH,
|
||||
NFT_REJECT_ICMPX_HOST_UNREACH,
|
||||
NFT_REJECT_ICMPX_ADMIN_PROHIBITED,
|
||||
__NFT_REJECT_ICMPX_MAX
|
||||
};
|
||||
#define NFT_REJECT_ICMPX_MAX (__NFT_REJECT_ICMPX_MAX + 1)
|
||||
|
||||
/**
|
||||
* enum nft_reject_attributes - nf_tables reject expression netlink attributes
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue