Explorar o código

[components][net][lwip][port] Fix next-hop finding in lwip_ip4_route_src. (#7504)

Co-authored-by: Wayne Lin <wclin@nuvoton.com>
Wayne %!s(int64=2) %!d(string=hai) anos
pai
achega
a2b7a44070
Modificáronse 1 ficheiros con 8 adicións e 8 borrados
  1. 8 8
      components/net/lwip/port/sys_arch.c

+ 8 - 8
components/net/lwip/port/sys_arch.c

@@ -675,24 +675,24 @@ struct netif *lwip_ip4_route_src(const ip4_addr_t *dest, const ip4_addr_t *src)
 {
     struct netif *netif;
 
+    if (src == NULL)
+        return NULL;
+
     /* iterate through netifs */
     for (netif = netif_list; netif != NULL; netif = netif->next)
     {
         /* is the netif up, does it have a link and a valid address? */
         if (netif_is_up(netif) && netif_is_link_up(netif) && !ip4_addr_isany_val(*netif_ip4_addr(netif)))
         {
-            /* gateway matches on a non broadcast interface? (i.e. peer in a point to point interface) */
-            if (src != NULL)
+            /* source ip address equals netif's ip address? */
+            if (ip4_addr_cmp(src, netif_ip4_addr(netif)))
             {
-                if (ip4_addr_cmp(src, netif_ip4_addr(netif)))
-                {
-                    return netif;
-                }
+                return netif;
             }
         }
     }
-    netif = netif_default;
-    return netif;
+
+    return NULL;
 }
 #endif /* LWIP_HOOK_IP4_ROUTE_SRC */
 #endif /*LWIP_VERSION_MAJOR >= 2 */