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的缺省赋值。
更多回帖