我在《深入linux网络核心堆栈》中得到一个例子程序,如下:
#define _KERNEL_
#define MODULE
#include
by qpbn10 - Linux新手园地 - 2010-06-21 10:54:23 阅读(1333) 回复(1)
初学netfilter编程,下面是我写的一个代码。系统为redhat linux9,内核2.4.20-8,编译方法为gcc -c -DMODULE -D__KERNEL__ -D__USE_TO_IPV4__ -W -Wall -isystem /lib/modules/2.4.20-8/build/include testchk.c,如果不加两个"//----"之间关于计算校验和的部分,编译和加载模块都没问题。但如果加上这段代码,编译没问题,但加载时报错: testchk.o:unresloved symbol ntohs。 查了一下ntohs包含在net...
#define __KERNEL__
#define MODULE
#include
#define __KERNEL__ \r\n#define MODULE \r\n\r\n#include
我用这样的语句去获取TCP包的源、目的端口,但是获取到的端口号却有问题,比如http应是80,DNS应 是53,可这边输出的都不是这些应该端口号。是ntohs()函数的问题吗 ? tcph=(struct tcphdr*)pskb->transport_header; printk("TCP: [%u]-->[%u]",ntohs(tcph->source),ntohs(tcph->dest)); printk("\n"); [ 本帖最后由 木叶忍 于 2009-4-14 10:50 编辑 ]
基于netfilter实现过滤TCP端口的内核模块编程 在加载模块后 电脑出现死机 强制关机也无法相应 代码如下:
#include
目前在做NAT,想增加流量统计这个功能,当在SNAT功能模块和DNAT功能模块里面加nat_add_discharge函数调用,然后上网,一会儿就死机了。部分代码如下, 会不会是我在增加流量的时候没有对我的变量进行互斥访问导致死机呢?谢谢! nat_add_discharge(ip_head->daddr,ntohs(ip_head->tot_len)); 142 /*给相应的ip地址增加统计流量*/ 143 int nat_add_discharge(unsigned int ip_address,unsigned short discharge) 144 { 145 ...
在下想学Linux基于netfilter框架防火墙技术 因为netfilter框架是运行在内核的 所以我需要学习Linux下的内核模块编程 我也有看过一些相关材料,但是不是很系统 所以想请有经验的前辈们推荐一下有关 Linux 内核编程 和 netfilter 防火墙编程 方面的书籍,代码例子也行 如果有国外的原版教材就更好了 让我少走弯路,谢谢!
我的思路是在模块初始化时,将要一组IP地址从一个文件中读出,放到一个数组中 char * souip[20]; 然后在hook函数中进行比较,如下: ......... iph=(*skb)->nh.iph; if(iph->saddr==in_aton("130.24.0.13")){ return NF_DROP; } return NF_ACCEPT; 以上操作是没有问题的。下面说一下 调试时 三种情况遇到的问题: (1)如果做一下改动,比如把"130.24.0.13"从文件中读出,存入souip[0],,然后对 iph->saddr==in_aton(souip[0]) ...
我的思路是在模块初始化时,将要一组IP地址从一个文件中读出,放到一个数组中 char * souip[20]; 然后在hook函数中进行比较,如下: ......... iph=(*skb)->nh.iph; if(iph->saddr==in_aton("130.24.0.13")){ return NF_DROP; } return NF_ACCEPT; 以上操作是没有问题的。下面说一下 调试时 三种情况遇到的问题: (1)如果做一下改动,比如把"130.24.0.13"从文件中读出,存入souip[0],,然后对 iph->saddr==in_aton(souip[0]) ...