forked from Mirror/frr
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:
parent
237ebf8d45
commit
d8477d4bb5
|
@ -1248,9 +1248,7 @@ static void bgp_zebra_announce_parse_nexthop(
|
||||||
/* EVPN MAC-IP routes are installed with a L3 NHG id */
|
/* EVPN MAC-IP routes are installed with a L3 NHG id */
|
||||||
if (nhg_id && bgp_evpn_path_es_use_nhg(bgp, info, nhg_id)) {
|
if (nhg_id && bgp_evpn_path_es_use_nhg(bgp, info, nhg_id)) {
|
||||||
mpinfo = NULL;
|
mpinfo = NULL;
|
||||||
api->nhgid = *nhg_id;
|
zapi_route_set_nhg_id(api, nhg_id);
|
||||||
if (*nhg_id)
|
|
||||||
SET_FLAG(api->message, ZAPI_MESSAGE_NHG);
|
|
||||||
} else {
|
} else {
|
||||||
mpinfo = info;
|
mpinfo = info;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1169,6 +1169,15 @@ static inline void zapi_route_set_blackhole(struct zapi_route *api,
|
||||||
SET_FLAG(api->message, ZAPI_MESSAGE_NEXTHOP);
|
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
|
extern enum zclient_send_status
|
||||||
zclient_send_mlag_register(struct zclient *client, uint32_t bit_map);
|
zclient_send_mlag_register(struct zclient *client, uint32_t bit_map);
|
||||||
extern enum zclient_send_status
|
extern enum zclient_send_status
|
||||||
|
|
|
@ -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 */
|
/* Only send via ID if nhgroup has been successfully installed */
|
||||||
if (nhgid && sharp_nhgroup_id_is_installed(nhgid)) {
|
if (nhgid && sharp_nhgroup_id_is_installed(nhgid)) {
|
||||||
SET_FLAG(api.message, ZAPI_MESSAGE_NHG);
|
zapi_route_set_nhg_id(&api, &nhgid);
|
||||||
api.nhgid = nhgid;
|
|
||||||
} else {
|
} else {
|
||||||
for (ALL_NEXTHOPS_PTR(nhg, nh)) {
|
for (ALL_NEXTHOPS_PTR(nhg, nh)) {
|
||||||
/* Check if we set a VNI label */
|
/* Check if we set a VNI label */
|
||||||
|
|
Loading…
Reference in a new issue