LWIP_HOOK_UNKNOWN_ETH_PROTOCOL宏定义使用方法

发布时间:2024年01月18日

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函数即可

文章来源:https://blog.csdn.net/baowxz/article/details/135668418
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。