interface-ip: use metric when looking for a route
[project/netifd.git] / interface-ip.c
index 648f521c407f3cde8c4eed7f4de29666b9012fd0..7b63ef923f8609adc5abf9509d0d84c45b28b0f1 100644 (file)
@@ -234,7 +234,9 @@ __find_ip_route_target(struct interface_ip_settings *ip, union if_addr *a,
                if (route->flags & DEVROUTE_TABLE)
                        continue;
 
-               if (!*res || route->mask > (*res)->mask)
+               if (!*res || route->mask > (*res)->mask ||
+                   ((route->mask == (*res)->mask) && (route->flags & DEVROUTE_METRIC)
+                    && (route->metric < (*res)->metric)))
                        *res = route;
        }
 }