diff mbox series

[2/2] interface-ip: use metric when looking for a route

Message ID 20211026215953.8951-2-luizluca@gmail.com
State Superseded
Delegated to: Felix Fietkau
Headers show
Series [1/2] interface-ip: copy more info for target host route | expand

Commit Message

Luiz Angelo Daros de Luca Oct. 26, 2021, 9:59 p.m. UTC
From: Luiz Angelo Daros de Luca <luizluca@gmail.com>

When there were multiple routes with the same target but different
metrics, __find_ip_route_target was returning the first one,
independently of the metric.

Signed-off-by: Luiz Angelo Daros de Luca <luizluca@gmail.com>
---
 interface-ip.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/interface-ip.c b/interface-ip.c
index 7c60fec..cecfb6d 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -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;
 	}
 }