打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
linux网桥内核实现分析(二)---协议链的注册

netif_receive_skb是内核中一个非常重要的函数,所有的报文经过中断处理函数net_rx_action以后,会进入netif_receive_skb函数匹配报文对应的协议,不同的协议调用不同的协议处理函数,所以是IP,ARP等协议的一个分水岭,协议的注册匹配等工作实际上和网桥的处理无关,这里只是描述一下网络数据包进入网桥处理以前的一些操作。

 

packet_type 结构

 

struct packet_type {

       __be16               type;      

       struct net_device    *dev;     

       int                  (*func) (struct sk_buff *,

                                    struct net_device *,

                                    struct packet_type *,

                                    struct net_device *);

       struct sk_buff       *(*gso_segment)(struct sk_buff *skb,

                                          int features);

       int                  (*gso_send_check)(struct sk_buff *skb);

       void                 *af_packet_priv;

       struct list_head     list;

};

 

 

__be16              type;       //要处理的协议类型

int                 (*func);  //注册的协议处理函数

 

例如,这里是IP协议的注册

 

static struct packet_type ip_packet_type = {

.type = __constant_htons(ETH_P_IP),

.func = ip_rcv,

.gso_send_check = inet_gso_send_check,

.gso_segment = inet_gso_segment,

};

 

协议号为ETH_P_IP,ip协议的处理函数为ip_rcv.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
TCP/IP学习(28)
ptype_base和ptype_all理解,netid_receive_skb()函数注解
理解 Linux 网络栈(1):Linux 网络协议栈简单总结
Linux2.6.30内核的sock结构(3)-1/2 - TCP-IP结构体 - 978...
十年码农内功:网络发包详细过程(一)
TCP/IP协议栈初始化流程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服