• F
    netfilter: reduce size of hook entry point locations · b0f38338
    Florian Westphal 提交于
    struct net contains:
    
    struct nf_hook_entries __rcu *hooks[NFPROTO_NUMPROTO][NF_MAX_HOOKS];
    
    which store the hook entry point locations for the various protocol
    families and the hooks.
    
    Using array results in compact c code when doing accesses, i.e.
      x = rcu_dereference(net->nf.hooks[pf][hook]);
    
    but its also wasting a lot of memory, as most families are
    not used.
    
    So split the array into those families that are used, which
    are only 5 (instead of 13).  In most cases, the 'pf' argument is
    constant, i.e. gcc removes switch statement.
    
    struct net before:
     /* size: 5184, cachelines: 81, members: 46 */
    after:
     /* size: 4672, cachelines: 73, members: 46 */
    Signed-off-by: NFlorian Westphal <fw@strlen.de>
    Signed-off-by: NPablo Neira Ayuso <pablo@netfilter.org>
    b0f38338
netfilter.h 12.5 KB