估计你的重复贴发太多了,被删了。
知道错误点你还不知道怎么去改,证明你对BPF很不熟悉,那你为什么不用libpcap呢?如果你想追求PF_RING的性能,libpcap也有针对PF_RING的版本呀,想不明白。libpcap的过滤规则是人性化的字符串,而BPF是类汇编的语言,如果你以前没有汇编的编程经验,会觉得他比较别扭。
如果你真坚持用BPF,那请你先把BPF学会再说。
百度一个Linux BPF, 有很多文章,如:
http://blog.csdn.net/maeom/article/details/6092457
我今天百度BPF才发现,你可能是拷贝别人的代码,而不是自己写的,那个出错点是因为别人代码里有某些代码变成笑脸了。如:
http://bbs.chinaunix.net/thread-1972792-1-1.html
大哥,你拷贝也找份完整点的呀!
你这种新手,建议还是用回libpcap吧。别折腾了。
百度一个libpcap吧,例如:
http://blog.csdn.net/htttw/article/details/7521053
如果还不知道过滤规则怎么用,那就先学会用现在的工具tcpdump再说吧。
回复 7# Tinnal
我那个bpf过滤没有问题
struct bpf_insn insns[] = {
52. BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 12),
59. BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, ETHERTYPE_IP, 0, 10),
60. BPF_STMT(BPF_LD+BPF_B+BPF_ABS, 23),
61. BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, IPPROTO_TCP, 0, 8),
62. BPF_STMT(BPF_LD+BPF_H+BPF_ABS, 20),
63. BPF_JUMP(BPF_JMP+BPF_JSET+BPF_K, 0x1fff, 6, 0),
64. BPF_STMT(BPF_LDX+BPF_B+BPF_MSH, 14),
65. BPF_STMT(BPF_LD+BPF_H+BPF_IND, 14),
66. BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 2, 0),
67. BPF_STMT(BPF_LD+BPF_H+BPF_IND, 16),
68. BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, 79, 0, 1),
69. BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
70. BPF_STMT(BPF_RET+BPF_K, 0),
71.};
回复 10# siyu_yangyang
要善用百度!!!!大哥。等你发现百度解不了你的问题,就要用google。这么初级的问题,论坛也很少人会答的。
给你个链接,也是百度出来的。
http://blog.csdn.net/leeshuheng/article/details/7729514
回复 12# siyu_yangyang
你原来的代码连那个笑脸都没有,出来个笑脸,还有可能是代码没有问题,只是你不会贴代码。但没有笑脸的版本你让我如何认为你的代码是对的呀。
chinaunix论坛的发贴窗口里是有专门粘代码的功能的,看看在线编辑器的工具栏。
回复 13# Tinnal
大哥们,哥们学了两天了,五一前要把东西做出来!经理逼的紧呀! 回复 15# siyu_yangyang
跳槽吧。呵呵。
回复 15# siyu_yangyang
想效率快,问题少,维护容易,请用RF_RING+libpcap或直接原生libpcap。
想性能好就直接用PF_RING吧。
回复 16# Tinnal
大哥们,小弟还没有大学毕业,怎么能跳槽呢?我用的代码来源于pf_ring里面的pfcount.c,这个开源代码,PF_RING里面包括libpcap,
typedef struct {
u_int16_t rule_id; /* Rules are processed in order from lowest to higest id */
rule_action_behaviour rule_action; /* What to do in case of match */
u_int8_t balance_id, balance_pool; /* If balance_pool > 0, then pass the packet above only if the
(hash(proto, sip, sport, dip, dport) % balance_pool) = balance_id */
u_int8_t locked; /* Do not purge with pfring_purge_idle_rules() */
u_int8_t bidirectional; /* Swap peers when checking if they match the rule. Default: monodir */
filtering_rule_core_fields core_fields;
filtering_rule_extended_fields extended_fields;
filtering_rule_plugin_action plugin_action;
char reflector_device_name;
filtering_internals internals; /* PF_RING internal fields */
} filtering_rule;
配置这个结构体,调用pfring_add_filtering_rule(pd, &rule))函数生成规则,主要是怎么配置这个结构体才能生成过滤一组的IP数据包呢 回复 17# Tinnal
求,哥哥们给点代码,可以做参考! 本帖最后由 Tinnal 于 2014-04-29 14:14 编辑
晕,作为学生,你更应该去自己研究呀。采用libpcap的代码,前面的回复已经给你链接了呀。
研究生了,要学会学习。
已经学过很多遍,尤其对于你们学生,先要做得出来,再考虑做好。
页:
1
[2]