aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/linux-cp/lcp_router.c
diff options
context:
space:
mode:
authorAdrian Pistol <vifino@posteo.net>2023-04-12 18:03:50 +0200
committerMatthew Smith <mgsmith@netgate.com>2023-04-14 21:12:12 +0000
commit8f78c935f8c3beb7042c1c19ccefaebcf784cecf (patch)
tree83442cdc3c63483d9fcc7db856bcc81b5502cc64 /src/plugins/linux-cp/lcp_router.c
parentb8a663c56ddb3293c46097e9c2168bda3088ecb7 (diff)
linux-cp: Handle RTA_VIA routes.
RTA_VIA allows routes to have a next-hop in a different address family. This commit makes linux-cp import those types of routes correctly, instead of importing the routes without a gateway. This uses rtnl_route_nh_get_gateway, which is available since libnl 3.4.0 (Oct. 9, 2017). Even Debian Stretch has it via backports. Type: fix Change-Id: I06297c700461ba7874eb8baf9355bd40990b3121 Signed-off-by: Adrian Pistol <vifino@posteo.net>
Diffstat (limited to 'src/plugins/linux-cp/lcp_router.c')
-rw-r--r--src/plugins/linux-cp/lcp_router.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/plugins/linux-cp/lcp_router.c b/src/plugins/linux-cp/lcp_router.c
index 01eca9f2011..c5846cfca3c 100644
--- a/src/plugins/linux-cp/lcp_router.c
+++ b/src/plugins/linux-cp/lcp_router.c
@@ -1022,10 +1022,11 @@ lcp_router_route_path_parse (struct rtnl_nexthop *rnh, void *arg)
path->frp_preference = ctx->preference;
addr = rtnl_route_nh_get_gateway (rnh);
+ if (!addr)
+ addr = rtnl_route_nh_get_via (rnh);
if (addr)
- fproto = lcp_router_mk_addr46 (rtnl_route_nh_get_gateway (rnh),
- &path->frp_addr);
+ fproto = lcp_router_mk_addr46 (addr, &path->frp_addr);
else
fproto = ctx->route_proto;