嵌入式技术论坛
直播中

jjll652

8年用户 1386经验值
私信 关注
[问答]

IPv6不能外发数据包如何解决呢

RTT 2.1
LwIP 2.0.2
File: src/netif/ethernetif.c
Func: eth_device_init_with_flag
初始化时,针对IPv6,会先设置output_ip6:
#if LWIP_IPV6
netif->outout_ip6 = ethip6_output;
#endif
然后调用 netifapi_netif_add, 配置IP地址等;然而,在netifapi_net_if_add中,最终会调用netif_add函数,在该函数中:

#if LWIP_IPV6
for(....){
....
}
netif->output_ip6 = netif_null_output_ip6.
#endif
即: 调用完netif_add函数后,netif->output->ip6会被覆盖,变为netif_null_output_ip6,结果,IPv6不能外发数据包。

解决方案:

针对IPv6,将对netif->output_ip6的赋值延后,或者是,注释掉LwIP源码中对netif->output_ip6的缺省赋值。

回帖(2)

王浩

2022-9-5 14:53:11
请问移植的IPV6使用的是什么接口?是NETCONN的API吗?还是Socket API
举报

h1654155275.5748

2022-9-5 14:53:18
肯定尽可能使用socket API啦,以降低学习成本。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分