isisd: API: timers (IIH, CSNP, PSNP)

No setters needed since change of fields doesn't require any
specific action to make it apply.  Just move the CLI defs to isis_vty.c.

Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
This commit is contained in:
David Lamparter 2016-07-28 17:23:28 +02:00 committed by Donald Sharp
parent 50c7d14a2a
commit 01bb08b6dc
2 changed files with 704 additions and 705 deletions

View File

@ -1370,668 +1370,6 @@ isis_circuit_passwd_hmac_md5_set (struct isis_circuit *circuit, const char *pass
{
return isis_circuit_passwd_set (circuit, ISIS_PASSWD_TYPE_HMAC_MD5, passwd);
}
DEFUN (isis_hello_interval,
isis_hello_interval_cmd,
"isis hello-interval <1-600>",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 seconds, interval depends on multiplier\n")
{
int interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %d - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[0] = (u_int16_t) interval;
circuit->hello_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval,
no_isis_hello_interval_cmd,
"no isis hello-interval",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[0] = DEFAULT_HELLO_INTERVAL;
circuit->hello_interval[1] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval,
no_isis_hello_interval_arg_cmd,
"no isis hello-interval <1-600>",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n")
DEFUN (isis_hello_interval_l1,
isis_hello_interval_l1_cmd,
"isis hello-interval <1-600> level-1",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-1 IIHs\n")
{
long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %ld - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval_l1,
no_isis_hello_interval_l1_cmd,
"no isis hello-interval level-1",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Specify hello-interval for level-1 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[0] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval_l1,
no_isis_hello_interval_l1_arg_cmd,
"no isis hello-interval <1-600> level-1",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-1 IIHs\n")
DEFUN (isis_hello_interval_l2,
isis_hello_interval_l2_cmd,
"isis hello-interval <1-600> level-2",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-2 IIHs\n")
{
long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %ld - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval_l2,
no_isis_hello_interval_l2_cmd,
"no isis hello-interval level-2",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Specify hello-interval for level-2 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[1] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval_l2,
no_isis_hello_interval_l2_arg_cmd,
"no isis hello-interval <1-600> level-2",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-2 IIHs\n")
DEFUN (isis_hello_multiplier,
isis_hello_multiplier_cmd,
"isis hello-multiplier <2-100>",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[0] = (u_int16_t) mult;
circuit->hello_multiplier[1] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier,
no_isis_hello_multiplier_cmd,
"no isis hello-multiplier",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[0] = DEFAULT_HELLO_MULTIPLIER;
circuit->hello_multiplier[1] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier,
no_isis_hello_multiplier_arg_cmd,
"no isis hello-multiplier <2-100>",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n")
DEFUN (isis_hello_multiplier_l1,
isis_hello_multiplier_l1_cmd,
"isis hello-multiplier <2-100> level-1",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-1 IIHs\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[0] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier_l1,
no_isis_hello_multiplier_l1_cmd,
"no isis hello-multiplier level-1",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Specify hello multiplier for level-1 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[0] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier_l1,
no_isis_hello_multiplier_l1_arg_cmd,
"no isis hello-multiplier <2-100> level-1",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-1 IIHs\n")
DEFUN (isis_hello_multiplier_l2,
isis_hello_multiplier_l2_cmd,
"isis hello-multiplier <2-100> level-2",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-2 IIHs\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[1] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier_l2,
no_isis_hello_multiplier_l2_cmd,
"no isis hello-multiplier level-2",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Specify hello multiplier for level-2 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[1] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier_l2,
no_isis_hello_multiplier_l2_arg_cmd,
"no isis hello-multiplier <2-100> level-2",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-2 IIHs\n")
DEFUN (isis_hello_padding,
isis_hello_padding_cmd,
"isis hello padding",
"IS-IS commands\n"
"Add padding to IS-IS hello packets\n"
"Pad hello packets\n"
"<cr>\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->pad_hellos = 1;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_padding,
no_isis_hello_padding_cmd,
"no isis hello padding",
NO_STR
"IS-IS commands\n"
"Add padding to IS-IS hello packets\n"
"Pad hello packets\n"
"<cr>\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->pad_hellos = 0;
return CMD_SUCCESS;
}
DEFUN (csnp_interval,
csnp_interval_cmd,
"isis csnp-interval <1-600>",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[0] = (u_int16_t) interval;
circuit->csnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval,
no_csnp_interval_cmd,
"no isis csnp-interval",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[0] = DEFAULT_CSNP_INTERVAL;
circuit->csnp_interval[1] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval,
no_csnp_interval_arg_cmd,
"no isis csnp-interval <1-600>",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n")
DEFUN (csnp_interval_l1,
csnp_interval_l1_cmd,
"isis csnp-interval <1-600> level-1",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-1 CSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval_l1,
no_csnp_interval_l1_cmd,
"no isis csnp-interval level-1",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"Specify interval for level-1 CSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[0] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval_l1,
no_csnp_interval_l1_arg_cmd,
"no isis csnp-interval <1-600> level-1",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-1 CSNPs\n")
DEFUN (csnp_interval_l2,
csnp_interval_l2_cmd,
"isis csnp-interval <1-600> level-2",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-2 CSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval_l2,
no_csnp_interval_l2_cmd,
"no isis csnp-interval level-2",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"Specify interval for level-2 CSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[1] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval_l2,
no_csnp_interval_l2_arg_cmd,
"no isis csnp-interval <1-600> level-2",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-2 CSNPs\n")
DEFUN (psnp_interval,
psnp_interval_cmd,
"isis psnp-interval <1-120>",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[0] = (u_int16_t) interval;
circuit->psnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval,
no_psnp_interval_cmd,
"no isis psnp-interval",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[0] = DEFAULT_PSNP_INTERVAL;
circuit->psnp_interval[1] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval,
no_psnp_interval_arg_cmd,
"no isis psnp-interval <1-120>",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n")
DEFUN (psnp_interval_l1,
psnp_interval_l1_cmd,
"isis psnp-interval <1-120> level-1",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-1 PSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval_l1,
no_psnp_interval_l1_cmd,
"no isis psnp-interval level-1",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"Specify interval for level-1 PSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[0] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval_l1,
no_psnp_interval_l1_arg_cmd,
"no isis psnp-interval <1-120> level-1",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-1 PSNPs\n")
DEFUN (psnp_interval_l2,
psnp_interval_l2_cmd,
"isis psnp-interval <1-120> level-2",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-2 PSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval_l2,
no_psnp_interval_l2_cmd,
"no isis psnp-interval level-2",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"Specify interval for level-2 PSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[1] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval_l2,
no_psnp_interval_l2_arg_cmd,
"no isis psnp-interval <1-120> level-2",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-2 PSNPs\n")
struct cmd_node interface_node = {
INTERFACE_NODE,
"%s(config-if)# ",
@ -2114,48 +1452,5 @@ isis_circuit_init ()
install_element (INTERFACE_NODE, &interface_desc_cmd);
install_element (INTERFACE_NODE, &no_interface_desc_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_padding_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_padding_cmd);
install_element (INTERFACE_NODE, &csnp_interval_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_arg_cmd);
install_element (INTERFACE_NODE, &csnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &csnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l2_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l2_arg_cmd);
isis_vty_init ();
}

View File

@ -694,6 +694,667 @@ ALIAS (no_isis_metric_l2,
"Specify metric for level-2 routing\n")
/* end of metrics */
DEFUN (isis_hello_interval,
isis_hello_interval_cmd,
"isis hello-interval <1-600>",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 seconds, interval depends on multiplier\n")
{
int interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %d - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[0] = (u_int16_t) interval;
circuit->hello_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval,
no_isis_hello_interval_cmd,
"no isis hello-interval",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[0] = DEFAULT_HELLO_INTERVAL;
circuit->hello_interval[1] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval,
no_isis_hello_interval_arg_cmd,
"no isis hello-interval <1-600>",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n")
DEFUN (isis_hello_interval_l1,
isis_hello_interval_l1_cmd,
"isis hello-interval <1-600> level-1",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-1 IIHs\n")
{
long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %ld - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval_l1,
no_isis_hello_interval_l1_cmd,
"no isis hello-interval level-1",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Specify hello-interval for level-1 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[0] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval_l1,
no_isis_hello_interval_l1_arg_cmd,
"no isis hello-interval <1-600> level-1",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-1 IIHs\n")
DEFUN (isis_hello_interval_l2,
isis_hello_interval_l2_cmd,
"isis hello-interval <1-600> level-2",
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-2 IIHs\n")
{
long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atoi (argv[0]);
if (interval < MIN_HELLO_INTERVAL || interval > MAX_HELLO_INTERVAL)
{
vty_out (vty, "Invalid hello-interval %ld - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_interval_l2,
no_isis_hello_interval_l2_cmd,
"no isis hello-interval level-2",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Specify hello-interval for level-2 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_interval[1] = DEFAULT_HELLO_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_interval_l2,
no_isis_hello_interval_l2_arg_cmd,
"no isis hello-interval <1-600> level-2",
NO_STR
"IS-IS commands\n"
"Set Hello interval\n"
"Hello interval value\n"
"Holdtime 1 second, interval depends on multiplier\n"
"Specify hello-interval for level-2 IIHs\n")
DEFUN (isis_hello_multiplier,
isis_hello_multiplier_cmd,
"isis hello-multiplier <2-100>",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[0] = (u_int16_t) mult;
circuit->hello_multiplier[1] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier,
no_isis_hello_multiplier_cmd,
"no isis hello-multiplier",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[0] = DEFAULT_HELLO_MULTIPLIER;
circuit->hello_multiplier[1] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier,
no_isis_hello_multiplier_arg_cmd,
"no isis hello-multiplier <2-100>",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n")
DEFUN (isis_hello_multiplier_l1,
isis_hello_multiplier_l1_cmd,
"isis hello-multiplier <2-100> level-1",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-1 IIHs\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[0] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier_l1,
no_isis_hello_multiplier_l1_cmd,
"no isis hello-multiplier level-1",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Specify hello multiplier for level-1 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[0] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier_l1,
no_isis_hello_multiplier_l1_arg_cmd,
"no isis hello-multiplier <2-100> level-1",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-1 IIHs\n")
DEFUN (isis_hello_multiplier_l2,
isis_hello_multiplier_l2_cmd,
"isis hello-multiplier <2-100> level-2",
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-2 IIHs\n")
{
int mult;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
mult = atoi (argv[0]);
if (mult < MIN_HELLO_MULTIPLIER || mult > MAX_HELLO_MULTIPLIER)
{
vty_out (vty, "Invalid hello-multiplier %d - should be <2-100>%s",
mult, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->hello_multiplier[1] = (u_int16_t) mult;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_multiplier_l2,
no_isis_hello_multiplier_l2_cmd,
"no isis hello-multiplier level-2",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Specify hello multiplier for level-2 IIHs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->hello_multiplier[1] = DEFAULT_HELLO_MULTIPLIER;
return CMD_SUCCESS;
}
ALIAS (no_isis_hello_multiplier_l2,
no_isis_hello_multiplier_l2_arg_cmd,
"no isis hello-multiplier <2-100> level-2",
NO_STR
"IS-IS commands\n"
"Set multiplier for Hello holding time\n"
"Hello multiplier value\n"
"Specify hello multiplier for level-2 IIHs\n")
DEFUN (isis_hello_padding,
isis_hello_padding_cmd,
"isis hello padding",
"IS-IS commands\n"
"Add padding to IS-IS hello packets\n"
"Pad hello packets\n"
"<cr>\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->pad_hellos = 1;
return CMD_SUCCESS;
}
DEFUN (no_isis_hello_padding,
no_isis_hello_padding_cmd,
"no isis hello padding",
NO_STR
"IS-IS commands\n"
"Add padding to IS-IS hello packets\n"
"Pad hello packets\n"
"<cr>\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->pad_hellos = 0;
return CMD_SUCCESS;
}
DEFUN (csnp_interval,
csnp_interval_cmd,
"isis csnp-interval <1-600>",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[0] = (u_int16_t) interval;
circuit->csnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval,
no_csnp_interval_cmd,
"no isis csnp-interval",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[0] = DEFAULT_CSNP_INTERVAL;
circuit->csnp_interval[1] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval,
no_csnp_interval_arg_cmd,
"no isis csnp-interval <1-600>",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n")
DEFUN (csnp_interval_l1,
csnp_interval_l1_cmd,
"isis csnp-interval <1-600> level-1",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-1 CSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval_l1,
no_csnp_interval_l1_cmd,
"no isis csnp-interval level-1",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"Specify interval for level-1 CSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[0] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval_l1,
no_csnp_interval_l1_arg_cmd,
"no isis csnp-interval <1-600> level-1",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-1 CSNPs\n")
DEFUN (csnp_interval_l2,
csnp_interval_l2_cmd,
"isis csnp-interval <1-600> level-2",
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-2 CSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_CSNP_INTERVAL || interval > MAX_CSNP_INTERVAL)
{
vty_out (vty, "Invalid csnp-interval %lu - should be <1-600>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->csnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_csnp_interval_l2,
no_csnp_interval_l2_cmd,
"no isis csnp-interval level-2",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"Specify interval for level-2 CSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->csnp_interval[1] = DEFAULT_CSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_csnp_interval_l2,
no_csnp_interval_l2_arg_cmd,
"no isis csnp-interval <1-600> level-2",
NO_STR
"IS-IS commands\n"
"Set CSNP interval in seconds\n"
"CSNP interval value\n"
"Specify interval for level-2 CSNPs\n")
DEFUN (psnp_interval,
psnp_interval_cmd,
"isis psnp-interval <1-120>",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[0] = (u_int16_t) interval;
circuit->psnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval,
no_psnp_interval_cmd,
"no isis psnp-interval",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[0] = DEFAULT_PSNP_INTERVAL;
circuit->psnp_interval[1] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval,
no_psnp_interval_arg_cmd,
"no isis psnp-interval <1-120>",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n")
DEFUN (psnp_interval_l1,
psnp_interval_l1_cmd,
"isis psnp-interval <1-120> level-1",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-1 PSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[0] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval_l1,
no_psnp_interval_l1_cmd,
"no isis psnp-interval level-1",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"Specify interval for level-1 PSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[0] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval_l1,
no_psnp_interval_l1_arg_cmd,
"no isis psnp-interval <1-120> level-1",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-1 PSNPs\n")
DEFUN (psnp_interval_l2,
psnp_interval_l2_cmd,
"isis psnp-interval <1-120> level-2",
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-2 PSNPs\n")
{
unsigned long interval;
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
interval = atol (argv[0]);
if (interval < MIN_PSNP_INTERVAL || interval > MAX_PSNP_INTERVAL)
{
vty_out (vty, "Invalid psnp-interval %lu - should be <1-120>%s",
interval, VTY_NEWLINE);
return CMD_ERR_AMBIGUOUS;
}
circuit->psnp_interval[1] = (u_int16_t) interval;
return CMD_SUCCESS;
}
DEFUN (no_psnp_interval_l2,
no_psnp_interval_l2_cmd,
"no isis psnp-interval level-2",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"Specify interval for level-2 PSNPs\n")
{
struct isis_circuit *circuit = isis_circuit_lookup (vty);
if (!circuit)
return CMD_ERR_NO_MATCH;
circuit->psnp_interval[1] = DEFAULT_PSNP_INTERVAL;
return CMD_SUCCESS;
}
ALIAS (no_psnp_interval_l2,
no_psnp_interval_l2_arg_cmd,
"no isis psnp-interval <1-120> level-2",
NO_STR
"IS-IS commands\n"
"Set PSNP interval in seconds\n"
"PSNP interval value\n"
"Specify interval for level-2 PSNPs\n")
static int
validate_metric_style_narrow (struct vty *vty, struct isis_area *area)
{
@ -899,6 +1560,49 @@ isis_vty_init (void)
install_element (INTERFACE_NODE, &no_isis_metric_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_metric_l2_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_interval_l2_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l1_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_multiplier_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_multiplier_l2_arg_cmd);
install_element (INTERFACE_NODE, &isis_hello_padding_cmd);
install_element (INTERFACE_NODE, &no_isis_hello_padding_cmd);
install_element (INTERFACE_NODE, &csnp_interval_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_arg_cmd);
install_element (INTERFACE_NODE, &csnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &csnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_csnp_interval_l2_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l1_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l1_arg_cmd);
install_element (INTERFACE_NODE, &psnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l2_cmd);
install_element (INTERFACE_NODE, &no_psnp_interval_l2_arg_cmd);
install_element (ISIS_NODE, &metric_style_cmd);
install_element (ISIS_NODE, &no_metric_style_cmd);