lwip路由实现_Lwip实现多IP绑定方法

1  Lwip以太网卡接口netif模块介绍


Lwip使用netif结构体实现物理网卡与软件协议栈之间的软件接口,Lwip中一个netif实例对应一个IP地址。

下图是netif结构体部分成员变量,其中next用于实现多个netif链,ip_addr、netmask、gw实现IP地址绑定。

9989f8bc7de442e51fa650be1cf33be3.png

2    Lwip实现多IP地址方法模块


本模块介绍如何在一个物理网卡上实现多个IP地址功能。

(1)物理网卡结构体添加netif[NUM]数组,其中NUM表示要绑定的IP地址个数。

100104c1b461a2fa7eb8a7590992b3c9.png

(2)在lwip_stack_init协议栈初始化函数中,依据想要添加的个数,依次调用函数netif_add、netif_set_up、netif_set_link_up函数将多个netif绑定到对应的物理网卡上,并且将同一个物理网卡上的多个netif形成netif链。最后调用函数netif_set_default设置当前物理网卡的默认netif接口,此接口用于找不到路由时默认调用。

4e969a683aecfcebdcf3a20f0f9a3ae1.png

(3)修改low_level_init函数,保证每个物理网卡仅被初始化一次

d8394044e548e2b989c1864683a4cf6b.png

(4)

lwipopt.h中使能LWIP_ARP_FILTER_NETIF及LWIP_ARP_FILTER_NETIF_FN函数,并实现函数lwip_arp_filter_netif用于网卡接收过滤查找到对应IP地址的netif接口

c7df2d62f973cb4af151a9b9f5a8a431.png

f7b2b435c918ec225e61902c770b6b32.png

(5)修改ethernet_input底层网卡接收函数,添加红框圈中代码,防止网络中arp报文找不到对应的netif接口,返回NULL导致网卡接收失败

8ba99746d398021bacb733ae8679ad08.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值