当前位置:  技术问答>linux和unix

关于linux,tcphdr结构体未定义,求大神帮忙

    来源: 互联网  发布时间:2017-01-29

    本文导语:  我们现在在做一个简单的小防火墙,现在在做hook,我们已经可以阻塞固定的源、目的地址以及协议的数据包,现在想阻塞固定端口的,但tcphdr这个结构体在编译的时候总是提示:‘tcphdr’ undeclared (first use in this f...

我们现在在做一个简单的小防火墙,现在在做hook,我们已经可以阻塞固定的源、目的地址以及协议的数据包,现在想阻塞固定端口的,但tcphdr这个结构体在编译的时候总是提示:‘tcphdr’ undeclared (first use in this function),之前阻拦地址时,使用的iphdr就没有问题,现在tcphdr就不行,不知何故。求大神指导!主要代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 


unsigned int hook_func(unsigned int hooknum, struct sk_buff *skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *))
{
    if(!skb)
        return NF_ACCEPT;
    else {
        struct iphdr * iph = (struct iphdr *)skb_network_header(skb);
        if (!iph)
            return NF_ACCEPT;
        //else if (iph->saddr == 27240640)
        //    return NF_DROP;
        //else if (iph->daddr == 2191501504)
        //    return NF_DROP;
        else if (iph->protocol == IPPROTO_TCP) {
            struct tcphdr * tcph = (struct tcphdr *)skb_transport_header(skb);
            //struct tcphdr * tcph;
            if (tcphdr->source == 21)
                return NF_DROP;
            if (tcphdr->dest == 80)
                return NF_DROP;
            return NF_ACCEPT;
        }
        //else if (iph->protocol == IPPROTO_UDP){
        //    struct udphdr * udph = (struct udphdr *)skb_transport_header(skb);
        //    if (tcphdr->source == 21)
        //        return NF_DROP;
        //    if (tcphdr->dest == 80)
        //        return NF_DROP;
        //    return NF_DROP;
        //}
        //else if (iph->protocol == IPPROTO_ICMP)
        //    return NF_DROP;
    }
    return NF_ACCEPT;
}


|
我在代码(嵌入式linux)里搜了一下,关于tcphdr的定义就有四个头文件,其中有两处明显不同,分别是 kernellinuxincludelinuxtcp.h  和  我们自己用户空间里的 定义文件。

建议你去你包含的头文件   里去查一下 tcphdr 结构的定义,是不是和你使用的是一致的。

另外,我看你的需求,无非是对源,目的IP、MAC、PORT之类的流做过滤,这个功能用iptables就很容易实现啊,为什么要自己做呢?

    
 
 

您可能感兴趣的文章:

  • 请教各位大神 linux安装的步骤!
  • Java做Web开发,想学习下Linux,不知用什么版本的好,望各位大神们指点
  • linux装载刚编译2.6.38.8内核,错误了, 那个大神帮帮小白
  • linux菜鸟,求大神指点,linux学的到底是什么?
  • 初学linux程序设计,有个程序找不到思路,跪求大神指点!
  • 求大神指点windows7上装了虚拟机 但虚拟机里装不了linux系统
  • 开始工作关于linux网络编程的工作,求大神推荐点这方面书籍
  • 大神们,帮忙如何查看linux系统下的开源软件是在什么环境下编写的?
  • 哪位大神给我说说怎么在个人电脑上安装2个系统 linux下安装 xp
  • Linux下Qt加载OpenCV静态链接库的问题,弄了好几天了还不会,求大神帮忙!
  • Linux环境下APACHE配置HTTP服务器的时候,Servername什么作用??求大神速来
  • 菜鸟学Linux 求大神请教
  • 懂linux 下 XML 文件解析的大神进来帮我看看
  • Linux socket AF_UNIX client端,连接连建立不起来,求大神!!!
  • linux下udp的recvfrom问题,大神,我需要你。。。
  • linux c malloc函数定义及用法详解
  • makefile 中定义的 -D_LINUX_和 LINUX有区别吗?
  • linux shell自定义函数(定义、返回值、变量作用域)介绍
  • Linux C 有没有 查看函数定义的方法?
  • LINUX 下自定义类型的问题
  • Linux中怎样挂载自定义的EXT3分区
  • 在linux下,如何查询系统的预定义变量?
  • 请问LINUX 下 _int64类型是怎么定义的啊
  • 请问linux下FILE结构在哪里有定义,
  • linux内核全局变量定义问题!
  • 最简单的问题,linux下怎么查看某个结构体的定义。
  • ★★★在linux下编译pro*c文件,提示"sqlcxt"没有定义,哪位高手帮忙,定赠分!
  • 请问linux下如何方便的找到数据类型的定义?
  • Linux中系统头文件的搜索路径定义在哪?
  • linux下Eclipse+CDT,如何查看函数的定义、声明
  • 求助Linux宏定义
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux!我来了------我是新人,还请大家多多帮忙
  • 装linux遇到问题,有高手在线帮忙吗?请发信息给我
  • 各位,帮忙推荐几本深入学习Linux的书!!!
  • 请问想学linux,请帮忙推荐一本好书?
  • 关于linux裁剪内核,越小越好。大家多多帮忙。
  • 我的linux声卡装不上,达人帮忙!
  • linux下的串口编程比较熟悉,麻烦帮忙!
  • 高手帮忙!linux初次安装的问题?
  • 高手们快来帮帮忙啊,,好郁闷!!!LINUX 9.0装不上的问题!
  • 帮忙推荐一本linux编程的好书!!!
  • 大家帮忙,推荐个好版本的Linux
  • 急!高手帮忙!cximage库在Linux下运行使用的问题。
  • 帮忙推荐个linux
  • linux的网络访问?请帮忙!
  • 急!大家帮帮忙!有哪些视频点播系统能在在LINUX下安装以及怎样安装!
  • 急!大家帮帮忙!有什么视频点播系统能在LINUX下安装,以及怎样安装!!
  • 请各位帮忙推荐几本Linux多进程编程的好书
  • 升级Linux的问题,急!请高手帮忙!
  • Linux学习,高手帮忙
  • 大家帮忙,我想用LINUX作为ADSL上网的服务器,请教各位大侠如何配置?
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3