Skip to content

Commit

Permalink
bgpd, lib: add zapi_route_set_nhg_id() support
Browse files Browse the repository at this point in the history
There is no function that both sets the nhg id, and sets
the ZAPI_MESSAGE_NHG flag if the nhg id is valid.
Create a ZAPI API to do this, and apply the changes wherever
needed.

Signed-off-by: Philippe Guibert <[email protected]>
  • Loading branch information
pguibert6WIND committed Dec 18, 2023
1 parent 237ebf8 commit d8477d4
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
4 changes: 1 addition & 3 deletions bgpd/bgp_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -1248,9 +1248,7 @@ static void bgp_zebra_announce_parse_nexthop(
/* EVPN MAC-IP routes are installed with a L3 NHG id */
if (nhg_id && bgp_evpn_path_es_use_nhg(bgp, info, nhg_id)) {
mpinfo = NULL;
api->nhgid = *nhg_id;
if (*nhg_id)
SET_FLAG(api->message, ZAPI_MESSAGE_NHG);
zapi_route_set_nhg_id(api, nhg_id);
} else {
mpinfo = info;
}
Expand Down
9 changes: 9 additions & 0 deletions lib/zclient.h
Original file line number Diff line number Diff line change
Expand Up @@ -1169,6 +1169,15 @@ static inline void zapi_route_set_blackhole(struct zapi_route *api,
SET_FLAG(api->message, ZAPI_MESSAGE_NEXTHOP);
};

static inline void zapi_route_set_nhg_id(struct zapi_route *api,
uint32_t *nhg_id)
{
api->nexthop_num = 0;
api->nhgid = *nhg_id;
if (api->nhgid)
SET_FLAG(api->message, ZAPI_MESSAGE_NHG);
};

extern enum zclient_send_status
zclient_send_mlag_register(struct zclient *client, uint32_t bit_map);
extern enum zclient_send_status
Expand Down
3 changes: 1 addition & 2 deletions sharpd/sharp_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -251,8 +251,7 @@ static bool route_add(const struct prefix *p, vrf_id_t vrf_id, uint8_t instance,

/* Only send via ID if nhgroup has been successfully installed */
if (nhgid && sharp_nhgroup_id_is_installed(nhgid)) {
SET_FLAG(api.message, ZAPI_MESSAGE_NHG);
api.nhgid = nhgid;
zapi_route_set_nhg_id(&api, &nhgid);
} else {
for (ALL_NEXTHOPS_PTR(nhg, nh)) {
/* Check if we set a VNI label */
Expand Down

0 comments on commit d8477d4

Please sign in to comment.