2 * IS-IS Rout(e)ing protocol - isis_vty_isisd.c
4 * This file contains the CLI that is specific to IS-IS
6 * Copyright (C) 2001,2002 Sampo Saaristo
7 * Tampere University of Technology
8 * Institute of Communications Engineering
9 * Copyright (C) 2016 David Lamparter, for NetDEF, Inc.
10 * Copyright (C) 2018 Christian Franke, for NetDEF, Inc.
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public Licenseas published by the Free
14 * Software Foundation; either version 2 of the License, or (at your option)
17 * This program is distributed in the hope that it will be useful,but WITHOUT
18 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
19 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
22 * You should have received a copy of the GNU General Public License along
23 * with this program; see the file COPYING; if not, write to the Free Software
24 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
31 #include "isis_circuit.h"
33 #include "isis_misc.h"
36 #include "isis_vty_common.h"
38 static int level_for_arg(const char *arg
)
40 if (!strcmp(arg
, "level-1"))
46 DEFUN (isis_circuit_type
,
47 isis_circuit_type_cmd
,
48 "isis circuit-type <level-1|level-1-2|level-2-only>",
49 "IS-IS routing protocol\n"
50 "Configure circuit type for interface\n"
51 "Level-1 only adjacencies are formed\n"
52 "Level-1-2 adjacencies are formed\n"
53 "Level-2 only adjacencies are formed\n")
57 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
59 return CMD_ERR_NO_MATCH
;
61 is_type
= string2circuit_t(argv
[idx_level
]->arg
);
63 vty_out(vty
, "Unknown circuit-type \n");
64 return CMD_WARNING_CONFIG_FAILED
;
67 if (circuit
->state
== C_STATE_UP
68 && circuit
->area
->is_type
!= IS_LEVEL_1_AND_2
69 && circuit
->area
->is_type
!= is_type
) {
70 vty_out(vty
, "Invalid circuit level for area %s.\n",
71 circuit
->area
->area_tag
);
72 return CMD_WARNING_CONFIG_FAILED
;
74 isis_circuit_is_type_set(circuit
, is_type
);
79 DEFUN (no_isis_circuit_type
,
80 no_isis_circuit_type_cmd
,
81 "no isis circuit-type <level-1|level-1-2|level-2-only>",
83 "IS-IS routing protocol\n"
84 "Configure circuit type for interface\n"
85 "Level-1 only adjacencies are formed\n"
86 "Level-1-2 adjacencies are formed\n"
87 "Level-2 only adjacencies are formed\n")
90 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
92 return CMD_ERR_NO_MATCH
;
95 * Set the circuits level to its default value
97 if (circuit
->state
== C_STATE_UP
)
98 is_type
= circuit
->area
->is_type
;
100 is_type
= IS_LEVEL_1_AND_2
;
101 isis_circuit_is_type_set(circuit
, is_type
);
108 "isis network point-to-point",
109 "IS-IS routing protocol\n"
111 "point-to-point network type\n")
113 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
115 return CMD_ERR_NO_MATCH
;
117 if (isis_circuit_circ_type_set(circuit
, CIRCUIT_T_P2P
)) {
119 "isis network point-to-point is valid only on broadcast interfaces\n");
120 return CMD_WARNING_CONFIG_FAILED
;
126 DEFUN (no_isis_network
,
128 "no isis network point-to-point",
130 "IS-IS routing protocol\n"
131 "Set network type for circuit\n"
132 "point-to-point network type\n")
134 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
136 return CMD_ERR_NO_MATCH
;
138 if (isis_circuit_circ_type_set(circuit
, CIRCUIT_T_BROADCAST
)) {
140 "isis network point-to-point is valid only on broadcast interfaces\n");
141 return CMD_WARNING_CONFIG_FAILED
;
147 DEFUN (isis_priority
,
149 "isis priority (0-127)",
150 "IS-IS routing protocol\n"
151 "Set priority for Designated Router election\n"
154 uint8_t prio
= atoi(argv
[2]->arg
);
155 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
157 return CMD_ERR_NO_MATCH
;
159 circuit
->priority
[0] = prio
;
160 circuit
->priority
[1] = prio
;
165 DEFUN (no_isis_priority
,
166 no_isis_priority_cmd
,
167 "no isis priority [(0-127)]",
169 "IS-IS routing protocol\n"
170 "Set priority for Designated Router election\n"
173 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
175 return CMD_ERR_NO_MATCH
;
177 circuit
->priority
[0] = DEFAULT_PRIORITY
;
178 circuit
->priority
[1] = DEFAULT_PRIORITY
;
183 DEFUN (isis_priority_level
,
184 isis_priority_level_cmd
,
185 "isis priority (0-127) <level-1|level-2>",
186 "IS-IS routing protocol\n"
187 "Set priority for Designated Router election\n"
189 "Specify priority for level-1 routing\n"
190 "Specify priority for level-2 routing\n")
192 uint8_t prio
= atoi(argv
[2]->arg
);
193 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
195 return CMD_ERR_NO_MATCH
;
197 circuit
->priority
[level_for_arg(argv
[3]->text
)] = prio
;
202 DEFUN (no_isis_priority_level
,
203 no_isis_priority_level_cmd
,
204 "no isis priority [(0-127)] <level-1|level-2>",
206 "IS-IS routing protocol\n"
207 "Set priority for Designated Router election\n"
209 "Specify priority for level-1 routing\n"
210 "Specify priority for level-2 routing\n")
212 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
213 int level
= level_for_arg(argv
[argc
- 1]->text
);
215 return CMD_ERR_NO_MATCH
;
217 circuit
->priority
[level
] = DEFAULT_PRIORITY
;
222 DEFUN (isis_metric_level
,
223 isis_metric_level_cmd
,
224 "isis metric (0-16777215) <level-1|level-2>",
225 "IS-IS routing protocol\n"
226 "Set default metric for circuit\n"
227 "Default metric value\n"
228 "Specify metric for level-1 routing\n"
229 "Specify metric for level-2 routing\n")
231 uint32_t met
= atoi(argv
[2]->arg
);
232 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
234 return CMD_ERR_NO_MATCH
;
236 CMD_FERR_RETURN(isis_circuit_metric_set(circuit
,
237 level_for_arg(argv
[3]->text
),
239 "Failed to set metric: $ERR");
243 DEFUN (no_isis_metric_level
,
244 no_isis_metric_level_cmd
,
245 "no isis metric [(0-16777215)] <level-1|level-2>",
247 "IS-IS routing protocol\n"
248 "Set default metric for circuit\n"
249 "Default metric value\n"
250 "Specify metric for level-1 routing\n"
251 "Specify metric for level-2 routing\n")
253 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
254 int level
= level_for_arg(argv
[argc
- 1]->text
);
256 return CMD_ERR_NO_MATCH
;
258 CMD_FERR_RETURN(isis_circuit_metric_set(circuit
, level
,
259 DEFAULT_CIRCUIT_METRIC
),
260 "Failed to set L1 metric: $ERR");
264 DEFUN (isis_hello_interval_level
,
265 isis_hello_interval_level_cmd
,
266 "isis hello-interval (1-600) <level-1|level-2>",
267 "IS-IS routing protocol\n"
268 "Set Hello interval\n"
269 "Holdtime 1 second, interval depends on multiplier\n"
270 "Specify hello-interval for level-1 IIHs\n"
271 "Specify hello-interval for level-2 IIHs\n")
273 uint32_t interval
= atoi(argv
[2]->arg
);
274 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
276 return CMD_ERR_NO_MATCH
;
278 circuit
->hello_interval
[level_for_arg(argv
[3]->text
)] = interval
;
283 DEFUN (no_isis_hello_interval_level
,
284 no_isis_hello_interval_level_cmd
,
285 "no isis hello-interval [(1-600)] <level-1|level-2>",
287 "IS-IS routing protocol\n"
288 "Set Hello interval\n"
289 "Holdtime 1 second, interval depends on multiplier\n"
290 "Specify hello-interval for level-1 IIHs\n"
291 "Specify hello-interval for level-2 IIHs\n")
293 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
294 int level
= level_for_arg(argv
[argc
- 1]->text
);
296 return CMD_ERR_NO_MATCH
;
298 circuit
->hello_interval
[level
] = DEFAULT_HELLO_INTERVAL
;
303 DEFUN (isis_hello_multiplier_level
,
304 isis_hello_multiplier_level_cmd
,
305 "isis hello-multiplier (2-100) <level-1|level-2>",
306 "IS-IS routing protocol\n"
307 "Set multiplier for Hello holding time\n"
308 "Hello multiplier value\n"
309 "Specify hello multiplier for level-1 IIHs\n"
310 "Specify hello multiplier for level-2 IIHs\n")
312 uint16_t mult
= atoi(argv
[2]->arg
);
313 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
315 return CMD_ERR_NO_MATCH
;
317 circuit
->hello_multiplier
[level_for_arg(argv
[3]->text
)] = mult
;
322 DEFUN (no_isis_hello_multiplier_level
,
323 no_isis_hello_multiplier_level_cmd
,
324 "no isis hello-multiplier [(2-100)] <level-1|level-2>",
326 "IS-IS routing protocol\n"
327 "Set multiplier for Hello holding time\n"
328 "Hello multiplier value\n"
329 "Specify hello multiplier for level-1 IIHs\n"
330 "Specify hello multiplier for level-2 IIHs\n")
332 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
333 int level
= level_for_arg(argv
[argc
- 1]->text
);
335 return CMD_ERR_NO_MATCH
;
337 circuit
->hello_multiplier
[level
] = DEFAULT_HELLO_MULTIPLIER
;
342 DEFUN (isis_threeway_adj
,
343 isis_threeway_adj_cmd
,
344 "[no] isis three-way-handshake",
347 "Enable/Disable three-way handshake\n")
349 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
351 return CMD_ERR_NO_MATCH
;
353 circuit
->disable_threeway_adj
= !strcmp(argv
[0]->text
, "no");
357 DEFUN (isis_hello_padding
,
358 isis_hello_padding_cmd
,
359 "isis hello padding",
360 "IS-IS routing protocol\n"
361 "Add padding to IS-IS hello packets\n"
362 "Pad hello packets\n")
364 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
366 return CMD_ERR_NO_MATCH
;
368 circuit
->pad_hellos
= 1;
373 DEFUN (no_isis_hello_padding
,
374 no_isis_hello_padding_cmd
,
375 "no isis hello padding",
377 "IS-IS routing protocol\n"
378 "Add padding to IS-IS hello packets\n"
379 "Pad hello packets\n")
381 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
383 return CMD_ERR_NO_MATCH
;
385 circuit
->pad_hellos
= 0;
390 DEFUN (csnp_interval_level
,
391 csnp_interval_level_cmd
,
392 "isis csnp-interval (1-600) <level-1|level-2>",
393 "IS-IS routing protocol\n"
394 "Set CSNP interval in seconds\n"
395 "CSNP interval value\n"
396 "Specify interval for level-1 CSNPs\n"
397 "Specify interval for level-2 CSNPs\n")
399 uint16_t interval
= atoi(argv
[2]->arg
);
400 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
402 return CMD_ERR_NO_MATCH
;
404 circuit
->csnp_interval
[level_for_arg(argv
[3]->text
)] = interval
;
409 DEFUN (no_csnp_interval_level
,
410 no_csnp_interval_level_cmd
,
411 "no isis csnp-interval [(1-600)] <level-1|level-2>",
413 "IS-IS routing protocol\n"
414 "Set CSNP interval in seconds\n"
415 "CSNP interval value\n"
416 "Specify interval for level-1 CSNPs\n"
417 "Specify interval for level-2 CSNPs\n")
419 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
420 int level
= level_for_arg(argv
[argc
- 1]->text
);
422 return CMD_ERR_NO_MATCH
;
424 circuit
->csnp_interval
[level
] = DEFAULT_CSNP_INTERVAL
;
429 DEFUN (psnp_interval_level
,
430 psnp_interval_level_cmd
,
431 "isis psnp-interval (1-120) <level-1|level-2>",
432 "IS-IS routing protocol\n"
433 "Set PSNP interval in seconds\n"
434 "PSNP interval value\n"
435 "Specify interval for level-1 PSNPs\n"
436 "Specify interval for level-2 PSNPs\n")
438 uint16_t interval
= atoi(argv
[2]->arg
);
439 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
441 return CMD_ERR_NO_MATCH
;
443 circuit
->psnp_interval
[level_for_arg(argv
[3]->text
)] = (uint16_t)interval
;
448 DEFUN (no_psnp_interval_level
,
449 no_psnp_interval_level_cmd
,
450 "no isis psnp-interval [(1-120)] <level-1|level-2>",
452 "IS-IS routing protocol\n"
453 "Set PSNP interval in seconds\n"
454 "PSNP interval value\n"
455 "Specify interval for level-1 PSNPs\n"
456 "Specify interval for level-2 PSNPs\n")
458 struct isis_circuit
*circuit
= isis_circuit_lookup(vty
);
459 int level
= level_for_arg(argv
[argc
- 1]->text
);
461 return CMD_ERR_NO_MATCH
;
463 circuit
->psnp_interval
[level
] = DEFAULT_PSNP_INTERVAL
;
468 static int validate_metric_style_narrow(struct vty
*vty
, struct isis_area
*area
)
470 struct isis_circuit
*circuit
;
471 struct listnode
*node
;
474 return CMD_WARNING_CONFIG_FAILED
;
477 vty_out(vty
, "ISIS area is invalid\n");
478 return CMD_WARNING_CONFIG_FAILED
;
481 for (ALL_LIST_ELEMENTS_RO(area
->circuit_list
, node
, circuit
)) {
482 if ((area
->is_type
& IS_LEVEL_1
)
483 && (circuit
->is_type
& IS_LEVEL_1
)
484 && (circuit
->te_metric
[0] > MAX_NARROW_LINK_METRIC
)) {
485 vty_out(vty
, "ISIS circuit %s metric is invalid\n",
486 circuit
->interface
->name
);
487 return CMD_WARNING_CONFIG_FAILED
;
489 if ((area
->is_type
& IS_LEVEL_2
)
490 && (circuit
->is_type
& IS_LEVEL_2
)
491 && (circuit
->te_metric
[1] > MAX_NARROW_LINK_METRIC
)) {
492 vty_out(vty
, "ISIS circuit %s metric is invalid\n",
493 circuit
->interface
->name
);
494 return CMD_WARNING_CONFIG_FAILED
;
503 "metric-style <narrow|transition|wide>",
504 "Use old-style (ISO 10589) or new-style packet formats\n"
505 "Use old style of TLVs with narrow metric\n"
506 "Send and accept both styles of TLVs during transition\n"
507 "Use new style of TLVs to carry wider metric\n")
509 int idx_metric_style
= 1;
510 VTY_DECLVAR_CONTEXT(isis_area
, area
);
513 if (strncmp(argv
[idx_metric_style
]->arg
, "w", 1) == 0) {
514 isis_area_metricstyle_set(area
, false, true);
518 if (area_is_mt(area
)) {
520 "Narrow metrics cannot be used while multi topology IS-IS is active\n");
521 return CMD_WARNING_CONFIG_FAILED
;
524 ret
= validate_metric_style_narrow(vty
, area
);
525 if (ret
!= CMD_SUCCESS
)
528 if (strncmp(argv
[idx_metric_style
]->arg
, "t", 1) == 0)
529 isis_area_metricstyle_set(area
, true, true);
530 else if (strncmp(argv
[idx_metric_style
]->arg
, "n", 1) == 0)
531 isis_area_metricstyle_set(area
, true, false);
537 DEFUN (no_metric_style
,
541 "Use old-style (ISO 10589) or new-style packet formats\n")
543 VTY_DECLVAR_CONTEXT(isis_area
, area
);
546 if (area_is_mt(area
)) {
548 "Narrow metrics cannot be used while multi topology IS-IS is active\n");
549 return CMD_WARNING_CONFIG_FAILED
;
552 ret
= validate_metric_style_narrow(vty
, area
);
553 if (ret
!= CMD_SUCCESS
)
556 isis_area_metricstyle_set(area
, true, false);
560 DEFUN (lsp_gen_interval_level
,
561 lsp_gen_interval_level_cmd
,
562 "lsp-gen-interval <level-1|level-2> (1-120)",
563 "Minimum interval between regenerating same LSP\n"
564 "Set interval for level 1 only\n"
565 "Set interval for level 2 only\n"
566 "Minimum interval in seconds\n")
568 uint16_t interval
= atoi(argv
[2]->arg
);
570 return isis_vty_lsp_gen_interval_set(vty
, level_for_arg(argv
[1]->text
),
574 DEFUN (no_lsp_gen_interval_level
,
575 no_lsp_gen_interval_level_cmd
,
576 "no lsp-gen-interval <level-1|level-2> [(1-120)]",
578 "Minimum interval between regenerating same LSP\n"
579 "Set interval for level 1 only\n"
580 "Set interval for level 2 only\n"
581 "Minimum interval in seconds\n")
583 VTY_DECLVAR_CONTEXT(isis_area
, area
);
585 return isis_vty_lsp_gen_interval_set(vty
, level_for_arg(argv
[2]->text
),
586 DEFAULT_MIN_LSP_GEN_INTERVAL
);
589 DEFUN (max_lsp_lifetime_level
,
590 max_lsp_lifetime_level_cmd
,
591 "max-lsp-lifetime <level-1|level-2> (350-65535)",
592 "Maximum LSP lifetime\n"
593 "Maximum LSP lifetime for Level 1 only\n"
594 "Maximum LSP lifetime for Level 2 only\n"
595 "LSP lifetime in seconds\n")
597 uint16_t lifetime
= atoi(argv
[2]->arg
);
599 return isis_vty_max_lsp_lifetime_set(vty
, level_for_arg(argv
[1]->text
),
603 DEFUN (no_max_lsp_lifetime_level
,
604 no_max_lsp_lifetime_level_cmd
,
605 "no max-lsp-lifetime <level-1|level-2> [(350-65535)]",
607 "Maximum LSP lifetime\n"
608 "Maximum LSP lifetime for Level 1 only\n"
609 "Maximum LSP lifetime for Level 2 only\n"
610 "LSP lifetime in seconds\n")
612 return isis_vty_max_lsp_lifetime_set(vty
, level_for_arg(argv
[1]->text
),
613 DEFAULT_LSP_LIFETIME
);
616 DEFUN (spf_interval_level
,
617 spf_interval_level_cmd
,
618 "spf-interval <level-1|level-2> (1-120)",
619 "Minimum interval between SPF calculations\n"
620 "Set interval for level 1 only\n"
621 "Set interval for level 2 only\n"
622 "Minimum interval between consecutive SPFs in seconds\n")
624 VTY_DECLVAR_CONTEXT(isis_area
, area
);
625 uint16_t interval
= atoi(argv
[2]->arg
);
627 area
->min_spf_interval
[level_for_arg(argv
[1]->text
)] = interval
;
632 DEFUN (no_spf_interval_level
,
633 no_spf_interval_level_cmd
,
634 "no spf-interval <level-1|level-2> [(1-120)]",
636 "Minimum interval between SPF calculations\n"
637 "Set interval for level 1 only\n"
638 "Set interval for level 2 only\n"
639 "Minimum interval between consecutive SPFs in seconds\n")
641 VTY_DECLVAR_CONTEXT(isis_area
, area
);
642 int level
= level_for_arg(argv
[1]->text
);
644 area
->min_spf_interval
[level
] = MINIMUM_SPF_INTERVAL
;
649 DEFUN (lsp_refresh_interval_level
,
650 lsp_refresh_interval_level_cmd
,
651 "lsp-refresh-interval <level-1|level-2> (1-65235)",
652 "LSP refresh interval\n"
653 "LSP refresh interval for Level 1 only\n"
654 "LSP refresh interval for Level 2 only\n"
655 "LSP refresh interval in seconds\n")
657 uint16_t interval
= atoi(argv
[2]->arg
);
658 return isis_vty_lsp_refresh_set(vty
, level_for_arg(argv
[1]->text
),
662 DEFUN (no_lsp_refresh_interval_level
,
663 no_lsp_refresh_interval_level_cmd
,
664 "no lsp-refresh-interval <level-1|level-2> [(1-65235)]",
666 "LSP refresh interval\n"
667 "LSP refresh interval for Level 1 only\n"
668 "LSP refresh interval for Level 2 only\n"
669 "LSP refresh interval in seconds\n")
671 return isis_vty_lsp_refresh_set(vty
, level_for_arg(argv
[2]->text
),
672 DEFAULT_MAX_LSP_GEN_INTERVAL
);
677 "area-password <clear|md5> WORD [authenticate snp <send-only|validate>]",
678 "Configure the authentication password for an area\n"
679 "Authentication type\n"
680 "Authentication type\n"
684 "Send but do not check PDUs on receiving\n"
685 "Send and check PDUs on receiving\n")
687 return isis_vty_password_set(vty
, argc
, argv
, IS_LEVEL_1
);
690 DEFUN (no_area_passwd
,
694 "Configure the authentication password for an area\n")
696 VTY_DECLVAR_CONTEXT(isis_area
, area
);
698 return isis_area_passwd_unset(area
, IS_LEVEL_1
);
701 void isis_vty_daemon_init(void)
703 install_element(INTERFACE_NODE
, &isis_circuit_type_cmd
);
704 install_element(INTERFACE_NODE
, &no_isis_circuit_type_cmd
);
706 install_element(INTERFACE_NODE
, &isis_network_cmd
);
707 install_element(INTERFACE_NODE
, &no_isis_network_cmd
);
709 install_element(INTERFACE_NODE
, &isis_priority_cmd
);
710 install_element(INTERFACE_NODE
, &no_isis_priority_cmd
);
711 install_element(INTERFACE_NODE
, &isis_priority_level_cmd
);
712 install_element(INTERFACE_NODE
, &no_isis_priority_level_cmd
);
714 install_element(INTERFACE_NODE
, &isis_metric_level_cmd
);
715 install_element(INTERFACE_NODE
, &no_isis_metric_level_cmd
);
717 install_element(INTERFACE_NODE
, &isis_hello_interval_level_cmd
);
718 install_element(INTERFACE_NODE
, &no_isis_hello_interval_level_cmd
);
720 install_element(INTERFACE_NODE
, &isis_hello_multiplier_level_cmd
);
721 install_element(INTERFACE_NODE
, &no_isis_hello_multiplier_level_cmd
);
723 install_element(INTERFACE_NODE
, &isis_threeway_adj_cmd
);
725 install_element(INTERFACE_NODE
, &isis_hello_padding_cmd
);
726 install_element(INTERFACE_NODE
, &no_isis_hello_padding_cmd
);
728 install_element(INTERFACE_NODE
, &csnp_interval_level_cmd
);
729 install_element(INTERFACE_NODE
, &no_csnp_interval_level_cmd
);
731 install_element(INTERFACE_NODE
, &psnp_interval_level_cmd
);
732 install_element(INTERFACE_NODE
, &no_psnp_interval_level_cmd
);
734 install_element(ROUTER_NODE
, &metric_style_cmd
);
735 install_element(ROUTER_NODE
, &no_metric_style_cmd
);
737 install_element(ROUTER_NODE
, &lsp_gen_interval_level_cmd
);
738 install_element(ROUTER_NODE
, &no_lsp_gen_interval_level_cmd
);
740 install_element(ROUTER_NODE
, &max_lsp_lifetime_level_cmd
);
741 install_element(ROUTER_NODE
, &no_max_lsp_lifetime_level_cmd
);
743 install_element(ROUTER_NODE
, &spf_interval_level_cmd
);
744 install_element(ROUTER_NODE
, &no_spf_interval_level_cmd
);
746 install_element(ROUTER_NODE
, &lsp_refresh_interval_level_cmd
);
747 install_element(ROUTER_NODE
, &no_lsp_refresh_interval_level_cmd
);
749 install_element(ROUTER_NODE
, &area_passwd_cmd
);
750 install_element(ROUTER_NODE
, &no_area_passwd_cmd
);