bgpd, lib: add zapi_route_set_nhg_id() support

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 <philippe.guibert@6wind.com>
This commit is contained in:
Philippe Guibert 2023-12-12 21:04:49 +01:00
parent 237ebf8d45
commit d8477d4bb5
3 changed files with 11 additions and 5 deletions

View file

@ -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;
}

View file

@ -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

View file

@ -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 */