mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-04-28 11:50:21 +00:00
lib,vtysh,isisd,yang: algo cli/yang/callbacks
Define the IS-IS flex-algo structure in yang, the CLI configuration commands and the skeletons of frontend and backend functions that are called by the CLI code. Signed-off-by: Hiroki Shirokura <hiroki.shirokura@linecorp.com> Signed-off-by: Eric Kinzie <ekinzie@labn.net> Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
This commit is contained in:
parent
735fb37db1
commit
46fb37cf67
145
isisd/isis_cli.c
145
isisd/isis_cli.c
@ -1126,6 +1126,52 @@ void cli_show_isis_purge_origin(struct vty *vty, const struct lyd_node *dnode,
|
||||
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
|
||||
*/
|
||||
@ -3298,6 +3344,92 @@ void cli_show_isis_mpls_if_ldp_sync_holddown(struct vty *vty,
|
||||
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);
|
||||
@ -3356,6 +3488,9 @@ void isis_cli_init(void)
|
||||
|
||||
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);
|
||||
@ -3439,6 +3574,16 @@ void isis_cli_init(void)
|
||||
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 */
|
||||
|
@ -102,6 +102,20 @@ const struct frr_yang_module_info frr_isisd_info = {
|
||||
.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 = {
|
||||
@ -722,6 +736,84 @@ const struct frr_yang_module_info frr_isisd_info = {
|
||||
.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 = {
|
||||
|
@ -29,6 +29,8 @@ int isis_instance_overload_on_startup_modify(struct nb_cb_modify_args *args);
|
||||
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(
|
||||
@ -265,6 +267,51 @@ int isis_instance_segment_routing_algorithm_prefix_sid_last_hop_behavior_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);
|
||||
@ -511,6 +558,12 @@ void cli_show_isis_purge_origin(struct vty *vty, const struct lyd_node *dnode,
|
||||
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);
|
||||
@ -642,6 +695,9 @@ void cli_show_isis_mpls_if_ldp_sync(struct vty *vty,
|
||||
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);
|
||||
|
@ -416,6 +416,24 @@ int isis_instance_purge_originator_modify(struct nb_cb_modify_args *args)
|
||||
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
|
||||
*/
|
||||
@ -2674,6 +2692,170 @@ int isis_instance_segment_routing_algorithm_prefix_sid_n_flag_clear_modify(
|
||||
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
|
||||
*/
|
||||
|
@ -3771,6 +3771,13 @@ struct cmd_node router_node = {
|
||||
.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)
|
||||
@ -3880,6 +3887,10 @@ 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();
|
||||
}
|
||||
|
@ -129,6 +129,7 @@ enum node_type {
|
||||
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. */
|
||||
|
@ -1175,6 +1175,13 @@ static struct cmd_node isis_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
|
||||
@ -2095,6 +2102,14 @@ DEFUNSH(VTYSH_ISISD, router_isis, router_isis_cmd,
|
||||
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
|
||||
@ -2578,6 +2593,18 @@ DEFUNSH(VTYSH_ISISD, vtysh_quit_isisd, vtysh_quit_isisd_cmd, "quit",
|
||||
{
|
||||
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
|
||||
@ -4702,6 +4729,12 @@ void vtysh_init_vty(void)
|
||||
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 */
|
||||
|
@ -1212,6 +1212,20 @@ module frr-isisd {
|
||||
"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";
|
||||
@ -1623,6 +1637,107 @@ module frr-isisd {
|
||||
}
|
||||
}
|
||||
|
||||
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.";
|
||||
|
Loading…
Reference in New Issue
Block a user