diff --git a/components/lwip/core/ipv4/ip4.c b/components/lwip/core/ipv4/ip4.c index cc4393af78..b16f482e69 100755 --- a/components/lwip/core/ipv4/ip4.c +++ b/components/lwip/core/ipv4/ip4.c @@ -172,12 +172,6 @@ ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src) struct netif * ip4_route(const ip4_addr_t *dest) { -#if ESP_LWIP - struct netif *non_default_netif = NULL; -#if LWIP_HAVE_LOOPIF - struct netif *loop_default_netif = netif_find("lo0"); -#endif -#endif struct netif *netif; #if LWIP_MULTICAST_TX_OPTIONS @@ -201,23 +195,8 @@ ip4_route(const ip4_addr_t *dest) /* return netif on which to forward IP packet */ return netif; } - - if (netif != netif_default){ -#if LWIP_HAVE_LOOPIF - non_default_netif = (netif == loop_default_netif) ? NULL : netif; -#else - non_default_netif = netif; -#endif - } } } - -#if ESP_LWIP - if (non_default_netif && !ip4_addr_isbroadcast(dest, non_default_netif)){ - return non_default_netif; - } -#endif - #if LWIP_NETIF_LOOPBACK && !LWIP_HAVE_LOOPIF /* loopif is disabled, looopback traffic is passed through any netif */ if (ip4_addr_isloopback(dest)) { diff --git a/components/tcpip_adapter/tcpip_adapter_lwip.c b/components/tcpip_adapter/tcpip_adapter_lwip.c index f9d7afe6bc..d385fd4180 100644 --- a/components/tcpip_adapter/tcpip_adapter_lwip.c +++ b/components/tcpip_adapter/tcpip_adapter_lwip.c @@ -138,6 +138,19 @@ static int tcpip_adapter_ipc_check(tcpip_adapter_api_msg_t *msg) #endif } +static esp_err_t tcpip_adapter_update_default_netif(void) +{ + if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_STA])) { + netif_set_default(esp_netif[TCPIP_ADAPTER_IF_STA]); + } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_ETH])) { + netif_set_default(esp_netif[TCPIP_ADAPTER_IF_ETH]); + } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_AP])) { + netif_set_default(esp_netif[TCPIP_ADAPTER_IF_AP]); + } + + return ESP_OK; +} + esp_err_t tcpip_adapter_start(tcpip_adapter_if_t tcpip_if, uint8_t *mac, tcpip_adapter_ip_info_t *ip_info) { netif_init_fn netif_init; @@ -176,14 +189,7 @@ esp_err_t tcpip_adapter_start(tcpip_adapter_if_t tcpip_if, uint8_t *mac, tcpip_a } } - /* if ap is on, choose ap as default if */ - if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_AP])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_AP]); - } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_STA])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_STA]); - } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_ETH])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_ETH]); - } + tcpip_adapter_update_default_netif(); return ESP_OK; } @@ -245,15 +251,7 @@ esp_err_t tcpip_adapter_stop(tcpip_adapter_if_t tcpip_if) netif_set_down(esp_netif[tcpip_if]); netif_remove(esp_netif[tcpip_if]); - - /* in ap + sta mode, if stop ap, choose sta as default if */ - if (tcpip_if == TCPIP_ADAPTER_IF_AP) { - if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_STA])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_STA]); - } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_ETH])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_ETH]); - } - } + tcpip_adapter_update_default_netif(); return ESP_OK; } @@ -278,13 +276,7 @@ esp_err_t tcpip_adapter_up(tcpip_adapter_if_t tcpip_if) netif_set_up(esp_netif[tcpip_if]); } - if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_AP])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_AP]); - } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_STA])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_STA]); - } else if (netif_is_up(esp_netif[TCPIP_ADAPTER_IF_ETH])) { - netif_set_default(esp_netif[TCPIP_ADAPTER_IF_ETH]); - } + tcpip_adapter_update_default_netif(); return ESP_OK; }