forked from raspberrypi/linux
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
netfilter: flow table support for the mixed IPv4/IPv6 family
This patch adds the IPv6 flow table type, that implements the datapath flow table to forward IPv6 traffic. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
- Loading branch information
Showing
6 changed files
with
66 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
#include <linux/kernel.h> | ||
#include <linux/init.h> | ||
#include <linux/module.h> | ||
#include <linux/netfilter.h> | ||
#include <linux/rhashtable.h> | ||
#include <net/netfilter/nf_flow_table.h> | ||
#include <net/netfilter/nf_tables.h> | ||
|
||
static unsigned int | ||
nf_flow_offload_inet_hook(void *priv, struct sk_buff *skb, | ||
const struct nf_hook_state *state) | ||
{ | ||
switch (skb->protocol) { | ||
case htons(ETH_P_IP): | ||
return nf_flow_offload_ip_hook(priv, skb, state); | ||
case htons(ETH_P_IPV6): | ||
return nf_flow_offload_ipv6_hook(priv, skb, state); | ||
} | ||
|
||
return NF_ACCEPT; | ||
} | ||
|
||
static struct nf_flowtable_type flowtable_inet = { | ||
.family = NFPROTO_INET, | ||
.params = &nf_flow_offload_rhash_params, | ||
.gc = nf_flow_offload_work_gc, | ||
.hook = nf_flow_offload_inet_hook, | ||
.owner = THIS_MODULE, | ||
}; | ||
|
||
static int __init nf_flow_inet_module_init(void) | ||
{ | ||
nft_register_flowtable_type(&flowtable_inet); | ||
|
||
return 0; | ||
} | ||
|
||
static void __exit nf_flow_inet_module_exit(void) | ||
{ | ||
nft_unregister_flowtable_type(&flowtable_inet); | ||
} | ||
|
||
module_init(nf_flow_inet_module_init); | ||
module_exit(nf_flow_inet_module_exit); | ||
|
||
MODULE_LICENSE("GPL"); | ||
MODULE_AUTHOR("Pablo Neira Ayuso <pablo@netfilter.org>"); | ||
MODULE_ALIAS_NF_FLOWTABLE(1); /* NFPROTO_INET */ |