//skb合法检查,包括数据流的方向
if((!skb) /* Invalid skb */
||((!enable_tx_capture) && (!recv_packet))) {
/*
An outgoing packet is about to be sent out
but we decided not to handle transmitted
packets.
*/
return(0);
}
#if defined(RING_DEBUG)
if(1) {
struct timeval tv;
//如果通道ID未指定,根据进入的报文设备索引,设定之
#if(LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,21))
if(channel_id == RING_ANY_CHANNEL /* Unknown channel */ )
channel_id = skb->iif; /* Might have been set by the driver */
#endif
#if defined (RING_DEBUG)
/* printk("[PF_RING] channel_id=%d\n", channel_id); */
#endif
#ifdef PROFILING
rdt1 = _rdtsc();
#endif
if(recv_packet) {
/* Hack for identifying a packet received by the e1000 */
if(real_skb)
displ = SKB_DISPLACEMENT;
else
displ = 0; /* Received by the e1000 wrapper */
} else
displ = 0;
[ 本帖最后由 独孤九贱 于 2009-12-21 16:26 编辑 ]作者: Godbach 时间: 2009-12-21 16:13
多谢九贱兄的好文啊。有时间一定仔细拜读。作者: @sky 时间: 2009-12-21 16:32
思路看着眼熟作者: ubuntuer 时间: 2009-12-22 12:52
九贱“前辈”出品 必属精品作者: dreamice 时间: 2009-12-22 13:17
这贴强悍作者: tiger625 时间: 2010-02-01 12:00
你好,我在make时出现了如下的错误,要怎么解决,网上几乎没找着解决方法。PF_RING也是直接SVN下载的,应该没有问题才是。
make -C /lib/modules/2.6.9-89.ELsmp/build SUBDIRS=/usr/src/PF_RING/kernel EXTRA_CFLAGS='-I/usr/src/PF_RING/kernel -DSVN_REV="\"4113\""' modules
make[1]: Entering directory `/usr/src/kernels/2.6.9-89.EL-smp-i686'
CC [M] /usr/src/PF_RING/kernel/pf_ring.o
/usr/src/PF_RING/kernel/pf_ring.c:203: warning: `MODULE_PARM_' is deprecated (declared at include/linux/module.h:554)
/usr/src/PF_RING/kernel/pf_ring.c:204: warning: `MODULE_PARM_' is deprecated (declared at include/linux/module.h:554)
/usr/src/PF_RING/kernel/pf_ring.c:205: warning: `MODULE_PARM_' is deprecated (declared at include/linux/module.h:554)
/usr/src/PF_RING/kernel/pf_ring.c:206: warning: `MODULE_PARM_' is deprecated (declared at include/linux/module.h:554)
/usr/src/PF_RING/kernel/pf_ring.c: In function `match_filtering_rule':
/usr/src/PF_RING/kernel/pf_ring.c:1072: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:1085: error: storage size of 'state' isn't known
/usr/src/PF_RING/kernel/pf_ring.c:1103: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:1107: warning: implicit declaration of function `textsearch_find_continuous'
/usr/src/PF_RING/kernel/pf_ring.c:1107: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:1085: warning: unused variable `state'
/usr/src/PF_RING/kernel/pf_ring.c: In function `register_device_handler':
/usr/src/PF_RING/kernel/pf_ring.c:2360: warning: assignment from incompatible pointer type
/usr/src/PF_RING/kernel/pf_ring.c: In function `ring_release':
/usr/src/PF_RING/kernel/pf_ring.c:2537: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:2538: warning: implicit declaration of function `textsearch_destroy'
/usr/src/PF_RING/kernel/pf_ring.c:2538: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c: In function `do_memory_mmap':
/usr/src/PF_RING/kernel/pf_ring.c:2806: warning: assignment makes integer from pointer without a cast
/usr/src/PF_RING/kernel/pf_ring.c:2807: warning: passing arg 1 of `kvirt_to_pa' makes integer from pointer without a cast
/usr/src/PF_RING/kernel/pf_ring.c:2812: warning: implicit declaration of function `remap_pfn_range'
/usr/src/PF_RING/kernel/pf_ring.c: In function `ring_setsockopt':
/usr/src/PF_RING/kernel/pf_ring.c:3588: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3591: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3602: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3625: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3626: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3627: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3627: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3627: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3627: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3741: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c:3742: error: structure has no member named `pattern'
/usr/src/PF_RING/kernel/pf_ring.c: In function `ring_exit':
/usr/src/PF_RING/kernel/pf_ring.c:4405: warning: implicit declaration of function `proto_unregister'
/usr/src/PF_RING/kernel/pf_ring.c:4405: error: `ring_proto' undeclared (first use in this function)
/usr/src/PF_RING/kernel/pf_ring.c:4405: error: (Each undeclared identifier is reported only once
/usr/src/PF_RING/kernel/pf_ring.c:4405: error: for each function it appears in.)
/usr/src/PF_RING/kernel/pf_ring.c: In function `ring_init':
/usr/src/PF_RING/kernel/pf_ring.c:4422: warning: implicit declaration of function `proto_register'
/usr/src/PF_RING/kernel/pf_ring.c:4422: error: `ring_proto' undeclared (first use in this function)
make[2]: *** [/usr/src/PF_RING/kernel/pf_ring.o] Error 1
make[1]: *** [_module_/usr/src/PF_RING/kernel] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.9-89.EL-smp-i686'
make: *** [all] Error 2作者: accessory 时间: 2010-02-04 07:07
不错。大概看了下思路,学习了。