From: Felix Fietkau Date: Tue, 27 Mar 2018 09:28:54 +0000 (+0200) Subject: netifd: return the interface for locally addressable host dependencies (FS#1452) X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fnetifd.git;a=commitdiff_plain;h=9c8d7816fc5e966b0c0efab9c1234734e0c5c254 netifd: return the interface for locally addressable host dependencies (FS#1452) Fixes an issue where interfaces with host dependencies that resolve to a local subnet stay down. Fixes: 1f5a29c3de6e ("ip: do not add local routes for host dependencies") Signed-off-by: Felix Fietkau --- diff --git a/interface-ip.c b/interface-ip.c index 4a3e2c0..1c84d4f 100644 --- a/interface-ip.c +++ b/interface-ip.c @@ -245,7 +245,7 @@ interface_ip_add_target_route(union if_addr *addr, bool v6, struct interface *if if (iface) { /* look for locally addressable target first */ if (interface_ip_find_addr_target(iface, addr, v6)) - goto done; + return iface; /* do not stop at the first route, let the lookup compare * masks to find the best match */ @@ -254,7 +254,7 @@ interface_ip_add_target_route(union if_addr *addr, bool v6, struct interface *if vlist_for_each_element(&interfaces, iface, node) { /* look for locally addressable target first */ if (interface_ip_find_addr_target(iface, addr, v6)) - goto done; + return iface; /* do not stop at the first route, let the lookup compare * masks to find the best match */ @@ -262,7 +262,6 @@ interface_ip_add_target_route(union if_addr *addr, bool v6, struct interface *if } } -done: if (!r_next) { free(route); return NULL;