|
@@ -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 */
|