2.4.2.6 核心代码注释nf_nat_fn( )是nat hook的主处理函数,其它几个钩子函数最终都调用这个函数。nf_nat_fn( )函数会根据连接信息结构体ip_conntrack_info,也就是连接的方向,判断是发送的包还是回应的包。如果是发送的包,会首先调用nf_nat_rule_find( )函数查找规则,并调用ipt_do_table( ),进行规则的遍历,并执行目标为SNAT的操作。 static unsigned int nf_nat_fn(unsigned int hooknum,struct sk_buff *skb, const struct net_device *in,const struct net_device *out, int (*okfn)(struct sk_buff *)) { struct nf_conn *ct; enum ip_conntrack_info ctinfo; struct nf_conn_nat *nat; /*标志snat还是dnat转换*/ enum nf_nat_manip_type maniptype = HOOK2MANIP(hooknum) NF_CT_ASSERT(!(ip_hdr(skb)- |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|