According to the OpenWRT Network documentation for route, the 'source' option
is "The preferred source address when sending to destinations covered by the
target". However, netifd currently stores this value in RTA_SRC on
NEWROUTE/DELROUTE.

RTA_SRC is not used by kernel when handling NEWROUTE nor DELROUTE. Store the
source address in RTA_PREFSRC, so that option works as specified in
documentation.

Signed-off-by: Kristian Evensen <kristian.even...@gmail.com>
---
 system-linux.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/system-linux.c b/system-linux.c
index 83827d5..428302f 100644
--- a/system-linux.c
+++ b/system-linux.c
@@ -1429,7 +1429,7 @@ static int system_rt(struct device *dev, struct 
device_route *route, int cmd)
                nla_put(msg, RTA_DST, alen, &route->addr);
 
        if (route->sourcemask)
-               nla_put(msg, RTA_SRC, alen, &route->source);
+               nla_put(msg, RTA_PREFSRC, alen, &route->source);
 
        if (route->metric > 0)
                nla_put_u32(msg, RTA_PRIORITY, route->metric);
-- 
2.1.0
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to