summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_nb.c6
-rw-r--r--isisd/isis_nb.h2
-rw-r--r--isisd/isis_nb_config.c31
3 files changed, 39 insertions, 0 deletions
diff --git a/isisd/isis_nb.c b/isisd/isis_nb.c
index c81412d24a..dd0b79b95b 100644
--- a/isisd/isis_nb.c
+++ b/isisd/isis_nb.c
@@ -861,6 +861,12 @@ const struct frr_yang_module_info frr_isisd_info = {
},
},
{
+ .xpath = "/frr-isisd:isis/instance/segment-routing-srv6/enabled",
+ .cbs = {
+ .modify = isis_instance_segment_routing_srv6_enabled_modify,
+ },
+ },
+ {
.xpath = "/frr-isisd:isis/instance/mpls/ldp-sync",
.cbs = {
.cli_show = cli_show_isis_mpls_ldp_sync,
diff --git a/isisd/isis_nb.h b/isisd/isis_nb.h
index 3b8ddca4f8..1cc4a5ddb4 100644
--- a/isisd/isis_nb.h
+++ b/isisd/isis_nb.h
@@ -322,6 +322,8 @@ int isis_instance_flex_algo_affinity_mapping_value_modify(
struct nb_cb_modify_args *args);
int isis_instance_flex_algo_affinity_mapping_value_destroy(
struct nb_cb_destroy_args *args);
+int isis_instance_segment_routing_srv6_enabled_modify(
+ struct nb_cb_modify_args *args);
int isis_instance_mpls_ldp_sync_destroy(struct nb_cb_destroy_args *args);
int isis_instance_mpls_ldp_sync_create(struct nb_cb_create_args *args);
int isis_instance_mpls_ldp_sync_holddown_modify(struct nb_cb_modify_args *args);
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c
index a3d8896e4f..3a56c78de7 100644
--- a/isisd/isis_nb_config.c
+++ b/isisd/isis_nb_config.c
@@ -3447,6 +3447,37 @@ int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args)
}
/*
+ * XPath: /frr-isisd:isis/instance/segment-routing-srv6/enabled
+ */
+int isis_instance_segment_routing_srv6_enabled_modify(
+ struct nb_cb_modify_args *args)
+{
+ struct isis_area *area;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ area = nb_running_get_entry(args->dnode, NULL, true);
+ area->srv6db.config.enabled = yang_dnode_get_bool(args->dnode, NULL);
+
+ if (area->srv6db.config.enabled) {
+ if (IS_DEBUG_EVENTS)
+ zlog_debug(
+ "Segment Routing over IPv6 (SRv6): OFF -> ON");
+ } else {
+ if (IS_DEBUG_EVENTS)
+ zlog_debug(
+ "Segment Routing over IPv6 (SRv6): ON -> OFF");
+ }
+
+ /* Regenerate LSPs to advertise SRv6 capabilities or signal that the
+ * node is no longer SRv6-capable. */
+ lsp_regenerate_schedule(area, area->is_type, 0);
+
+ return NB_OK;
+}
+
+/*
* XPath: /frr-isisd:isis/instance/mpls/ldp-sync
*/
int isis_instance_mpls_ldp_sync_create(struct nb_cb_create_args *args)