int nf_ct_exts_add(const struct nf_conn *ct, void *ext); void *nf_ct_exts_get(const struct nf_conn *ct, int idx); void nf_ct_exts_remove(const struct nf_conn *ct, int idx); struct nf_conntrack_ext *nf_conn_exts_find(const struct nf_conn *ct); struct nf_conntrack_ext *nf...
resolve_normal_ct函数首先会获取该数据包的五元组信息,然后通过这个信息计算出hash值,通过这个hash值在hash表中查找,如果没有找到则调用init_conntrack函数创建一个新的连接跟踪,要注意在创建连接跟踪的时候会同时创建两个方向的连接一个,一个是原始方向的称为IP_CT_DIR_ORIGINAL,另外一个是回复方向的称为IP_CT_DI...
62.id=NF_CT_EXT_ACCT, 63}; struct nf_conn_counter为计数用: 17structnf_conn_counter{ 18u_int64_tpackets; 19u_int64_tbytes; 20}; .len= sizeof(structnf_conn_counter[IP_CT_DIR_MAX]),代表为连接的两个方向都要分配,进行计数。
1、BUG_ON能关闭吗? 貌似不能。内核通用编译期检查机制,默认开启; 2、nf_conntrack_core.c的code bug? 对比最新版本的代码,代码基本一致,非Bug。 3、NF_CT_EXT_NUM在哪儿定义的呢? 找到文件问题,发下如下定义: 在config文件中,检查每个开关,真的是开关开的太多啊,哭晕~...
nf_ct_ecache_find(const struct nf_conn *ct) { return nf_ct_ext_find(ct, NF_CT_EXT_ECACHE); } static inline struct nf_conntrack_ecache * nf_ct_ecache_ext_add(struct nf_conn *ct, gfp_t gfp) { struct net *net = nf_ct_net(ct); if (!net->ct.sysctl_events) return NULL; ret...
tmpl) return NULL; } tmpl->status = IPS_TEMPLATE; write_pnet(&tmpl->ct_net, net); nf_ct_zone_add(tmpl, zone); refcount_set(&tmpl->ct_general.use, 1); return tmpl; } EXPORT_SYMBOL_GPL(nf_ct_tmpl_alloc); void nf_ct_tmpl_free(struct nf_conn *tmpl) { kfree(tmpl->...
void *nf_ct_exts_get(const struct nf_conn *ct, int idx); void nf_ct_exts_remove(const struct nf_conn *ct, int idx);struct nf_conntrack_ext *nf_conn_exts_find(const struct nf_conn *ct);struct nf_conntrack_ext *nf_conn_exts_add(struct nf_conn *ct, gfp_t gfp);extern int nf...
(const struct nf_conn *ct, int idx); void nf_ct_exts_remove(const struct nf_conn *ct, int idx); struct nf_conntrack_ext *nf_conn_exts_find(const struct nf_conn *ct); struct nf_conntrack_ext *nf_conn_exts_add(struct nf_conn *ct, gfp_t gfp); extern int nf_conntrack_exts_...
net / ipv4 / netfilter / nf_nat_pptp.c v6 v6.14 v6.13 v6.13.7 v6.13.6 v6.13.5 v6.13.4 v6.13.3 v6.13.2 v6.13.1 v6.13 v6.13-rc7 v6.13-rc6 v6.13-rc5 v6.13-rc4 v6.13-rc3 v6.13-rc2 v6.13-rc1 ...
参见/net/netfilter/nf_conntrack_core.c__nf_conntrack_find函数; structnf_conntrack_tuple_hash*h; structhlist_nulls_node*n; hlist_nulls_for_each_entry_rcu(h,n,&net->ct.hash[hash],hnnode) 2.记录的添加 84staticinlinevoidhlist_nulls_add_head_rcu(structhlist_nulls_node*n, ...