我需要删除内核中的一个 conntrack 条目。有许多函数,如nf_ct_delete
和nf_ct_put
。目前,我在一个skb->nfct
(每个跟踪的 skb 上的块)上都使用两者。起初它似乎工作正常,但几秒钟后内核就崩溃了。
我目前的代码如下:
struct nf_conntrack *con = skb->nfct;
nf_conntrack_get(sub_conntrack);
//... do some stuff
nf_ct_delete((struct nf_conn *) con, 0, 0);
nf_ct_put((struct nf_conn *) con);
在执行 delete 和 put 语句后,我立即检查条目conntrack -L conntrack
并且它们消失了(如预期的那样)。但一分钟左右后,系统冻结。我猜 conntrack 会启动一些计时器,这些计时器在触发时会崩溃。
所以我的问题是:如何立即删除特定连接的所有内容?包括停止任何计时器和清理所有状态。