lxl8768 发表于 2013-03-25 17:45

拷贝e1000e发送的包

我想把通过某个网口"eth0"发送和接受的数据拷贝一份到我的程序,进行分析。
在e1000_clean_rx_irq的e1000_receive_skb之前拷贝出接收包,现在看起来好像没有什么问题。
在e1000_xmit_frame的e1000_tx_map之前考出发送包。但是拷贝的包好像不对。我又试着在e1000_tx_map在dma_map_single和dma_map_page拷贝数据包,貌似也不对。
问一下应该在哪里拷贝发送出去的数据包?skb->data和frag->page里面的数据包都是完整的吗?都是ethheader开头的吗?我需要ethheader开头的完整数据包
对驱动不了解,搞得一头雾水,请高手指点

goldenfort 发表于 2013-03-25 18:24

回复 1# lxl8768


    网上有 etherpuppet程序,可以下下来看。

 那程序是 把一个eth 端口的所有包,都发送到另外一个端口

lxl8768 发表于 2013-03-25 18:29

谢谢,我还是想问一下,如果我在e1000e驱动中加入一段拷贝代码的话应该放在那里?在e1000_clean_rx_irq中的skb->data直接用好像没用问题,在e1000_xmit_frame中的为什么就不行啊?回复 2# goldenfort


   

goldenfort 发表于 2013-03-25 18:34

回复 3# lxl8768

    etherpuppet程序地址  http://www.secdev.org/projects/etherpuppet/
    你的办法搞不懂,etherpuppet 是应用空间程序,kernel 本来应该就提供了整包copy 的机制,调用就可以了,不用另外加接口吧

lxl8768 发表于 2013-03-25 18:44

好的,谢谢,就是不知道这个程序会不会多一次拷贝。我去研究下代码。回复 4# goldenfort


   

lxl8768 发表于 2013-03-26 18:49

哎,还是要继续等待回答啊,有木有搞过e1000e的?
页: [1]
查看完整版本: 拷贝e1000e发送的包