Browse files

route: rtnl_route_build_msg() should not overwrite the route scope

rtnl_route_build_msg() should allow the user to set the route scope
explicitly to RT_SCOPE_NOWHERE.

This is useful for IPv4 routes, because when deleting a route,
the kernel requires the scope to match, unless the scope is set to
RT_SCOPE_NOWHERE. Thus by setting the scope to RT_SCOPE_NOWHERE,
the user can delete a route, even without knowing its scope.

rtnl_route_build_msg() should only try to guess the scope, if it was
not explicitly specified.

Signed-off-by: Thomas Haller <>
Acked-by: Thomas Graf <>
  • Loading branch information...
1 parent 3fb0aae commit 85ec9c7ad80c60f4f619472f2bb9d9595da93b26 @thom311 committed Feb 13, 2014
Showing with 1 addition and 1 deletion.
  1. +1 −1 lib/route/route_obj.c
@@ -1198,7 +1198,7 @@ int rtnl_route_build_msg(struct nl_msg *msg, struct rtnl_route *route)
if (route->rt_src)
rtmsg.rtm_src_len = nl_addr_get_prefixlen(route->rt_src);
- if (rtmsg.rtm_scope == RT_SCOPE_NOWHERE)
+ if (!(route->ce_mask & ROUTE_ATTR_SCOPE))
rtmsg.rtm_scope = rtnl_route_guess_scope(route);
if (rtnl_route_get_nnexthops(route) == 1) {

0 comments on commit 85ec9c7

Please sign in to comment.