netfilter: nf_tables: explicit nft_set_pktinfo() call from hook path
Instead of calling this function from the family specific variant, this reduces the code size in the fast path for the netdev, bridge and inet families. After this change, we must call nft_set_pktinfo() upfront from the chain hook indirection. Before: text data bss dec hex filename 2145 208 0 2353 931 net/netfilter/nf_tables_netdev.o After: text data bss dec hex filename 2125 208 0 2333 91d net/netfilter/nf_tables_netdev.o Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
@@ -22,7 +22,8 @@ static unsigned int nft_do_chain_ipv6(void *priv,
|
||||
{
|
||||
struct nft_pktinfo pkt;
|
||||
|
||||
nft_set_pktinfo_ipv6(&pkt, skb, state);
|
||||
nft_set_pktinfo(&pkt, skb, state);
|
||||
nft_set_pktinfo_ipv6(&pkt, skb);
|
||||
|
||||
return nft_do_chain(&pkt, priv);
|
||||
}
|
||||
|
@@ -31,7 +31,8 @@ static unsigned int nft_nat_do_chain(void *priv,
|
||||
{
|
||||
struct nft_pktinfo pkt;
|
||||
|
||||
nft_set_pktinfo_ipv6(&pkt, skb, state);
|
||||
nft_set_pktinfo(&pkt, skb, state);
|
||||
nft_set_pktinfo_ipv6(&pkt, skb);
|
||||
|
||||
return nft_do_chain(&pkt, priv);
|
||||
}
|
||||
|
@@ -33,7 +33,8 @@ static unsigned int nf_route_table_hook(void *priv,
|
||||
u32 mark, flowlabel;
|
||||
int err;
|
||||
|
||||
nft_set_pktinfo_ipv6(&pkt, skb, state);
|
||||
nft_set_pktinfo(&pkt, skb, state);
|
||||
nft_set_pktinfo_ipv6(&pkt, skb);
|
||||
|
||||
/* save source/dest address, mark, hoplimit, flowlabel, priority */
|
||||
memcpy(&saddr, &ipv6_hdr(skb)->saddr, sizeof(saddr));
|
||||
|
Reference in New Issue
Block a user