gpt4 book ai didi

c - 如何在 linux 内核中丢弃 tcp 数据包但一次又一次地接收不到?

转载 作者:可可西里 更新时间:2023-11-01 02:37:44 26 4
gpt4 key购买 nike

我想更改 linux 内核代码以过滤一些 tcp 数据包并将其丢弃。

但我总是一次又一次地收到它。这是我在

中的代码

/net/ipv4/tcp_ipv4.c

int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
{
// my code start
struct iphdr *iph;
iph = skb->nh.iph;

if(iph->ttl > 64) // I want to drop all tcp packet that meet this requirement
{
return 0;
}
// my code end


// start normal linux code
if(sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
...
}

最佳答案

正如@nos 所说,TCP 是可靠的,因此另一端将重传丢弃的数据包。您需要发送 RST 或 ICMP 错误(可能是主机无法访问,管理禁止)来断开连接。

另外,请注意,您已经造成了内存泄漏,您有责任在丢弃 skb 时释放它们。

关于c - 如何在 linux 内核中丢弃 tcp 数据包但一次又一次地接收不到?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5435598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com