summaryrefslogtreecommitdiff
path: root/zebra/rt_netlink.c
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/rt_netlink.c')
-rw-r--r--zebra/rt_netlink.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index b0ade058..7a820bfd 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -1443,8 +1443,11 @@ _netlink_route_build_singlepath(
int bytelen,
struct nexthop *nexthop,
struct nlmsghdr *nlmsg,
+ struct rtmsg *rtmsg,
size_t req_size)
{
+ if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ONLINK))
+ rtmsg->rtm_flags |= RTNH_F_ONLINK;
if (nexthop->type == NEXTHOP_TYPE_IPV4
|| nexthop->type == NEXTHOP_TYPE_IPV4_IFINDEX)
{
@@ -1534,6 +1537,9 @@ _netlink_route_build_multipath(
rtnh->rtnh_hops = 0;
rta->rta_len += rtnh->rtnh_len;
+ if (CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ONLINK))
+ rtnh->rtnh_flags |= RTNH_F_ONLINK;
+
if (nexthop->type == NEXTHOP_TYPE_IPV4
|| nexthop->type == NEXTHOP_TYPE_IPV4_IFINDEX)
{
@@ -1733,7 +1739,8 @@ netlink_route_multipath (int cmd, struct prefix *p, struct rib *rib,
_netlink_route_debug(cmd, p, nexthop, routedesc, family);
_netlink_route_build_singlepath(routedesc, bytelen,
- nexthop, &req.n, sizeof req);
+ nexthop, &req.n, &req.r,
+ sizeof req);
if (cmd == RTM_NEWROUTE)
SET_FLAG (nexthop->flags, NEXTHOP_FLAG_FIB);