乐鑫技术交流
直播中

张虎豹

7年用户 1497经验值
私信 关注
[问答]

请问使用esp-idf中的lwip启用NAT失败是何原因呢?

我正在尝试使用 esp-idf 中的 lwip 启用 NAT,但执行此操作的功能似乎无法正常工作。
第一张图显示了必须执行ip_napt_init函数的“if”,其中初始化了必要的结构,但这里从未执行过此“if”,因此永远不会启用 NAT。当进程无法正常工作时,此函数不会返回错误,因此只有当我尝试禁用 NAT 时,我才会知道它不起作用,在这种情况下,将调用ip_napt_deinit(更多内容见下图) .

第二张图片是来自  ip_napt_init的代码

第三张图片是  ip_napt_deinit函数,开发板正在崩溃,因为它试图释放之前未分配的内存。
   

回帖(1)

罗茵

2023-3-2 13:55:25
很可能是您的接口尚未启动,或者尚未分配 IP 地址。快速解决方法是休眠几秒钟(直到接口启动并且 DHCP 为其分配 IP 地址)。更好的解决方案是使用检查接口的状态代码:
esp_netif_is_netif_up()
功能。然后,你只需要等到接口启动并运行后再调用代码:
ip_napt_enable()
举报

更多回帖

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