[OpenWrt-Devel] [PATCH 2/3] netifd: Apply interface metric on subnet routes when reloading ip

Hans Dedecker dedeckeh at gmail.com
Wed Oct 22 08:11:26 EDT 2014


Signed-off-by: Hans Dedecker <dedeckeh at gmail.com>
---
 interface-ip.c | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/interface-ip.c b/interface-ip.c
index 62d15fd..1459e9c 100644
--- a/interface-ip.c
+++ b/interface-ip.c
@@ -1154,9 +1154,11 @@ void interface_ip_set_enabled(struct interface_ip_settings *ip, bool enabled)
 	struct device_addr *addr;
 	struct device_route *route;
 	struct device *dev;
+	struct interface *iface;
 
 	ip->enabled = enabled;
-	dev = ip->iface->l3_dev.dev;
+	iface = ip->iface;
+	dev = iface->l3_dev.dev;
 	if (!dev)
 		return;
 
@@ -1164,10 +1166,16 @@ void interface_ip_set_enabled(struct interface_ip_settings *ip, bool enabled)
 		if (addr->enabled == enabled)
 			continue;
 
-		if (enabled)
+		if (enabled) {
 			system_add_address(dev, addr);
-		else
+			if ((addr->flags & DEVADDR_OFFLINK) || iface->metric)
+				interface_handle_subnet_route(iface, addr, true);
+
+		}
+		else {
+			interface_handle_subnet_route(iface, addr, false);
 			system_del_address(dev, addr);
+		}
 		addr->enabled = enabled;
 	}
 
-- 
1.9.1
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list