Skip to content

Commit

Permalink
zebra: Fix fpm multipath encap addition
Browse files Browse the repository at this point in the history
The fpm code path in building a ecmp route for evpn has
a bug that caused it to not add the encap attribute to
the netlink message.  See #f0f7b285b99dbd971400d33feea007232c0bd4a9
for the single path case being fixed.

Signed-off-by: Donald Sharp <[email protected]>
  • Loading branch information
donaldsharp committed Nov 20, 2023
1 parent f9012ed commit 6b23ece
Showing 1 changed file with 10 additions and 17 deletions.
27 changes: 10 additions & 17 deletions zebra/rt_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -2475,6 +2475,16 @@ ssize_t netlink_route_multipath_msg_encode(int cmd, struct zebra_dplane_ctx *ctx
tag))
return 0;

/*
* Add encapsulation information when installing via
* FPM.
*/
if (fpm) {
if (!netlink_route_nexthop_encap(
&req->n, datalen, nexthop))
return 0;
}

if (!setsrc && src1) {
if (p->family == AF_INET)
src.ipv4 = src1->ipv4;
Expand All @@ -2488,23 +2498,6 @@ ssize_t netlink_route_multipath_msg_encode(int cmd, struct zebra_dplane_ctx *ctx

nl_attr_nest_end(&req->n, nest);

/*
* Add encapsulation information when installing via
* FPM.
*/
if (fpm) {
for (ALL_NEXTHOPS_PTR(dplane_ctx_get_ng(ctx),
nexthop)) {
if (CHECK_FLAG(nexthop->flags,
NEXTHOP_FLAG_RECURSIVE))
continue;
if (!netlink_route_nexthop_encap(
&req->n, datalen, nexthop))
return 0;
}
}


if (setsrc) {
if (p->family == AF_INET) {
if (!nl_attr_put(&req->n, datalen, RTA_PREFSRC,
Expand Down

0 comments on commit 6b23ece

Please sign in to comment.