mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-11-02 16:25:18 +00:00
isisd: Add advertise-high-metrics CLI/YANG support, modify show output
New config and show functionality:
r1# conf
r1(config)# router isis 1
r1(config-router)#
advertise-high-metrics Advertise high metric value on all interfaces
area-password Configure the authentication password for an area
...
r1(config-router)# advertise-high-metrics
r1(config-router)# end
r1# show isis summary
...
Area 1:
Net: 49.0001.1720.1700.0002.00
TX counters per PDU type:
L2 IIH: 1
P2P IIH: 36
LSP RXMT: 0
RX counters per PDU type:
Advertise high metrics: Enabled
Level-2:
...
r1# conf
r1(config)# router isis 1
r1(config-router)# no advertise-high-metrics
r1(config-router)# end
r1# show isis summary
...
Area 1:
Net: 49.0001.1720.1700.0002.00
TX counters per PDU type:
L2 IIH: 1
P2P IIH: 45
LSP RXMT: 0
RX counters per PDU type:
Advertise high metrics: Disabled
Level-2:
...
r1#
Signed-off-by: Isabella de Leon <ideleon@microsoft.com>
This commit is contained in:
parent
617d2b71c0
commit
d74f913c5f
@ -439,6 +439,29 @@ void cli_show_isis_overload_on_startup(struct vty *vty,
|
||||
yang_dnode_get_string(dnode, NULL));
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/advertise-high-metrics
|
||||
*/
|
||||
DEFPY_YANG(advertise_high_metrics, advertise_high_metrics_cmd,
|
||||
"[no] advertise-high-metrics",
|
||||
NO_STR "Advertise high metric value on all interfaces\n")
|
||||
{
|
||||
nb_cli_enqueue_change(vty, "./advertise-high-metrics", NB_OP_MODIFY,
|
||||
no ? "false" : "true");
|
||||
|
||||
return nb_cli_apply_changes(vty, NULL);
|
||||
}
|
||||
|
||||
void cli_show_advertise_high_metrics(struct vty *vty,
|
||||
const struct lyd_node *dnode,
|
||||
bool show_defaults)
|
||||
{
|
||||
if (yang_dnode_get_bool(dnode, NULL))
|
||||
vty_out(vty, " advertise-high-metrics\n");
|
||||
else if (show_defaults)
|
||||
vty_out(vty, " no advertise-high-metrics\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/attach-send
|
||||
*/
|
||||
@ -3160,6 +3183,8 @@ void isis_cli_init(void)
|
||||
install_element(ISIS_NODE, &metric_style_cmd);
|
||||
install_element(ISIS_NODE, &no_metric_style_cmd);
|
||||
|
||||
install_element(ISIS_NODE, &advertise_high_metrics_cmd);
|
||||
|
||||
install_element(ISIS_NODE, &area_passwd_cmd);
|
||||
install_element(ISIS_NODE, &domain_passwd_cmd);
|
||||
install_element(ISIS_NODE, &no_area_passwd_cmd);
|
||||
|
||||
@ -81,6 +81,13 @@ const struct frr_yang_module_info frr_isisd_info = {
|
||||
.modify = isis_instance_overload_on_startup_modify,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/advertise-high-metrics",
|
||||
.cbs = {
|
||||
.cli_show = cli_show_advertise_high_metrics,
|
||||
.modify = isis_instance_advertise_high_metrics_modify,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-isisd:isis/instance/metric-style",
|
||||
.cbs = {
|
||||
|
||||
@ -26,6 +26,7 @@ int isis_instance_attached_receive_modify(struct nb_cb_modify_args *args);
|
||||
int isis_instance_attached_modify(struct nb_cb_modify_args *args);
|
||||
int isis_instance_overload_enabled_modify(struct nb_cb_modify_args *args);
|
||||
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_lsp_mtu_modify(struct nb_cb_modify_args *args);
|
||||
@ -464,6 +465,9 @@ void cli_show_isis_overload(struct vty *vty, const struct lyd_node *dnode,
|
||||
void cli_show_isis_overload_on_startup(struct vty *vty,
|
||||
const struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_advertise_high_metrics(struct vty *vty,
|
||||
const struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_metric_style(struct vty *vty, const struct lyd_node *dnode,
|
||||
bool show_defaults);
|
||||
void cli_show_isis_area_pwd(struct vty *vty, const struct lyd_node *dnode,
|
||||
|
||||
@ -360,6 +360,24 @@ int isis_instance_overload_on_startup_modify(struct nb_cb_modify_args *args)
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/advertise-high-metrics
|
||||
*/
|
||||
int isis_instance_advertise_high_metrics_modify(struct nb_cb_modify_args *args)
|
||||
{
|
||||
struct isis_area *area;
|
||||
bool advertise_high_metrics;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
advertise_high_metrics = yang_dnode_get_bool(args->dnode, NULL);
|
||||
area = nb_running_get_entry(args->dnode, NULL, true);
|
||||
isis_area_advertise_high_metrics_set(area, advertise_high_metrics);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-isisd:isis/instance/metric-style
|
||||
*/
|
||||
|
||||
@ -2503,6 +2503,9 @@ static void common_isis_summary_vty(struct vty *vty, struct isis *isis)
|
||||
vty_out(vty, " RX counters per PDU type:\n");
|
||||
pdu_counter_print(vty, " ", area->pdu_rx_counters);
|
||||
|
||||
vty_out(vty, " Advertise high metrics: %s\n",
|
||||
area->advertise_high_metrics ? "Enabled" : "Disabled");
|
||||
|
||||
for (level = ISIS_LEVEL1; level <= ISIS_LEVELS; level++) {
|
||||
if ((area->is_type & level) == 0)
|
||||
continue;
|
||||
@ -3247,6 +3250,12 @@ void config_end_lsp_generate(struct isis_area *area)
|
||||
}
|
||||
}
|
||||
|
||||
void isis_area_advertise_high_metrics_set(struct isis_area *area,
|
||||
bool advertise_high_metrics)
|
||||
{
|
||||
/* TODO */
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns the path of the file (non-volatile memory) that contains restart
|
||||
* information.
|
||||
|
||||
@ -175,6 +175,8 @@ struct isis_area {
|
||||
uint32_t overload_on_startup_time;
|
||||
/* advertise prefixes of passive interfaces only? */
|
||||
bool advertise_passive_only;
|
||||
/* Are we advertising high metrics? */
|
||||
bool advertise_high_metrics;
|
||||
/* L1/L2 router identifier for inter-area traffic */
|
||||
char attached_bit_send;
|
||||
char attached_bit_rcv_ignore;
|
||||
@ -289,6 +291,8 @@ void isis_area_switchover_routes(struct isis_area *area, int family,
|
||||
void isis_area_overload_bit_set(struct isis_area *area, bool overload_bit);
|
||||
void isis_area_overload_on_startup_set(struct isis_area *area,
|
||||
uint32_t startup_time);
|
||||
void isis_area_advertise_high_metrics_set(struct isis_area *area,
|
||||
bool advertise_high_metrics);
|
||||
void isis_area_attached_bit_send_set(struct isis_area *area, bool attached_bit);
|
||||
void isis_area_attached_bit_receive_set(struct isis_area *area,
|
||||
bool attached_bit);
|
||||
|
||||
@ -1169,6 +1169,13 @@ module frr-isisd {
|
||||
"Define the style of TLVs metric supported.";
|
||||
}
|
||||
|
||||
leaf advertise-high-metrics {
|
||||
type boolean;
|
||||
default "false";
|
||||
description
|
||||
"Advertise high metric value on all interfaces.";
|
||||
}
|
||||
|
||||
leaf purge-originator {
|
||||
type boolean;
|
||||
default "false";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user