summaryrefslogtreecommitdiff
path: root/isisd/isis_srv6.c
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2025-02-16 18:21:59 +0200
committerGitHub <noreply@github.com>2025-02-16 18:21:59 +0200
commit2f10852e162625b65697d8d63652a0f98f15b21e (patch)
tree4bce4e7b183d14d4466b0f0e97e2060bea8e3726 /isisd/isis_srv6.c
parent9d53f35143a36d7d92bd9271c8b9a9a17a773d4a (diff)
parentcac6b1487974a5bb56cc071ccc428ed870f97131 (diff)
Merge pull request #18180 from FRRouting/mergify/bp/stable/10.2/pr-18178
isisd: Request SRv6 locator after zebra connection (backport #18178)
Diffstat (limited to 'isisd/isis_srv6.c')
-rw-r--r--isisd/isis_srv6.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/isisd/isis_srv6.c b/isisd/isis_srv6.c
index 2348bd043a..8e9c21aa23 100644
--- a/isisd/isis_srv6.c
+++ b/isisd/isis_srv6.c
@@ -658,6 +658,27 @@ int isis_srv6_ifp_up_notify(struct interface *ifp)
}
/**
+ * 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.
*
* @param area IS-IS area