LWIP_HOOK_UNKNOWN_ETH_PROTOCOL宏定义使用方法

本文介绍了LWIP钩子LWIP_HOOK_UNKNOWN_ETH_PROTOCOL的作用,允许开发者处理未知以太网协议。文章讨论了其使用方法,强调了通过头文件方式的局限性,并提出在opt.h中改进以提高移植灵活性。
摘要由CSDN通过智能技术生成

1、LWIP_HOOK_UNKNOWN_ETH_PROTOCOL作用

        定义了这个宏后,可以在ethernet_input函数中,自定义处理未知的以太网报文:

                

        

用这个钩子可以提供灵活性,以便在遇到未知的以太网协议时执行自定义的处理逻辑:

        例如,你可以决定如何处理这些未知类型的数据包,例如将其转发到另一个接口、将其丢弃或将其传递给应用程序进行处理。等等

2、按照官方的使用方法

 1) 你还需要使能宏LWIP_HOOK_FILENAME,以包含自定义处理的头文件

                

#if        1    //def __DOXYGEN__
#define LWIP_HOOK_FILENAME "path/to/my/lwip_hooks.h"
#endif

 2) 使能LWIP_HOOK_UNKNOWN_ETH_PROTOCOL,对应都具体的函数

                

#if 1   //def __DOXYGEN__
#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL(pbuf, netif)     myhook(pbuf,netif)
#endif

3、这种方法的局限

        通过包含头文件的方式,不利于移植;如果调用lwip是通过lib方式调用,那这个lwip.lib移植就受限,不灵活,必须将LWIP_HOOK_FILENAME 具体的路径包含在工程里,不方便在不同工程调用。

4、改进方法

在opt.h中

extern err_t eth_unknow_type_hook(struct pbuf* pbuf, struct netif* netif);

#define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL eth_unknow_type_hook

        这样改会 提示err_t struct pbuf* , struct netif*未定义,

        继续改进

                 |

                 |

                V

        extern err_t eth_unknow_type_hook(void* pbuf, void* netif);

        #define LWIP_HOOK_UNKNOWN_ETH_PROTOCOL eth_unknow_type_hook

        这样改动小,也方便移植,自己在不同工程中自定义自己的eth_unknow_type_hook函数即可

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值