当前位置: 技术问答>linux和unix
新内核版本的sk_buff问题!!!急求高见!!!
来源: 互联网 发布时间:2017-03-08
本文导语: 我现在用的是ubuntu 11.10,内核是3.0.0-17 问题是我最近想写一个基于netfilter框架的流量程序。现在struct sk_buff结构变了 struct sk_buff { . . sk_buff_data_t transport_header; sk_buf...
我现在用的是ubuntu 11.10,内核是3.0.0-17
问题是我最近想写一个基于netfilter框架的流量程序。现在struct sk_buff结构变了
struct sk_buff {
.
.
sk_buff_data_t transport_header;
sk_buff_data_t network_header;
sk_buff_data_t mac_header;
.
.
}
现在我在框架中挂一个钩子,怎么运用这个sk_buff结构读出包的目的端口啊?急!!谢谢!
还有一个问题为什么在钩子函数中输出skb->data_len的值是0?
谢谢!
问题是我最近想写一个基于netfilter框架的流量程序。现在struct sk_buff结构变了
struct sk_buff {
.
.
sk_buff_data_t transport_header;
sk_buff_data_t network_header;
sk_buff_data_t mac_header;
.
.
}
现在我在框架中挂一个钩子,怎么运用这个sk_buff结构读出包的目的端口啊?急!!谢谢!
还有一个问题为什么在钩子函数中输出skb->data_len的值是0?
谢谢!
|
第一个问题:
先找到ip头
在找到tcp头
th->dest、th->source就是端口号了。
第二个问题skb->data_len不知道!
先找到ip头
struct iphdr *iph = ip_hdr(pskb);
在找到tcp头
th = skb_header_pointer(pskb, iph->ihl*4, sizeof(_tcph), &_tcph);
th->dest、th->source就是端口号了。
第二个问题skb->data_len不知道!
|
楼主咋了...哈哈