Merge pull request #18178 from cscarpitta/fix/isis_request_srv6_locator

isisd: Request SRv6 locator after zebra connection
This commit is contained in:
Donald Sharp 2025-02-15 09:39:04 -05:00 committed by GitHub
commit b2c960a19d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 24 additions and 0 deletions

View File

@ -657,6 +657,27 @@ int isis_srv6_ifp_up_notify(struct interface *ifp)
return 0;
}
/**
* Request SRv6 locator info from the SID Manager for all IS-IS areas where SRv6
* is enabled and a locator has been configured.
* This function is called as soon as the connection with Zebra is established
* to get information about all configured locators.
*/
void isis_srv6_locators_request(void)
{
struct isis *isis = isis_lookup_by_vrfid(VRF_DEFAULT);
struct listnode *node;
struct isis_area *area;
if (!isis)
return;
for (ALL_LIST_ELEMENTS_RO(isis->area_list, node, area))
if (area->srv6db.config.enabled &&
area->srv6db.config.srv6_locator_name[0] != '\0' && !area->srv6db.srv6_locator)
isis_zebra_srv6_manager_get_locator(area->srv6db.config.srv6_locator_name);
}
/**
* IS-IS SRv6 initialization for given area.
*

View File

@ -155,6 +155,8 @@ isis_srv6_sid_alloc(struct isis_area *area, struct srv6_locator *locator,
struct in6_addr *sid_value);
extern void isis_srv6_sid_free(struct isis_srv6_sid *sid);
void isis_srv6_locators_request(void);
extern void isis_srv6_area_init(struct isis_area *area);
extern void isis_srv6_area_term(struct isis_area *area);

View File

@ -805,6 +805,7 @@ static void isis_zebra_connected(struct zclient *zclient)
zclient_register_opaque(zclient, LDP_IGP_SYNC_IF_STATE_UPDATE);
zclient_register_opaque(zclient, LDP_IGP_SYNC_ANNOUNCE_UPDATE);
bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, VRF_DEFAULT);
isis_srv6_locators_request();
}
/**