- 论坛徽章:
- 0
|
今天在看连接跟踪表里__ip_conntrack_confirm这个函数的代码时,对它里面的一些流程没有明白,想请各位高手给解释一下,在看到这段代码时:- list_for_each_entry(h, &ip_conntrack_hash[hash], list)
- if (ip_ct_tuple_equal(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple,
- &h->tuple))
- goto out;
- list_for_each_entry(h, &ip_conntrack_hash[repl_hash], list)
- if (ip_ct_tuple_equal(&ct->tuplehash[IP_CT_DIR_REPLY].tuple,
- &h->tuple))
- goto out;
- ......
- out:
- CONNTRACK_STAT_INC(insert_failed);
- write_unlock_bh(&ip_conntrack_lock);
- return NF_DROP;
复制代码 在上面的判断中,如果在连接跟踪表中可以找到和传过来的连接记录的tuple一样的信息,则丢包,请问这是为什么呢?还是我对ip_ct_tuple_equal这个函数理解的有误?
ip_ct_tuple_equal函数实际上是这样的:- return t1->src.ip == t2->src.ip
- && t1->src.u.all == t2->src.u.all;
复制代码 请问 t1->src.u.all 判断的是什么呢? |
|