vty_out(vty, " purge-originator\n");
}
+/*
+ * XPath: /frr-isisd:isis/instance/admin-group-send-zero
+ */
+DEFPY_YANG(isis_admin_group_send_zero, isis_admin_group_send_zero_cmd,
+ "[no] admin-group-send-zero",
+ NO_STR
+ "Allow sending the default admin-group value of 0x00000000.\n")
+{
+ nb_cli_enqueue_change(vty, "./admin-group-send-zero", NB_OP_MODIFY,
+ no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, NULL);
+}
+
+void cli_show_isis_admin_group_send_zero(struct vty *vty,
+ const struct lyd_node *dnode,
+ bool show_defaults)
+{
+ if (!yang_dnode_get_bool(dnode, NULL))
+ vty_out(vty, " no");
+ vty_out(vty, " admin-group-send-zero\n");
+}
+
+
+/*
+ * XPath: /frr-isisd:isis/instance/asla-legacy-flag
+ */
+DEFPY_HIDDEN(isis_asla_legacy_flag, isis_asla_legacy_flag_cmd,
+ "[no] asla-legacy-flag",
+ NO_STR "Set the legacy flag (aka. L-FLAG) in the ASLA Sub-TLV.\n")
+{
+ nb_cli_enqueue_change(vty, "./asla-legacy-flag", NB_OP_MODIFY,
+ no ? "false" : "true");
+
+ return nb_cli_apply_changes(vty, NULL);
+}
+
+void cli_show_isis_asla_legacy_flag(struct vty *vty,
+ const struct lyd_node *dnode,
+ bool show_defaults)
+{
+ if (!yang_dnode_get_bool(dnode, NULL))
+ vty_out(vty, " no");
+ vty_out(vty, " asla-legacy-flag\n");
+}
+
/*
* XPath: /frr-isisd:isis/instance/mpls-te
*/
yang_dnode_get_string(dnode, NULL));
}
+DEFPY_YANG_NOSH(flex_algo, flex_algo_cmd, "flex-algo (128-255)$algorithm",
+ "Flexible Algorithm\n"
+ "Flexible Algorithm Number\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(no_flex_algo, no_flex_algo_cmd, "no flex-algo (128-255)$algorithm",
+ NO_STR
+ "Flexible Algorithm\n"
+ "Flexible Algorithm Number\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(advertise_definition, advertise_definition_cmd,
+ "[no] advertise-definition",
+ NO_STR "Advertise Local Flexible Algorithm\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(affinity_include_any, affinity_include_any_cmd,
+ "[no] affinity include-any NAME...",
+ NO_STR
+ "Affinity configuration\n"
+ "Any Include with\n"
+ "Include NAME list\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(affinity_include_all, affinity_include_all_cmd,
+ "[no] affinity include-all NAME...",
+ NO_STR
+ "Affinity configuration\n"
+ "All Include with\n"
+ "Include NAME list\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(affinity_exclude_any, affinity_exclude_any_cmd,
+ "[no] affinity exclude-any NAME...",
+ NO_STR
+ "Affinity configuration\n"
+ "Any Exclude with\n"
+ "Exclude NAME list\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(prefix_metric, prefix_metric_cmd, "[no] prefix-metric",
+ NO_STR "Use Flex-Algo Prefix Metric\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(metric_type, metric_type_cmd,
+ "[no] metric-type [igp$igp|te$te|delay$delay]",
+ NO_STR
+ "Metric-type used by flex-algo calculation\n"
+ "Use IGP metric (default)\n"
+ "Use Delay as metric\n"
+ "Use Traffic Engineering metric\n")
+{
+ return CMD_SUCCESS;
+}
+
+DEFPY_YANG(priority, priority_cmd, "[no] priority (0-255)$priority",
+ NO_STR
+ "Flex-Algo definition priority\n"
+ "Priority value\n")
+{
+ return CMD_SUCCESS;
+}
+
+void cli_show_isis_flex_algo(struct vty *vty, const struct lyd_node *dnode,
+ bool show_defaults)
+{
+}
+
+void cli_show_isis_flex_algo_end(struct vty *vty, const struct lyd_node *dnode)
+{
+}
+
void isis_cli_init(void)
{
install_element(CONFIG_NODE, &router_isis_cmd);
install_element(ISIS_NODE, &area_purge_originator_cmd);
+ install_element(ISIS_NODE, &isis_admin_group_send_zero_cmd);
+ install_element(ISIS_NODE, &isis_asla_legacy_flag_cmd);
+
install_element(ISIS_NODE, &isis_mpls_te_on_cmd);
install_element(ISIS_NODE, &no_isis_mpls_te_on_cmd);
install_element(ISIS_NODE, &isis_mpls_te_router_addr_cmd);
install_element(INTERFACE_NODE, &isis_mpls_if_ldp_sync_cmd);
install_element(INTERFACE_NODE, &isis_mpls_if_ldp_sync_holddown_cmd);
install_element(INTERFACE_NODE, &no_isis_mpls_if_ldp_sync_holddown_cmd);
+
+ install_element(ISIS_NODE, &flex_algo_cmd);
+ install_element(ISIS_NODE, &no_flex_algo_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &advertise_definition_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &affinity_include_any_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &affinity_include_all_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &affinity_exclude_any_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &prefix_metric_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &metric_type_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &priority_cmd);
}
#endif /* ifndef FABRICD */
.modify = isis_instance_purge_originator_modify,
},
},
+ {
+ .xpath = "/frr-isisd:isis/instance/admin-group-send-zero",
+ .cbs = {
+ .cli_show = cli_show_isis_admin_group_send_zero,
+ .modify = isis_instance_admin_group_send_zero_modify,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/asla-legacy-flag",
+ .cbs = {
+ .cli_show = cli_show_isis_asla_legacy_flag,
+ .modify = isis_instance_asla_legacy_flag_modify,
+ },
+ },
{
.xpath = "/frr-isisd:isis/instance/lsp/mtu",
.cbs = {
.modify = isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify,
},
},
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo",
+ .cbs = {
+ .cli_show = cli_show_isis_flex_algo,
+ .cli_show_end = cli_show_isis_flex_algo_end,
+ .create = isis_instance_flex_algo_create,
+ .destroy = isis_instance_flex_algo_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/advertise-definition",
+ .cbs = {
+ .modify = isis_instance_flex_algo_advertise_definition_modify,
+ .destroy = isis_instance_flex_algo_advertise_definition_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-alls/affinity-include-all",
+ .cbs = {
+ .create = isis_instance_flex_algo_affinity_include_all_create,
+ .destroy = isis_instance_flex_algo_affinity_include_all_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-anies/affinity-include-any",
+ .cbs = {
+ .create = isis_instance_flex_algo_affinity_include_any_create,
+ .destroy = isis_instance_flex_algo_affinity_include_any_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/affinity-exclude-anies/affinity-exclude-any",
+ .cbs = {
+ .create = isis_instance_flex_algo_affinity_exclude_any_create,
+ .destroy = isis_instance_flex_algo_affinity_exclude_any_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/prefix-metric",
+ .cbs = {
+ .create = isis_instance_flex_algo_prefix_metric_create,
+ .destroy = isis_instance_flex_algo_prefix_metric_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/metric-type",
+ .cbs = {
+ .modify = isis_instance_flex_algo_metric_type_modify,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-sr-mpls",
+ .cbs = {
+ .create = isis_instance_flex_algo_dplane_sr_mpls_create,
+ .destroy = isis_instance_flex_algo_dplane_sr_mpls_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-srv6",
+ .cbs = {
+ .create = isis_instance_flex_algo_dplane_srv6_create,
+ .destroy = isis_instance_flex_algo_dplane_srv6_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/dplane-ip",
+ .cbs = {
+ .create = isis_instance_flex_algo_dplane_ip_create,
+ .destroy = isis_instance_flex_algo_dplane_ip_destroy,
+ },
+ },
+ {
+ .xpath = "/frr-isisd:isis/instance/flex-algos/flex-algo/priority",
+ .cbs = {
+ .modify = isis_instance_flex_algo_priority_modify,
+ .destroy = isis_instance_flex_algo_priority_destroy,
+ },
+ },
{
.xpath = "/frr-isisd:isis/instance/mpls/ldp-sync",
.cbs = {
int isis_instance_advertise_high_metrics_modify(struct nb_cb_modify_args *args);
int isis_instance_metric_style_modify(struct nb_cb_modify_args *args);
int isis_instance_purge_originator_modify(struct nb_cb_modify_args *args);
+int isis_instance_admin_group_send_zero_modify(struct nb_cb_modify_args *args);
+int isis_instance_asla_legacy_flag_modify(struct nb_cb_modify_args *args);
int isis_instance_lsp_mtu_modify(struct nb_cb_modify_args *args);
int isis_instance_advertise_passive_only_modify(struct nb_cb_modify_args *args);
int isis_instance_lsp_refresh_interval_level_1_modify(
struct nb_cb_modify_args *args);
int isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify(
struct nb_cb_modify_args *args);
+int isis_instance_flex_algo_create(struct nb_cb_create_args *args);
+int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_advertise_definition_modify(
+ struct nb_cb_modify_args *args);
+int isis_instance_flex_algo_advertise_definition_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_affinity_include_any_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_affinity_include_any_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_affinity_include_all_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_affinity_include_all_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_affinity_exclude_any_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_affinity_exclude_any_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_prefix_metric_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_prefix_metric_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_dplane_sr_mpls_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_dplane_sr_mpls_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_dplane_srv6_create(struct nb_cb_create_args *args);
+int isis_instance_flex_algo_dplane_srv6_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_dplane_ip_create(struct nb_cb_create_args *args);
+int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args);
+int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args);
+int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_frr_disable_modify(struct nb_cb_modify_args *args);
+int isis_instance_flex_algo_frr_disable_destroy(
+ struct nb_cb_destroy_args *args);
+int isis_instance_flex_algo_affinity_mapping_create(
+ struct nb_cb_create_args *args);
+int isis_instance_flex_algo_affinity_mapping_destroy(
+ struct nb_cb_destroy_args *args);
+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_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);
bool show_defaults);
void cli_show_isis_mpls_te(struct vty *vty, const struct lyd_node *dnode,
bool show_defaults);
+void cli_show_isis_admin_group_send_zero(struct vty *vty,
+ const struct lyd_node *dnode,
+ bool show_defaults);
+void cli_show_isis_asla_legacy_flag(struct vty *vty,
+ const struct lyd_node *dnode,
+ bool show_defaults);
void cli_show_isis_mpls_te_router_addr(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_mpls_if_ldp_sync_holddown(struct vty *vty,
const struct lyd_node *dnode,
bool show_defaults);
+void cli_show_isis_flex_algo(struct vty *vty, const struct lyd_node *dnode,
+ bool show_defaults);
+void cli_show_isis_flex_algo_end(struct vty *vty, const struct lyd_node *dnode);
/* Notifications. */
void isis_notif_db_overload(const struct isis_area *area, bool overload);
return NB_OK;
}
+
+/*
+ * XPath: /frr-isisd:isis/instance/admin-group-send-zero
+ */
+int isis_instance_admin_group_send_zero_modify(struct nb_cb_modify_args *args)
+{
+ return NB_OK;
+}
+
+
+/*
+ * XPath: /frr-isisd:isis/instance/asla-legacy-flag
+ */
+int isis_instance_asla_legacy_flag_modify(struct nb_cb_modify_args *args)
+{
+ return NB_OK;
+}
+
/*
* XPath: /frr-isisd:isis/instance/lsp/mtu
*/
return NB_OK;
}
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo
+ */
+int isis_instance_flex_algo_create(struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_destroy(struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/advertise-definition
+ */
+int isis_instance_flex_algo_advertise_definition_modify(
+ struct nb_cb_modify_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_advertise_definition_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath:
+ * /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-anies/affinity-include-any
+ */
+int isis_instance_flex_algo_affinity_include_any_create(
+ struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_affinity_include_any_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath:
+ * /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-include-alls/affinity-include-all
+ */
+int isis_instance_flex_algo_affinity_include_all_create(
+ struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_affinity_include_all_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath:
+ * /frr-isisd:isis/instance/flex-algos/flex-algo/affinity-exclude-anies/affinity-exclude-any
+ */
+int isis_instance_flex_algo_affinity_exclude_any_create(
+ struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_affinity_exclude_any_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ /* TODO: implement me. */
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/prefix-metric
+ */
+
+int isis_instance_flex_algo_prefix_metric_create(struct nb_cb_create_args *args)
+{
+ /* TODO: implement me. */
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_prefix_metric_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ /* TODO: implement me. */
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-sr-mpls
+ */
+
+int isis_instance_flex_algo_dplane_sr_mpls_create(
+ struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_dplane_sr_mpls_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-srv6
+ */
+
+int isis_instance_flex_algo_dplane_srv6_create(struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_dplane_srv6_destroy(struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/dplane-ip
+ */
+
+int isis_instance_flex_algo_dplane_ip_create(struct nb_cb_create_args *args)
+{
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_dplane_ip_destroy(struct nb_cb_destroy_args *args)
+{
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/metric-type
+ */
+
+int isis_instance_flex_algo_metric_type_modify(struct nb_cb_modify_args *args)
+{
+
+ return NB_OK;
+}
+
+/*
+ * XPath: /frr-isisd:isis/instance/flex-algos/flex-algo/priority
+ */
+
+int isis_instance_flex_algo_priority_modify(struct nb_cb_modify_args *args)
+{
+ /* TODO: implement me. */
+ return NB_OK;
+}
+
+int isis_instance_flex_algo_priority_destroy(struct nb_cb_destroy_args *args)
+{
+ /* TODO: implement me. */
+ return NB_OK;
+}
+
/*
* XPath: /frr-isisd:isis/instance/mpls/ldp-sync
*/
.prompt = "%s(config-router)# ",
.config_write = isis_config_write,
};
+
+struct cmd_node isis_flex_algo_node = {
+ .name = "isis-flex-algo",
+ .node = ISIS_FLEX_ALGO_NODE,
+ .parent_node = ISIS_NODE,
+ .prompt = "%s(config-router-flex-algo)# ",
+};
#endif /* ifdef FABRICD */
void isis_init(void)
install_element(ROUTER_NODE, &log_adj_changes_cmd);
install_element(ROUTER_NODE, &no_log_adj_changes_cmd);
#endif /* ifdef FABRICD */
+#ifndef FABRICD
+ install_node(&isis_flex_algo_node);
+ install_default(ISIS_FLEX_ALGO_NODE);
+#endif /* ifdnef FABRICD */
spf_backoff_cmd_init();
}
LDP_L2VPN_NODE, /* LDP L2VPN node */
LDP_PSEUDOWIRE_NODE, /* LDP Pseudowire node */
ISIS_NODE, /* ISIS protocol mode */
+ ISIS_FLEX_ALGO_NODE, /* ISIS Flex Algo mode */
ACCESS_NODE, /* Access list node. */
PREFIX_NODE, /* Prefix list node. */
ACCESS_IPV6_NODE, /* Access list node. */
.parent_node = CONFIG_NODE,
.prompt = "%s(config-router)# ",
};
+
+static struct cmd_node isis_flex_algo_node = {
+ .name = "isis-flex-algo",
+ .node = ISIS_FLEX_ALGO_NODE,
+ .parent_node = ISIS_NODE,
+ .prompt = "%s(config-router-flex-algo)# ",
+};
#endif /* HAVE_ISISD */
#ifdef HAVE_FABRICD
vty->node = ISIS_NODE;
return CMD_SUCCESS;
}
+
+DEFUNSH(VTYSH_ISISD, isis_flex_algo, isis_flex_algo_cmd, "flex-algo (128-255)",
+ "Flexible Algorithm\n"
+ "Flexible Algorithm Number\n")
+{
+ vty->node = ISIS_FLEX_ALGO_NODE;
+ return CMD_SUCCESS;
+}
#endif /* HAVE_ISISD */
#ifdef HAVE_FABRICD
{
return vtysh_exit_isisd(self, vty, argc, argv);
}
+
+DEFUNSH(VTYSH_ISISD, vtysh_exit_isis_flex_algo, vtysh_exit_isis_flex_algo_cmd,
+ "exit", "Exit current mode and down to previous mode\n")
+{
+ return vtysh_exit(vty);
+}
+
+DEFUNSH(VTYSH_ISISD, vtysh_quit_isis_flex_algo, vtysh_quit_isis_flex_algo_cmd,
+ "quit", "Exit current mode and down to previous mode\n")
+{
+ return vtysh_exit_isisd(self, vty, argc, argv);
+}
#endif /* HAVE_ISISD */
#if HAVE_BFDD > 0
install_element(ISIS_NODE, &vtysh_exit_isisd_cmd);
install_element(ISIS_NODE, &vtysh_quit_isisd_cmd);
install_element(ISIS_NODE, &vtysh_end_all_cmd);
+
+ install_node(&isis_flex_algo_node);
+ install_element(ISIS_NODE, &isis_flex_algo_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &vtysh_exit_isis_flex_algo_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &vtysh_quit_isis_flex_algo_cmd);
+ install_element(ISIS_FLEX_ALGO_NODE, &vtysh_end_all_cmd);
#endif /* HAVE_ISISD */
/* fabricd */
"Advertise prefixes of passive interfaces only";
}
+ leaf admin-group-send-zero {
+ type boolean;
+ default "false";
+ description
+ "Allow sending the default admin-group value of 0x00000000";
+ }
+
+ leaf asla-legacy-flag {
+ type boolean;
+ default "false";
+ description
+ "Set the legacy flag (aka. L-FLAG) in the ASLA Sub-TLV.";
+ }
+
container lsp {
description
"Configuration of Link-State Packets (LSP) parameters";
}
}
+ container flex-algos {
+ description
+ "Flex-Algo Table";
+ list flex-algo {
+ key "flex-algo";
+ description
+ "Configuration for an IS-IS Flex-Algo";
+ leaf advertise-definition {
+ type boolean;
+ description
+ "If TRUE, Flex-Algo definition is advertised";
+ }
+ container affinity-include-alls {
+ description
+ "Set the include-all affinity";
+ leaf-list affinity-include-all {
+ type string;
+ max-elements "256";
+ description
+ "Array of Attribute Names";
+ }
+ }
+ container affinity-include-anies {
+ description
+ "Set the include-any affinity";
+ leaf-list affinity-include-any {
+ type string;
+ max-elements "256";
+ description
+ "Array of Attribute Names";
+ }
+ }
+ container affinity-exclude-anies {
+ description
+ "Set the exclude-any affinity";
+ leaf-list affinity-exclude-any {
+ type string;
+ max-elements "256";
+ description
+ "Array of Attribute Names";
+ }
+ }
+ leaf prefix-metric {
+ type empty;
+ description
+ "Use Flex-algo Prefix Metric";
+ }
+ leaf metric-type {
+ default "igp";
+ description
+ "Set the Flex-Algo metric-type";
+ type enumeration {
+ enum "igp" {
+ value 0;
+ description
+ "IGP Metric";
+ }
+ enum "min-uni-link-delay" {
+ value 1;
+ description
+ "RFC 8570 Sec 4.2 Min Unidirectional Link Delay";
+ }
+ enum "te-default" {
+ value 2;
+ description
+ "RFC 5305 Sec 3.7 Traffic Engineering Default Metric";
+ }
+ }
+ }
+ leaf priority {
+ type uint32 {
+ range "0..255";
+ }
+ description
+ "Set the Flex-Algo priority";
+ }
+ leaf dplane-sr-mpls {
+ type empty;
+ description
+ "Advertise and participate in the Flex-Algo Segment-Routing MPLS data-plane";
+ }
+ leaf dplane-srv6 {
+ type empty;
+ description
+ "Advertise and participate in the Flex-Algo Segment-Routing SRv6 data-plane";
+ }
+ leaf dplane-ip {
+ type empty;
+ description
+ "Advertise and participate in the Flex-Algo IP data-plane";
+ }
+ leaf flex-algo {
+ type uint32 {
+ range "128..255";
+ }
+ description
+ "Flex-Algo";
+ }
+ }
+ }
+
container segment-routing {
description
"Segment Routing global configuration.";