作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想更改 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/
我是一名优秀的程序员,十分优秀!