Merge pull request #6166 from volta-networks/fix_isis_lsp_timers

isisd, yang: unified lsp-timers command
This commit is contained in:
Olivier Dugeon 2020-04-08 10:00:03 +02:00 committed by GitHub
commit 63ffd0ea20
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 273 additions and 181 deletions

View File

@ -640,7 +640,8 @@ void cli_show_isis_domain_pwd(struct vty *vty, struct lyd_node *dnode,
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/generation-interval * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/generation-interval
* XPath: /frr-isisd:isis/instance/lsp/timers/level-2/generation-interval
*/ */
DEFPY(lsp_gen_interval, lsp_gen_interval_cmd, DEFPY(lsp_gen_interval, lsp_gen_interval_cmd,
"lsp-gen-interval [level-1|level-2]$level (1-120)$val", "lsp-gen-interval [level-1|level-2]$level (1-120)$val",
@ -650,11 +651,13 @@ DEFPY(lsp_gen_interval, lsp_gen_interval_cmd,
"Minimum interval in seconds\n") "Minimum interval in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/generation-interval/level-1", nb_cli_enqueue_change(
NB_OP_MODIFY, val_str); vty, "./lsp/timers/level-1/generation-interval",
NB_OP_MODIFY, val_str);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/generation-interval/level-2", nb_cli_enqueue_change(
NB_OP_MODIFY, val_str); vty, "./lsp/timers/level-2/generation-interval",
NB_OP_MODIFY, val_str);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
@ -668,31 +671,20 @@ DEFPY(no_lsp_gen_interval, no_lsp_gen_interval_cmd,
"Minimum interval in seconds\n") "Minimum interval in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/generation-interval/level-1", nb_cli_enqueue_change(
NB_OP_MODIFY, NULL); vty, "./lsp/timers/level-1/generation-interval",
NB_OP_MODIFY, NULL);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/generation-interval/level-2", nb_cli_enqueue_change(
NB_OP_MODIFY, NULL); vty, "./lsp/timers/level-2/generation-interval",
NB_OP_MODIFY, NULL);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
void cli_show_isis_lsp_gen_interval(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
const char *l1 = yang_dnode_get_string(dnode, "./level-1");
const char *l2 = yang_dnode_get_string(dnode, "./level-2");
if (strmatch(l1, l2))
vty_out(vty, " lsp-gen-interval %s\n", l1);
else {
vty_out(vty, " lsp-gen-interval level-1 %s\n", l1);
vty_out(vty, " lsp-gen-interval level-2 %s\n", l2);
}
}
/* /*
* XPath: /frr-isisd:isis/instance/lsp/refresh-interval * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/refresh-interval
* XPath: /frr-isisd:isis/instance/lsp/timers/level-2/refresh-interval
*/ */
DEFPY(lsp_refresh_interval, lsp_refresh_interval_cmd, DEFPY(lsp_refresh_interval, lsp_refresh_interval_cmd,
"lsp-refresh-interval [level-1|level-2]$level (1-65235)$val", "lsp-refresh-interval [level-1|level-2]$level (1-65235)$val",
@ -702,10 +694,12 @@ DEFPY(lsp_refresh_interval, lsp_refresh_interval_cmd,
"LSP refresh interval in seconds\n") "LSP refresh interval in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/refresh-interval/level-1", nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/refresh-interval",
NB_OP_MODIFY, val_str); NB_OP_MODIFY, val_str);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/refresh-interval/level-2", nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/refresh-interval",
NB_OP_MODIFY, val_str); NB_OP_MODIFY, val_str);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
@ -720,32 +714,22 @@ DEFPY(no_lsp_refresh_interval, no_lsp_refresh_interval_cmd,
"LSP refresh interval in seconds\n") "LSP refresh interval in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/refresh-interval/level-1", nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/refresh-interval",
NB_OP_MODIFY, NULL); NB_OP_MODIFY, NULL);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/refresh-interval/level-2", nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/refresh-interval",
NB_OP_MODIFY, NULL); NB_OP_MODIFY, NULL);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
void cli_show_isis_lsp_ref_interval(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
const char *l1 = yang_dnode_get_string(dnode, "./level-1");
const char *l2 = yang_dnode_get_string(dnode, "./level-2");
if (strmatch(l1, l2))
vty_out(vty, " lsp-refresh-interval %s\n", l1);
else {
vty_out(vty, " lsp-refresh-interval level-1 %s\n", l1);
vty_out(vty, " lsp-refresh-interval level-2 %s\n", l2);
}
}
/* /*
* XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime
* XPath: /frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime
*/ */
DEFPY(max_lsp_lifetime, max_lsp_lifetime_cmd, DEFPY(max_lsp_lifetime, max_lsp_lifetime_cmd,
"max-lsp-lifetime [level-1|level-2]$level (350-65535)$val", "max-lsp-lifetime [level-1|level-2]$level (350-65535)$val",
"Maximum LSP lifetime\n" "Maximum LSP lifetime\n"
@ -754,10 +738,12 @@ DEFPY(max_lsp_lifetime, max_lsp_lifetime_cmd,
"LSP lifetime in seconds\n") "LSP lifetime in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/maximum-lifetime/level-1", nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/maximum-lifetime",
NB_OP_MODIFY, val_str); NB_OP_MODIFY, val_str);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/maximum-lifetime/level-2", nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/maximum-lifetime",
NB_OP_MODIFY, val_str); NB_OP_MODIFY, val_str);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
@ -772,26 +758,125 @@ DEFPY(no_max_lsp_lifetime, no_max_lsp_lifetime_cmd,
"LSP lifetime in seconds\n") "LSP lifetime in seconds\n")
{ {
if (!level || strmatch(level, "level-1")) if (!level || strmatch(level, "level-1"))
nb_cli_enqueue_change(vty, "./lsp/maximum-lifetime/level-1", nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/maximum-lifetime",
NB_OP_MODIFY, NULL); NB_OP_MODIFY, NULL);
if (!level || strmatch(level, "level-2")) if (!level || strmatch(level, "level-2"))
nb_cli_enqueue_change(vty, "./lsp/maximum-lifetime/level-2", nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/maximum-lifetime",
NB_OP_MODIFY, NULL); NB_OP_MODIFY, NULL);
return nb_cli_apply_changes(vty, NULL); return nb_cli_apply_changes(vty, NULL);
} }
void cli_show_isis_lsp_max_lifetime(struct vty *vty, struct lyd_node *dnode, /* unified LSP timers command
bool show_defaults) * XPath: /frr-isisd:isis/instance/lsp/timers
{ */
const char *l1 = yang_dnode_get_string(dnode, "./level-1");
const char *l2 = yang_dnode_get_string(dnode, "./level-2");
if (strmatch(l1, l2)) DEFPY(lsp_timers, lsp_timers_cmd,
vty_out(vty, " max-lsp-lifetime %s\n", l1); "lsp-timers [level-1|level-2]$level gen-interval (1-120)$gen refresh-interval (1-65235)$refresh max-lifetime (350-65535)$lifetime",
"LSP-related timers\n"
"LSP-related timers for Level 1 only\n"
"LSP-related timers for Level 2 only\n"
"Minimum interval between regenerating same LSP\n"
"Generation interval in seconds\n"
"LSP refresh interval\n"
"LSP refresh interval in seconds\n"
"Maximum LSP lifetime\n"
"Maximum LSP lifetime in seconds\n")
{
if (!level || strmatch(level, "level-1")) {
nb_cli_enqueue_change(
vty, "./lsp/timers/level-1/generation-interval",
NB_OP_MODIFY, gen_str);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/refresh-interval",
NB_OP_MODIFY, refresh_str);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/maximum-lifetime",
NB_OP_MODIFY, lifetime_str);
}
if (!level || strmatch(level, "level-2")) {
nb_cli_enqueue_change(
vty, "./lsp/timers/level-2/generation-interval",
NB_OP_MODIFY, gen_str);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/refresh-interval",
NB_OP_MODIFY, refresh_str);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/maximum-lifetime",
NB_OP_MODIFY, lifetime_str);
}
return nb_cli_apply_changes(vty, NULL);
}
DEFPY(no_lsp_timers, no_lsp_timers_cmd,
"no lsp-timers [level-1|level-2]$level [gen-interval (1-120) refresh-interval (1-65235) max-lifetime (350-65535)]",
NO_STR
"LSP-related timers\n"
"LSP-related timers for Level 1 only\n"
"LSP-related timers for Level 2 only\n"
"Minimum interval between regenerating same LSP\n"
"Generation interval in seconds\n"
"LSP refresh interval\n"
"LSP refresh interval in seconds\n"
"Maximum LSP lifetime\n"
"Maximum LSP lifetime in seconds\n")
{
if (!level || strmatch(level, "level-1")) {
nb_cli_enqueue_change(
vty, "./lsp/timers/level-1/generation-interval",
NB_OP_MODIFY, NULL);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/refresh-interval",
NB_OP_MODIFY, NULL);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-1/maximum-lifetime",
NB_OP_MODIFY, NULL);
}
if (!level || strmatch(level, "level-2")) {
nb_cli_enqueue_change(
vty, "./lsp/timers/level-2/generation-interval",
NB_OP_MODIFY, NULL);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/refresh-interval",
NB_OP_MODIFY, NULL);
nb_cli_enqueue_change(vty,
"./lsp/timers/level-2/maximum-lifetime",
NB_OP_MODIFY, NULL);
}
return nb_cli_apply_changes(vty, NULL);
}
void cli_show_isis_lsp_timers(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
const char *l1_refresh =
yang_dnode_get_string(dnode, "./level-1/refresh-interval");
const char *l2_refresh =
yang_dnode_get_string(dnode, "./level-2/refresh-interval");
const char *l1_lifetime =
yang_dnode_get_string(dnode, "./level-1/maximum-lifetime");
const char *l2_lifetime =
yang_dnode_get_string(dnode, "./level-2/maximum-lifetime");
const char *l1_gen =
yang_dnode_get_string(dnode, "./level-1/generation-interval");
const char *l2_gen =
yang_dnode_get_string(dnode, "./level-2/generation-interval");
if (strmatch(l1_refresh, l2_refresh)
&& strmatch(l1_lifetime, l2_lifetime) && strmatch(l1_gen, l2_gen))
vty_out(vty,
" lsp-timers gen-interval %s refresh-interval %s max-lifetime %s\n",
l1_gen, l1_refresh, l1_lifetime);
else { else {
vty_out(vty, " max-lsp-lifetime level-1 %s\n", l1); vty_out(vty,
vty_out(vty, " max-lsp-lifetime level-2 %s\n", l2); " lsp-timers level-1 gen-interval %s refresh-interval %s max-lifetime %s\n",
l1_gen, l1_refresh, l1_lifetime);
vty_out(vty,
" lsp-timers level-2 gen-interval %s refresh-interval %s max-lifetime %s\n",
l2_gen, l2_refresh, l2_lifetime);
} }
} }
@ -2001,6 +2086,8 @@ void isis_cli_init(void)
install_element(ISIS_NODE, &no_lsp_refresh_interval_cmd); install_element(ISIS_NODE, &no_lsp_refresh_interval_cmd);
install_element(ISIS_NODE, &max_lsp_lifetime_cmd); install_element(ISIS_NODE, &max_lsp_lifetime_cmd);
install_element(ISIS_NODE, &no_max_lsp_lifetime_cmd); install_element(ISIS_NODE, &no_max_lsp_lifetime_cmd);
install_element(ISIS_NODE, &lsp_timers_cmd);
install_element(ISIS_NODE, &no_lsp_timers_cmd);
install_element(ISIS_NODE, &area_lsp_mtu_cmd); install_element(ISIS_NODE, &area_lsp_mtu_cmd);
install_element(ISIS_NODE, &no_area_lsp_mtu_cmd); install_element(ISIS_NODE, &no_area_lsp_mtu_cmd);

View File

@ -95,55 +95,43 @@ const struct frr_yang_module_info frr_isisd_info = {
}, },
}, },
{ {
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval", .xpath = "/frr-isisd:isis/instance/lsp/timers",
.cbs = { .cbs = {
.cli_show = cli_show_isis_lsp_ref_interval, .cli_show = cli_show_isis_lsp_timers,
}, },
}, },
{ {
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval/level-1", .xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/refresh-interval",
.cbs = { .cbs = {
.modify = isis_instance_lsp_refresh_interval_level_1_modify, .modify = isis_instance_lsp_refresh_interval_level_1_modify,
}, },
}, },
{ {
.xpath = "/frr-isisd:isis/instance/lsp/refresh-interval/level-2", .xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime",
.cbs = {
.modify = isis_instance_lsp_refresh_interval_level_2_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime",
.cbs = {
.cli_show = cli_show_isis_lsp_max_lifetime,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1",
.cbs = { .cbs = {
.modify = isis_instance_lsp_maximum_lifetime_level_1_modify, .modify = isis_instance_lsp_maximum_lifetime_level_1_modify,
}, },
}, },
{ {
.xpath = "/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2", .xpath = "/frr-isisd:isis/instance/lsp/timers/level-1/generation-interval",
.cbs = {
.modify = isis_instance_lsp_maximum_lifetime_level_2_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval",
.cbs = {
.cli_show = cli_show_isis_lsp_gen_interval,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval/level-1",
.cbs = { .cbs = {
.modify = isis_instance_lsp_generation_interval_level_1_modify, .modify = isis_instance_lsp_generation_interval_level_1_modify,
}, },
}, },
{ {
.xpath = "/frr-isisd:isis/instance/lsp/generation-interval/level-2", .xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/refresh-interval",
.cbs = {
.modify = isis_instance_lsp_refresh_interval_level_2_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/maximum-lifetime",
.cbs = {
.modify = isis_instance_lsp_maximum_lifetime_level_2_modify,
},
},
{
.xpath = "/frr-isisd:isis/instance/lsp/timers/level-2/generation-interval",
.cbs = { .cbs = {
.modify = isis_instance_lsp_generation_interval_level_2_modify, .modify = isis_instance_lsp_generation_interval_level_2_modify,
}, },

View File

@ -427,12 +427,8 @@ void cli_show_isis_area_pwd(struct vty *vty, struct lyd_node *dnode,
bool show_defaults); bool show_defaults);
void cli_show_isis_domain_pwd(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_domain_pwd(struct vty *vty, struct lyd_node *dnode,
bool show_defaults); bool show_defaults);
void cli_show_isis_lsp_gen_interval(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_lsp_timers(struct vty *vty, struct lyd_node *dnode,
bool show_defaults); bool show_defaults);
void cli_show_isis_lsp_ref_interval(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_lsp_max_lifetime(struct vty *vty, struct lyd_node *dnode,
bool show_defaults);
void cli_show_isis_lsp_mtu(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_lsp_mtu(struct vty *vty, struct lyd_node *dnode,
bool show_defaults); bool show_defaults);
void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode, void cli_show_isis_spf_min_interval(struct vty *vty, struct lyd_node *dnode,

View File

@ -371,7 +371,7 @@ int isis_instance_lsp_mtu_modify(enum nb_event event,
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-1 * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/refresh-interval
*/ */
int isis_instance_lsp_refresh_interval_level_1_modify( int isis_instance_lsp_refresh_interval_level_1_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
@ -391,7 +391,7 @@ int isis_instance_lsp_refresh_interval_level_1_modify(
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/refresh-interval/level-2 * XPath: /frr-isisd:isis/instance/lsp/timers/level-2/refresh-interval
*/ */
int isis_instance_lsp_refresh_interval_level_2_modify( int isis_instance_lsp_refresh_interval_level_2_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
@ -411,7 +411,7 @@ int isis_instance_lsp_refresh_interval_level_2_modify(
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-1 * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime
*/ */
int isis_instance_lsp_maximum_lifetime_level_1_modify( int isis_instance_lsp_maximum_lifetime_level_1_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
@ -431,7 +431,7 @@ int isis_instance_lsp_maximum_lifetime_level_1_modify(
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/maximum-lifetime/level-2 * XPath: /frr-isisd:isis/instance/lsp/timers/level-2/maximum-lifetime
*/ */
int isis_instance_lsp_maximum_lifetime_level_2_modify( int isis_instance_lsp_maximum_lifetime_level_2_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
@ -451,7 +451,7 @@ int isis_instance_lsp_maximum_lifetime_level_2_modify(
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-1 * XPath: /frr-isisd:isis/instance/lsp/timers/level-1/generation-interval
*/ */
int isis_instance_lsp_generation_interval_level_1_modify( int isis_instance_lsp_generation_interval_level_1_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,
@ -471,7 +471,7 @@ int isis_instance_lsp_generation_interval_level_1_modify(
} }
/* /*
* XPath: /frr-isisd:isis/instance/lsp/generation-interval/level-2 * XPath: /frr-isisd:isis/instance/lsp/timers/level-2/generation-interval
*/ */
int isis_instance_lsp_generation_interval_level_2_modify( int isis_instance_lsp_generation_interval_level_2_modify(
enum nb_event event, const struct lyd_node *dnode, enum nb_event event, const struct lyd_node *dnode,

View File

@ -137,17 +137,17 @@ struct isis_area *isis_area_create(const char *area_tag)
enum isis_metric_style default_style; enum isis_metric_style default_style;
area->max_lsp_lifetime[0] = yang_get_default_uint16( area->max_lsp_lifetime[0] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/maximum-lifetime/level-1"); "/frr-isisd:isis/instance/lsp/timers/level-1/maximum-lifetime");
area->max_lsp_lifetime[1] = yang_get_default_uint16( area->max_lsp_lifetime[1] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/maximum-lifetime/level-2"); "/frr-isisd:isis/instance/lsp/timers/level-2/maximum-lifetime");
area->lsp_refresh[0] = yang_get_default_uint16( area->lsp_refresh[0] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/refresh-interval/level-1"); "/frr-isisd:isis/instance/lsp/timers/level-1/refresh-interval");
area->lsp_refresh[1] = yang_get_default_uint16( area->lsp_refresh[1] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/refresh-interval/level-2"); "/frr-isisd:isis/instance/lsp/timers/level-2/refresh-interval");
area->lsp_gen_interval[0] = yang_get_default_uint16( area->lsp_gen_interval[0] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/generation-interval/level-1"); "/frr-isisd:isis/instance/lsp/timers/level-1/generation-interval");
area->lsp_gen_interval[1] = yang_get_default_uint16( area->lsp_gen_interval[1] = yang_get_default_uint16(
"/frr-isisd:isis/instance/lsp/generation-interval/level-2"); "/frr-isisd:isis/instance/lsp/timers/level-2/generation-interval");
area->min_spf_interval[0] = yang_get_default_uint16( area->min_spf_interval[0] = yang_get_default_uint16(
"/frr-isisd:isis/instance/spf/minimum-interval/level-1"); "/frr-isisd:isis/instance/spf/minimum-interval/level-1");
area->min_spf_interval[1] = yang_get_default_uint16( area->min_spf_interval[1] = yang_get_default_uint16(

View File

@ -27,6 +27,11 @@ module frr-isisd {
description description
"This module defines a model for managing FRR isisd daemon."; "This module defines a model for managing FRR isisd daemon.";
revision 2020-04-06 {
description
"Group LSP timers in a container so that they can be displayed and
configured together";
}
revision 2019-12-17 { revision 2019-12-17 {
description description
"Changed default area is-type to level-1-2"; "Changed default area is-type to level-1-2";
@ -34,7 +39,7 @@ module frr-isisd {
revision 2019-09-09 { revision 2019-09-09 {
description description
"Changed interface references to use "Changed interface references to use
frr-interface:interface-ref typedef"; frr-interface:interface-ref typedef";
} }
revision 2018-07-26 { revision 2018-07-26 {
description description
@ -301,8 +306,8 @@ module frr-isisd {
} }
grouping interface-config { grouping interface-config {
description "Interface configuration grouping"; description
"Interface configuration grouping";
leaf area-tag { leaf area-tag {
type string; type string;
mandatory true; mandatory true;
@ -333,8 +338,9 @@ module frr-isisd {
leaf bfd-monitoring { leaf bfd-monitoring {
type boolean; type boolean;
default false; default "false";
description "Monitor IS-IS peers on this circuit."; description
"Monitor IS-IS peers on this circuit.";
} }
container csnp-interval { container csnp-interval {
@ -490,8 +496,8 @@ module frr-isisd {
leaf network-type { leaf network-type {
type network-type; type network-type;
default "broadcast";
must "(. = \"point-to-point\") or (. = \"broadcast\")"; must "(. = \"point-to-point\") or (. = \"broadcast\")";
default "broadcast";
description description
"Explicitly configured type of IS-IS circuit (broadcast or point-to-point)."; "Explicitly configured type of IS-IS circuit (broadcast or point-to-point).";
} }
@ -570,38 +576,50 @@ module frr-isisd {
} }
grouping adjacency-state { grouping adjacency-state {
description
"Adjacency state";
container adjacencies { container adjacencies {
config false; config false;
description
"This container lists the adjacencies of
the local node.";
list adjacency { list adjacency {
description
"List of operational adjacencies.";
leaf neighbor-sys-type { leaf neighbor-sys-type {
type level; type level;
description description
"Level capability of neighboring system"; "Level capability of neighboring system";
} }
leaf neighbor-sysid { leaf neighbor-sysid {
type system-id; type system-id;
description description
"The system-id of the neighbor"; "The system-id of the neighbor";
} }
leaf neighbor-extended-circuit-id { leaf neighbor-extended-circuit-id {
type extended-circuit-id; type extended-circuit-id;
description description
"Circuit ID of the neighbor"; "Circuit ID of the neighbor";
} }
leaf neighbor-snpa { leaf neighbor-snpa {
type snpa; type snpa;
description description
"SNPA of the neighbor"; "SNPA of the neighbor";
} }
leaf hold-timer { leaf hold-timer {
type uint16; type uint16;
units seconds; units "seconds";
description description
"The holding time in seconds for this "The holding time in seconds for this
adjacency. This value is based on adjacency. This value is based on
received hello PDUs and the elapsed received hello PDUs and the elapsed
time since receipt."; time since receipt.";
} }
leaf neighbor-priority { leaf neighbor-priority {
type uint8 { type uint8 {
range "0 .. 127"; range "0 .. 127";
@ -610,37 +628,36 @@ module frr-isisd {
"Priority of the neighboring IS for becoming "Priority of the neighboring IS for becoming
the DIS."; the DIS.";
} }
leaf state { leaf state {
type adj-state-type; type adj-state-type;
description description
"This leaf describes the state of the interface."; "This leaf describes the state of the interface.";
} }
description
"List of operational adjacencies.";
} }
description
"This container lists the adjacencies of
the local node.";
} }
description
"Adjacency state";
} }
grouping event-counters { grouping event-counters {
description
"Grouping for IS-IS interface event counters";
container event-counters { container event-counters {
config false; config false;
description
"IS-IS interface event counters.";
leaf adjacency-changes { leaf adjacency-changes {
type uint32; type uint32;
description description
"The number of times an adjacency state change has "The number of times an adjacency state change has
occurred on this interface."; occurred on this interface.";
} }
leaf adjacency-number { leaf adjacency-number {
type uint32; type uint32;
description description
"The number of adjacencies on this interface."; "The number of adjacencies on this interface.";
} }
leaf init-fails { leaf init-fails {
type uint32; type uint32;
description description
@ -649,12 +666,14 @@ module frr-isisd {
as PPP NCP failures. Failures to form an as PPP NCP failures. Failures to form an
adjacency are counted by adjacency-rejects."; adjacency are counted by adjacency-rejects.";
} }
leaf adjacency-rejects { leaf adjacency-rejects {
type uint32; type uint32;
description description
"The number of times an adjacency has been "The number of times an adjacency has been
rejected on this interface."; rejected on this interface.";
} }
leaf id-len-mismatch { leaf id-len-mismatch {
type uint32; type uint32;
description description
@ -662,6 +681,7 @@ module frr-isisd {
field length different from that for this field length different from that for this
system has been received on this interface."; system has been received on this interface.";
} }
leaf max-area-addresses-mismatch { leaf max-area-addresses-mismatch {
type uint32; type uint32;
description description
@ -670,26 +690,26 @@ module frr-isisd {
max area address field differing from that of max area address field differing from that of
this system."; this system.";
} }
leaf authentication-type-fails { leaf authentication-type-fails {
type uint32; type uint32;
description description
"Number of authentication type mismatches."; "Number of authentication type mismatches.";
} }
leaf authentication-fails { leaf authentication-fails {
type uint32; type uint32;
description description
"Number of authentication key failures."; "Number of authentication key failures.";
} }
description "IS-IS interface event counters.";
} }
description
"Grouping for IS-IS interface event counters";
} }
grouping interface-state { grouping interface-state {
description description
"IS-IS interface operational state."; "IS-IS interface operational state.";
uses adjacency-state; uses adjacency-state;
uses event-counters; uses event-counters;
} }
@ -814,75 +834,75 @@ module frr-isisd {
"MTU of an LSP."; "MTU of an LSP.";
} }
container refresh-interval { container timers {
description description
""; "LSP-related timers";
leaf level-1 { container level-1 {
type uint16;
units "seconds";
default "900";
description description
"LSP refresh interval for level-1."; "Level-1 LSP-related timers";
} leaf refresh-interval {
type uint16;
leaf level-2 { units "seconds";
type uint16; default "900";
units "seconds"; description
default "900"; "LSP refresh interval for level-1.";
description }
"LSP refresh interval for level-2.";
} leaf maximum-lifetime {
} type uint16 {
range "350..65535";
container maximum-lifetime { }
description units "seconds";
"Maximum LSP lifetime."; must ". >= ../refresh-interval + 300";
leaf level-1 { default "1200";
type uint16 { description
range "350..65535"; "Maximum LSP lifetime for level-1.";
}
leaf generation-interval {
type uint16 {
range "1..120";
}
units "seconds";
must ". < ../refresh-interval";
default "30";
description
"Minimum time allowed before level-1 LSP retransmissions.";
} }
units "seconds";
must ". >= ../../refresh-interval/level-1 + 300";
default "1200";
description
"Maximum LSP lifetime for level-1.";
} }
leaf level-2 { container level-2 {
type uint16 {
range "350..65535";
}
units "seconds";
must ". >= ../../refresh-interval/level-2 + 300";
default "1200";
description description
"Maximum LSP lifetime for level-2."; "Level-2 LSP-related timers";
} leaf refresh-interval {
} type uint16;
units "seconds";
default "900";
description
"LSP refresh interval for level-2.";
}
container generation-interval { leaf maximum-lifetime {
description type uint16 {
"Minimum LSP regeneration interval."; range "350..65535";
leaf level-1 { }
type uint16 { units "seconds";
range "1..120"; must ". >= ../refresh-interval + 300";
default "1200";
description
"Maximum LSP lifetime for level-2.";
} }
units "seconds";
must ". < ../../refresh-interval/level-1";
default "30";
description
"Minimum time allowed before level-1 LSP retransmissions.";
}
leaf level-2 { leaf generation-interval {
type uint16 { type uint16 {
range "1..120"; range "1..120";
}
units "seconds";
must ". < ../refresh-interval";
default "30";
description
"Minimum time allowed before level-2 LSP retransmissions.";
} }
units "seconds";
must ". < ../../refresh-interval/level-2";
default "30";
description
"Minimum time allowed before level-2 LSP retransmissions.";
} }
} }
} }
@ -1152,6 +1172,7 @@ module frr-isisd {
description description
"IS-IS interface parameters."; "IS-IS interface parameters.";
uses interface-config; uses interface-config;
uses interface-state; uses interface-state;
} }
} }