zoukankan      html  css  js  c++  java
  • netfilter 参考pywj的《netfilter + nf_conntrack + iptables》

    以broadcom 4.12为例

    netfilter.h中,

    extern struck list_head nf_hooks[NFPROTO_NUMPROTO][NF_MAX_HOOKS];

    netfilter.h中, 

    #define NF_MAX_HOOKS  8

    enum

    {

        NFPROTO_UNSPEC  = 0,

        NFPROTO_IPV4       = 2,

        NFPROTO_ARP        = 3,

        NFPROTO_BRIDGE  = 7,

        NFPROTO_IPV6       = 10,

        NFPROTO_DECENT  = 12,

        NFPROTO_NUMPROTO,

    };

    1: 这个二维数组的每一项代表了一个钩子被调用的点, NF_PROTO代表协议栈, NF_HOOK代表协议栈中的某个路径点。

    2: 所有模块都可以通过nf_register_hook() 函数将一个钩子项挂入想被调用点的链表中,(通过protocol和 hook指定一个点)。 这样, 该钩子项就能处理指定protocal 中, 和指定hook点流经的数据包。

    3: netfilter在不同协议栈的不同点上(例如arp_rcv(), ip_rcv(), ipv6_rcv(), br_forward()等)放置NF_HOOK函数, 当数据包经过了某个协议栈(NF_PROTO)的某个点(NF_HOOK)时, 该协议栈会通过NF_HOOKS函数调用对应钩子链表(nf_hooks[NF_PROTO][NF_HOOK])中注册的每一个钩子项来处理该数据包。 如上一章《IPv4接受与转发协议栈流程图》中IPv4协议处理该函数调用的HOOK点。

  • 相关阅读:
    变态跳台阶
    循环删除元素,返回最后一个被删除元素的下标
    阿拉伯数字转中文大写
    最长相同子串
    最多购买种类
    win10 64位 安装scrapy
    requests+正则爬取猫眼电影前100
    Django forms表单 select下拉框的传值
    更改静态图片后,前端依旧显示之前的图片
    阿里云远程连接CentOS
  • 原文地址:https://www.cnblogs.com/gavinwu/p/3706835.html
Copyright © 2011-2022 走看看