- 論壇徽章:
- 0
|
用 dev_add_pack(&cappkg_proto);去抓包 發(fā)現打印的K值為什么不連續(xù)呢? 怎么回事?
另外在my_handler中也加了打印量,發(fā)現也不連續(xù);例 如內核打印
<4>[ 1898.458249] k = 7501
<4>[ 1898.637964] k = 7504
<4>[ 1898.639350] k = 7505
<4>[ 1898.641040] k = 7506
但是在K==7502的時候,雖然沒有打印出來,但是我確定收到數據包了 ,為什么沒有打印出來呢? 請指教
int cappkg_func (struct sk_buff *skb,
struct net_device *dev,
struct packet_type *pt,
struct net_device *orig_dev)
{
static int k = 0;
if (dev != destdev /*2»Ôúcapdevá′±íÖD£¬Ä¿Ç°Ö»óDò»¸ö*/)
{
goto release_skb;
}
if (/*skb->pkt_type == PACKET_OUTGOING ||*/
//±¾»ú·¢3öμİü£¬êüÖÆóúfib_validate_source£¡
//òò′ËDèòa½«Ô′μØÖ·SNAT3éò»¸ö·Ç±¾»úμØÖ·£¡
skb->pkt_type == PACKET_OTHERHOST)
{
/*
skb->pkt_type = PACKET_HOST;
skb->mark = mark;
return netif_receive_skb(skb);
*/
}
else
{
printk("k = %u \n", k++);
my_handler(skb);
}
release_skb:
// kfree_skb(skb);
return NET_RX_SUCCESS;
}
static struct
packet_type cappkg_proto =
{
.type = __constant_htons(ETH_P_ALL),
.func = cappkg_func,
};
static int __init init_shm_test(void)
{
int ret;
dev_add_pack(&cappkg_proto);
return 0;
}
|
|