nf_register_hooks解读
nf_register_hooks是什么
net->netns_nf->nf_hook_entry[NFPROTO_NUMPROTO][NF_MAX_HOOKS=8]
(nf) (hooks)
NFPROTO_IPV4=2; NFPROTO_ARP=3; NFPROTO_IPV6=10;
也就是说在一个协议上,最多能注册10个钩子函数: nf_hook_entry_head
net->nf.hooks[reg->pf]+reg->hooknum
pf倒是清楚,hooknum是啥咧?是:
46 enum nf_inet_hooks { 47 NF_INET_PRE_ROUTING, 48 NF_INET_LOCAL_IN, 49 NF_INET_FORWARD, 50 NF_INET_LOCAL_OUT, 51 NF_INET_POST_ROUTING, 52 NF_INET_NUMHOOKS 53 };
所以net->nf.hooks[reg->pf]+reg->hooknum 其实就是告诉我一个协议在检测点要进行的过滤的行为;
看下nf.hooks到底是啥时候开始发挥作用
NF_HOOK-->NF_THRE---->一串下去,貌似和bpf没有多大的关系
至于ipt_register_table也算是殊途同归,最后其实也都是到nf_reigister_hooks中去了