- 论坛徽章:
- 0
|
Sniffer 在系统中的基本路径
Soft_irq
||
V
int netif_receive_skb(struct sk_buff *skb)
||
V
static __inline__ int deliver_skb(struct sk_buff *skb,
struct packet_type *pt_prev,
struct net_device *orig_dev)
||
V
atomic_inc(&skb->users);
#ifdef CONFIG_PACKET_MMAP
static int tpacket_rcv(struct sk_buff *skb,
struct net_device *dev,
struct packet_type *pt,
struct net_device *orig_dev)
||
V
kfree_skb(skb);
#endif
此文证明问题:skbs 数据包在内核里处理sniffer时不会拷贝数据,
数据包只拷贝一次,即网卡缓冲到内存(只限内核态)
[ 本帖最后由 印随 于 2008-12-11 16:01 编辑 ] |
|