Chinaunix
标题:
netfilter 连接跟踪问题
[打印本页]
作者:
好看的附件
时间:
2011-11-17 14:07
标题:
netfilter 连接跟踪问题
最近在看netfilter代码,一直没看明白nf_conntrack_hash 结构与nf_conn 的作用,还有nf_conntrack_hash结构是怎么与nf_conntrack_tuple_hash结构做的关联,请大虾指点下。
作者:
瀚海书香
时间:
2011-11-17 15:08
本帖最后由 瀚海书香 于 2011-11-17 15:10 编辑
回复
1#
好看的附件
一直没看明白nf_conntrack_hash 结构与nf_conn 的作用,还有nf_conntrack_hash结构是怎么与nf_conntrack_tuple_hash结构做的关联
nf_conntrack_hash就是一个hash桶,每一个都是若干个nf_conntrack_tuple_hash。每个nf_conntrack_tuple_hash都与一个nf_conntrack_tuple关联,每个nf_conntrack_tuple_hash都属于一个nf_conn。
下面这几个函数可以帮助你理解他们之间的关系:
struct nf_conntrack_tuple_hash *
__nf_conntrack_find(const struct nf_conntrack_tuple *tuple,
const struct nf_conn *ignored_conntrack)
{
struct nf_conntrack_tuple_hash *h;
struct hlist_node *n;
unsigned int hash = hash_conntrack(tuple);
hlist_for_each_entry(h, n, &nf_conntrack_hash[hash], hnode) {
if (nf_ct_tuplehash_to_ctrack(h) != ignored_conntrack &&
nf_ct_tuple_equal(tuple, &h->tuple)) {
NF_CT_STAT_INC(found);
return h;
}
NF_CT_STAT_INC(searched);
}
return NULL;
}
复制代码
static inline struct nf_conn *
nf_ct_tuplehash_to_ctrack(const struct nf_conntrack_tuple_hash *hash)
{
return container_of(hash, struct nf_conn,
tuplehash[hash->tuple.dst.dir]);
}
复制代码
作者:
好看的附件
时间:
2011-11-17 16:00
回复
2#
瀚海书香
多谢版主回复,关系搞明白了。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2