2 * IS-IS Rout(e)ing protocol - isis_circuit.h
4 * Copyright (C) 2001,2002 Sampo Saaristo
5 * Tampere University of Technology
6 * Institute of Communications Engineering
7 * Copyright (C) 2016 David Lamparter, for NetDEF, Inc.
9 * This program is free software; you can redistribute it and/or modify it
10 * under the terms of the GNU General Public Licenseas published by the Free
11 * Software Foundation; either version 2 of the License, or (at your option)
14 * This program is distributed in the hope that it will be useful,but WITHOUT
15 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
19 * You should have received a copy of the GNU General Public License along
20 * with this program; if not, write to the Free Software Foundation, Inc.,
21 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 #include "isis_circuit.h"
29 #include "isis_misc.h"
32 static struct isis_circuit
*
33 isis_circuit_lookup (struct vty
*vty
)
35 struct interface
*ifp
= VTY_GET_CONTEXT(interface
);
36 struct isis_circuit
*circuit
;
40 vty_out (vty
, "Invalid interface %s", VTY_NEWLINE
);
44 circuit
= circuit_scan_by_ifp (ifp
);
47 vty_out (vty
, "ISIS is not enabled on circuit %s%s",
48 ifp
->name
, VTY_NEWLINE
);
55 DEFUN (ip_router_isis
,
57 "(ip|ipv6) router isis WORD",
58 "Interface Internet Protocol config commands\n"
59 "IP router interface commands\n"
60 "IS-IS Routing for IP\n"
61 "Routing process tag\n")
63 VTY_DECLVAR_CONTEXT (interface
, ifp
);
64 struct isis_circuit
*circuit
;
65 struct isis_area
*area
;
66 const char *af
= argv
[0];
67 const char *area_tag
= argv
[1];
69 /* Prevent more than one area per circuit */
70 circuit
= circuit_scan_by_ifp (ifp
);
71 if (circuit
&& circuit
->area
)
73 if (strcmp (circuit
->area
->area_tag
, area_tag
))
75 vty_out (vty
, "ISIS circuit is already defined on %s%s",
76 circuit
->area
->area_tag
, VTY_NEWLINE
);
77 return CMD_ERR_NOTHING_TODO
;
81 area
= isis_area_lookup (area_tag
);
83 area
= isis_area_create (area_tag
);
85 if (!circuit
|| !circuit
->area
) {
86 circuit
= isis_circuit_create (area
, ifp
);
88 if (circuit
->state
!= C_STATE_CONF
&& circuit
->state
!= C_STATE_UP
)
90 vty_out(vty
, "Couldn't bring up interface, please check log.%s", VTY_NEWLINE
);
95 bool ip
= circuit
->ip_router
, ipv6
= circuit
->ipv6_router
;
101 isis_circuit_af_set (circuit
, ip
, ipv6
);
105 DEFUN (no_ip_router_isis
,
106 no_ip_router_isis_cmd
,
107 "no (ip|ipv6) router isis WORD",
109 "Interface Internet Protocol config commands\n"
110 "IP router interface commands\n"
111 "IS-IS Routing for IP\n"
112 "Routing process tag\n")
114 VTY_DECLVAR_CONTEXT (interface
, ifp
);
115 struct isis_area
*area
;
116 struct isis_circuit
*circuit
;
117 const char *af
= argv
[0];
118 const char *area_tag
= argv
[1];
120 area
= isis_area_lookup (area_tag
);
123 vty_out (vty
, "Can't find ISIS instance %s%s",
124 argv
[0], VTY_NEWLINE
);
125 return CMD_ERR_NO_MATCH
;
128 circuit
= circuit_lookup_by_ifp (ifp
, area
->circuit_list
);
131 vty_out (vty
, "ISIS is not enabled on circuit %s%s",
132 ifp
->name
, VTY_NEWLINE
);
133 return CMD_ERR_NO_MATCH
;
136 bool ip
= circuit
->ip_router
, ipv6
= circuit
->ipv6_router
;
142 isis_circuit_af_set (circuit
, ip
, ipv6
);
150 "Configure the passive mode for interface\n")
152 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
154 return CMD_ERR_NO_MATCH
;
156 isis_circuit_passive_set (circuit
, 1);
160 DEFUN (no_isis_passive
,
165 "Configure the passive mode for interface\n")
167 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
169 return CMD_ERR_NO_MATCH
;
171 if (if_is_loopback (circuit
->interface
))
173 vty_out (vty
, "Can't set no passive for loopback interface%s",
175 return CMD_ERR_AMBIGUOUS
;
178 isis_circuit_passive_set (circuit
, 0);
182 DEFUN (isis_circuit_type
,
183 isis_circuit_type_cmd
,
184 "isis circuit-type (level-1|level-1-2|level-2-only)",
186 "Configure circuit type for interface\n"
187 "Level-1 only adjacencies are formed\n"
188 "Level-1-2 adjacencies are formed\n"
189 "Level-2 only adjacencies are formed\n")
192 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
194 return CMD_ERR_NO_MATCH
;
196 is_type
= string2circuit_t (argv
[0]);
199 vty_out (vty
, "Unknown circuit-type %s", VTY_NEWLINE
);
200 return CMD_ERR_AMBIGUOUS
;
203 if (circuit
->state
== C_STATE_UP
&&
204 circuit
->area
->is_type
!= IS_LEVEL_1_AND_2
&&
205 circuit
->area
->is_type
!= is_type
)
207 vty_out (vty
, "Invalid circuit level for area %s.%s",
208 circuit
->area
->area_tag
, VTY_NEWLINE
);
209 return CMD_ERR_AMBIGUOUS
;
211 isis_circuit_is_type_set (circuit
, is_type
);
216 DEFUN (no_isis_circuit_type
,
217 no_isis_circuit_type_cmd
,
218 "no isis circuit-type (level-1|level-1-2|level-2-only)",
221 "Configure circuit type for interface\n"
222 "Level-1 only adjacencies are formed\n"
223 "Level-1-2 adjacencies are formed\n"
224 "Level-2 only adjacencies are formed\n")
227 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
229 return CMD_ERR_NO_MATCH
;
232 * Set the circuits level to its default value
234 if (circuit
->state
== C_STATE_UP
)
235 is_type
= circuit
->area
->is_type
;
237 is_type
= IS_LEVEL_1_AND_2
;
238 isis_circuit_is_type_set (circuit
, is_type
);
245 "isis network point-to-point",
248 "point-to-point network type\n")
250 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
252 return CMD_ERR_NO_MATCH
;
254 if (isis_circuit_circ_type_set(circuit
, CIRCUIT_T_P2P
))
256 vty_out (vty
, "isis network point-to-point "
257 "is valid only on broadcast interfaces%s",
259 return CMD_ERR_AMBIGUOUS
;
265 DEFUN (no_isis_network
,
267 "no isis network point-to-point",
270 "Set network type for circuit\n"
271 "point-to-point network type\n")
273 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
275 return CMD_ERR_NO_MATCH
;
277 if (isis_circuit_circ_type_set(circuit
, CIRCUIT_T_BROADCAST
))
279 vty_out (vty
, "isis network point-to-point "
280 "is valid only on broadcast interfaces%s",
282 return CMD_ERR_AMBIGUOUS
;
290 "isis password (md5|clear) WORD",
292 "Configure the authentication password for a circuit\n"
293 "HMAC-MD5 authentication\n"
294 "Cleartext password\n"
295 "Circuit password\n")
297 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
300 return CMD_ERR_NO_MATCH
;
302 if (argv
[0][0] == 'm')
303 rv
= isis_circuit_passwd_hmac_md5_set(circuit
, argv
[1]);
305 rv
= isis_circuit_passwd_cleartext_set(circuit
, argv
[1]);
308 vty_out (vty
, "Too long circuit password (>254)%s", VTY_NEWLINE
);
309 return CMD_ERR_AMBIGUOUS
;
315 DEFUN (no_isis_passwd
,
320 "Configure the authentication password for a circuit\n")
322 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
324 return CMD_ERR_NO_MATCH
;
326 isis_circuit_passwd_unset(circuit
);
331 ALIAS (no_isis_passwd
,
332 no_isis_passwd_arg_cmd
,
333 "no isis password (md5|clear) WORD",
336 "Configure the authentication password for a circuit\n"
337 "HMAC-MD5 authentication\n"
338 "Cleartext password\n"
339 "Circuit password\n")
341 DEFUN (isis_priority
,
343 "isis priority <0-127>",
345 "Set priority for Designated Router election\n"
349 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
351 return CMD_ERR_NO_MATCH
;
353 prio
= atoi (argv
[0]);
354 if (prio
< MIN_PRIORITY
|| prio
> MAX_PRIORITY
)
356 vty_out (vty
, "Invalid priority %d - should be <0-127>%s",
358 return CMD_ERR_AMBIGUOUS
;
361 circuit
->priority
[0] = prio
;
362 circuit
->priority
[1] = prio
;
367 DEFUN (no_isis_priority
,
368 no_isis_priority_cmd
,
372 "Set priority for Designated Router election\n")
374 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
376 return CMD_ERR_NO_MATCH
;
378 circuit
->priority
[0] = DEFAULT_PRIORITY
;
379 circuit
->priority
[1] = DEFAULT_PRIORITY
;
384 ALIAS (no_isis_priority
,
385 no_isis_priority_arg_cmd
,
386 "no isis priority <0-127>",
389 "Set priority for Designated Router election\n"
392 DEFUN (isis_priority_l1
,
393 isis_priority_l1_cmd
,
394 "isis priority <0-127> level-1",
396 "Set priority for Designated Router election\n"
398 "Specify priority for level-1 routing\n")
401 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
403 return CMD_ERR_NO_MATCH
;
405 prio
= atoi (argv
[0]);
406 if (prio
< MIN_PRIORITY
|| prio
> MAX_PRIORITY
)
408 vty_out (vty
, "Invalid priority %d - should be <0-127>%s",
410 return CMD_ERR_AMBIGUOUS
;
413 circuit
->priority
[0] = prio
;
418 DEFUN (no_isis_priority_l1
,
419 no_isis_priority_l1_cmd
,
420 "no isis priority level-1",
423 "Set priority for Designated Router election\n"
424 "Specify priority for level-1 routing\n")
426 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
428 return CMD_ERR_NO_MATCH
;
430 circuit
->priority
[0] = DEFAULT_PRIORITY
;
435 ALIAS (no_isis_priority_l1
,
436 no_isis_priority_l1_arg_cmd
,
437 "no isis priority <0-127> level-1",
440 "Set priority for Designated Router election\n"
442 "Specify priority for level-1 routing\n")
444 DEFUN (isis_priority_l2
,
445 isis_priority_l2_cmd
,
446 "isis priority <0-127> level-2",
448 "Set priority for Designated Router election\n"
450 "Specify priority for level-2 routing\n")
453 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
455 return CMD_ERR_NO_MATCH
;
457 prio
= atoi (argv
[0]);
458 if (prio
< MIN_PRIORITY
|| prio
> MAX_PRIORITY
)
460 vty_out (vty
, "Invalid priority %d - should be <0-127>%s",
462 return CMD_ERR_AMBIGUOUS
;
465 circuit
->priority
[1] = prio
;
470 DEFUN (no_isis_priority_l2
,
471 no_isis_priority_l2_cmd
,
472 "no isis priority level-2",
475 "Set priority for Designated Router election\n"
476 "Specify priority for level-2 routing\n")
478 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
480 return CMD_ERR_NO_MATCH
;
482 circuit
->priority
[1] = DEFAULT_PRIORITY
;
487 ALIAS (no_isis_priority_l2
,
488 no_isis_priority_l2_arg_cmd
,
489 "no isis priority <0-127> level-2",
492 "Set priority for Designated Router election\n"
494 "Specify priority for level-2 routing\n")
499 "isis metric <0-16777215>",
501 "Set default metric for circuit\n"
502 "Default metric value\n")
505 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
507 return CMD_ERR_NO_MATCH
;
509 met
= atoi (argv
[0]);
511 /* RFC3787 section 5.1 */
512 if (circuit
->area
&& circuit
->area
->oldmetric
== 1 &&
513 met
> MAX_NARROW_LINK_METRIC
)
515 vty_out (vty
, "Invalid metric %d - should be <0-63> "
516 "when narrow metric type enabled%s",
518 return CMD_ERR_AMBIGUOUS
;
522 if (circuit
->area
&& circuit
->area
->newmetric
== 1 &&
523 met
> MAX_WIDE_LINK_METRIC
)
525 vty_out (vty
, "Invalid metric %d - should be <0-16777215> "
526 "when wide metric type enabled%s",
528 return CMD_ERR_AMBIGUOUS
;
531 isis_circuit_metric_set (circuit
, IS_LEVEL_1
, met
);
532 isis_circuit_metric_set (circuit
, IS_LEVEL_2
, met
);
536 DEFUN (no_isis_metric
,
541 "Set default metric for circuit\n")
543 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
545 return CMD_ERR_NO_MATCH
;
547 isis_circuit_metric_set (circuit
, IS_LEVEL_1
, DEFAULT_CIRCUIT_METRIC
);
548 isis_circuit_metric_set (circuit
, IS_LEVEL_2
, DEFAULT_CIRCUIT_METRIC
);
552 ALIAS (no_isis_metric
,
553 no_isis_metric_arg_cmd
,
554 "no isis metric <0-16777215>",
557 "Set default metric for circuit\n"
558 "Default metric value\n")
560 DEFUN (isis_metric_l1
,
562 "isis metric <0-16777215> level-1",
564 "Set default metric for circuit\n"
565 "Default metric value\n"
566 "Specify metric for level-1 routing\n")
569 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
571 return CMD_ERR_NO_MATCH
;
573 met
= atoi (argv
[0]);
575 /* RFC3787 section 5.1 */
576 if (circuit
->area
&& circuit
->area
->oldmetric
== 1 &&
577 met
> MAX_NARROW_LINK_METRIC
)
579 vty_out (vty
, "Invalid metric %d - should be <0-63> "
580 "when narrow metric type enabled%s",
582 return CMD_ERR_AMBIGUOUS
;
586 if (circuit
->area
&& circuit
->area
->newmetric
== 1 &&
587 met
> MAX_WIDE_LINK_METRIC
)
589 vty_out (vty
, "Invalid metric %d - should be <0-16777215> "
590 "when wide metric type enabled%s",
592 return CMD_ERR_AMBIGUOUS
;
595 isis_circuit_metric_set (circuit
, IS_LEVEL_1
, met
);
599 DEFUN (no_isis_metric_l1
,
600 no_isis_metric_l1_cmd
,
601 "no isis metric level-1",
604 "Set default metric for circuit\n"
605 "Specify metric for level-1 routing\n")
607 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
609 return CMD_ERR_NO_MATCH
;
611 isis_circuit_metric_set (circuit
, IS_LEVEL_1
, DEFAULT_CIRCUIT_METRIC
);
615 ALIAS (no_isis_metric_l1
,
616 no_isis_metric_l1_arg_cmd
,
617 "no isis metric <0-16777215> level-1",
620 "Set default metric for circuit\n"
621 "Default metric value\n"
622 "Specify metric for level-1 routing\n")
624 DEFUN (isis_metric_l2
,
626 "isis metric <0-16777215> level-2",
628 "Set default metric for circuit\n"
629 "Default metric value\n"
630 "Specify metric for level-2 routing\n")
633 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
635 return CMD_ERR_NO_MATCH
;
637 met
= atoi (argv
[0]);
639 /* RFC3787 section 5.1 */
640 if (circuit
->area
&& circuit
->area
->oldmetric
== 1 &&
641 met
> MAX_NARROW_LINK_METRIC
)
643 vty_out (vty
, "Invalid metric %d - should be <0-63> "
644 "when narrow metric type enabled%s",
646 return CMD_ERR_AMBIGUOUS
;
650 if (circuit
->area
&& circuit
->area
->newmetric
== 1 &&
651 met
> MAX_WIDE_LINK_METRIC
)
653 vty_out (vty
, "Invalid metric %d - should be <0-16777215> "
654 "when wide metric type enabled%s",
656 return CMD_ERR_AMBIGUOUS
;
659 isis_circuit_metric_set (circuit
, IS_LEVEL_2
, met
);
663 DEFUN (no_isis_metric_l2
,
664 no_isis_metric_l2_cmd
,
665 "no isis metric level-2",
668 "Set default metric for circuit\n"
669 "Specify metric for level-2 routing\n")
671 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
673 return CMD_ERR_NO_MATCH
;
675 isis_circuit_metric_set (circuit
, IS_LEVEL_2
, DEFAULT_CIRCUIT_METRIC
);
679 ALIAS (no_isis_metric_l2
,
680 no_isis_metric_l2_arg_cmd
,
681 "no isis metric <0-16777215> level-2",
684 "Set default metric for circuit\n"
685 "Default metric value\n"
686 "Specify metric for level-2 routing\n")
689 DEFUN (isis_hello_interval
,
690 isis_hello_interval_cmd
,
691 "isis hello-interval <1-600>",
693 "Set Hello interval\n"
694 "Hello interval value\n"
695 "Holdtime 1 seconds, interval depends on multiplier\n")
698 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
700 return CMD_ERR_NO_MATCH
;
702 interval
= atoi (argv
[0]);
703 if (interval
< MIN_HELLO_INTERVAL
|| interval
> MAX_HELLO_INTERVAL
)
705 vty_out (vty
, "Invalid hello-interval %d - should be <1-600>%s",
706 interval
, VTY_NEWLINE
);
707 return CMD_ERR_AMBIGUOUS
;
710 circuit
->hello_interval
[0] = (u_int16_t
) interval
;
711 circuit
->hello_interval
[1] = (u_int16_t
) interval
;
716 DEFUN (no_isis_hello_interval
,
717 no_isis_hello_interval_cmd
,
718 "no isis hello-interval",
721 "Set Hello interval\n")
723 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
725 return CMD_ERR_NO_MATCH
;
727 circuit
->hello_interval
[0] = DEFAULT_HELLO_INTERVAL
;
728 circuit
->hello_interval
[1] = DEFAULT_HELLO_INTERVAL
;
733 ALIAS (no_isis_hello_interval
,
734 no_isis_hello_interval_arg_cmd
,
735 "no isis hello-interval <1-600>",
738 "Set Hello interval\n"
739 "Hello interval value\n"
740 "Holdtime 1 second, interval depends on multiplier\n")
742 DEFUN (isis_hello_interval_l1
,
743 isis_hello_interval_l1_cmd
,
744 "isis hello-interval <1-600> level-1",
746 "Set Hello interval\n"
747 "Hello interval value\n"
748 "Holdtime 1 second, interval depends on multiplier\n"
749 "Specify hello-interval for level-1 IIHs\n")
752 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
754 return CMD_ERR_NO_MATCH
;
756 interval
= atoi (argv
[0]);
757 if (interval
< MIN_HELLO_INTERVAL
|| interval
> MAX_HELLO_INTERVAL
)
759 vty_out (vty
, "Invalid hello-interval %ld - should be <1-600>%s",
760 interval
, VTY_NEWLINE
);
761 return CMD_ERR_AMBIGUOUS
;
764 circuit
->hello_interval
[0] = (u_int16_t
) interval
;
769 DEFUN (no_isis_hello_interval_l1
,
770 no_isis_hello_interval_l1_cmd
,
771 "no isis hello-interval level-1",
774 "Set Hello interval\n"
775 "Specify hello-interval for level-1 IIHs\n")
777 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
779 return CMD_ERR_NO_MATCH
;
781 circuit
->hello_interval
[0] = DEFAULT_HELLO_INTERVAL
;
786 ALIAS (no_isis_hello_interval_l1
,
787 no_isis_hello_interval_l1_arg_cmd
,
788 "no isis hello-interval <1-600> level-1",
791 "Set Hello interval\n"
792 "Hello interval value\n"
793 "Holdtime 1 second, interval depends on multiplier\n"
794 "Specify hello-interval for level-1 IIHs\n")
796 DEFUN (isis_hello_interval_l2
,
797 isis_hello_interval_l2_cmd
,
798 "isis hello-interval <1-600> level-2",
800 "Set Hello interval\n"
801 "Hello interval value\n"
802 "Holdtime 1 second, interval depends on multiplier\n"
803 "Specify hello-interval for level-2 IIHs\n")
806 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
808 return CMD_ERR_NO_MATCH
;
810 interval
= atoi (argv
[0]);
811 if (interval
< MIN_HELLO_INTERVAL
|| interval
> MAX_HELLO_INTERVAL
)
813 vty_out (vty
, "Invalid hello-interval %ld - should be <1-600>%s",
814 interval
, VTY_NEWLINE
);
815 return CMD_ERR_AMBIGUOUS
;
818 circuit
->hello_interval
[1] = (u_int16_t
) interval
;
823 DEFUN (no_isis_hello_interval_l2
,
824 no_isis_hello_interval_l2_cmd
,
825 "no isis hello-interval level-2",
828 "Set Hello interval\n"
829 "Specify hello-interval for level-2 IIHs\n")
831 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
833 return CMD_ERR_NO_MATCH
;
835 circuit
->hello_interval
[1] = DEFAULT_HELLO_INTERVAL
;
840 ALIAS (no_isis_hello_interval_l2
,
841 no_isis_hello_interval_l2_arg_cmd
,
842 "no isis hello-interval <1-600> level-2",
845 "Set Hello interval\n"
846 "Hello interval value\n"
847 "Holdtime 1 second, interval depends on multiplier\n"
848 "Specify hello-interval for level-2 IIHs\n")
850 DEFUN (isis_hello_multiplier
,
851 isis_hello_multiplier_cmd
,
852 "isis hello-multiplier <2-100>",
854 "Set multiplier for Hello holding time\n"
855 "Hello multiplier value\n")
858 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
860 return CMD_ERR_NO_MATCH
;
862 mult
= atoi (argv
[0]);
863 if (mult
< MIN_HELLO_MULTIPLIER
|| mult
> MAX_HELLO_MULTIPLIER
)
865 vty_out (vty
, "Invalid hello-multiplier %d - should be <2-100>%s",
867 return CMD_ERR_AMBIGUOUS
;
870 circuit
->hello_multiplier
[0] = (u_int16_t
) mult
;
871 circuit
->hello_multiplier
[1] = (u_int16_t
) mult
;
876 DEFUN (no_isis_hello_multiplier
,
877 no_isis_hello_multiplier_cmd
,
878 "no isis hello-multiplier",
881 "Set multiplier for Hello holding time\n")
883 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
885 return CMD_ERR_NO_MATCH
;
887 circuit
->hello_multiplier
[0] = DEFAULT_HELLO_MULTIPLIER
;
888 circuit
->hello_multiplier
[1] = DEFAULT_HELLO_MULTIPLIER
;
893 ALIAS (no_isis_hello_multiplier
,
894 no_isis_hello_multiplier_arg_cmd
,
895 "no isis hello-multiplier <2-100>",
898 "Set multiplier for Hello holding time\n"
899 "Hello multiplier value\n")
901 DEFUN (isis_hello_multiplier_l1
,
902 isis_hello_multiplier_l1_cmd
,
903 "isis hello-multiplier <2-100> level-1",
905 "Set multiplier for Hello holding time\n"
906 "Hello multiplier value\n"
907 "Specify hello multiplier for level-1 IIHs\n")
910 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
912 return CMD_ERR_NO_MATCH
;
914 mult
= atoi (argv
[0]);
915 if (mult
< MIN_HELLO_MULTIPLIER
|| mult
> MAX_HELLO_MULTIPLIER
)
917 vty_out (vty
, "Invalid hello-multiplier %d - should be <2-100>%s",
919 return CMD_ERR_AMBIGUOUS
;
922 circuit
->hello_multiplier
[0] = (u_int16_t
) mult
;
927 DEFUN (no_isis_hello_multiplier_l1
,
928 no_isis_hello_multiplier_l1_cmd
,
929 "no isis hello-multiplier level-1",
932 "Set multiplier for Hello holding time\n"
933 "Specify hello multiplier for level-1 IIHs\n")
935 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
937 return CMD_ERR_NO_MATCH
;
939 circuit
->hello_multiplier
[0] = DEFAULT_HELLO_MULTIPLIER
;
944 ALIAS (no_isis_hello_multiplier_l1
,
945 no_isis_hello_multiplier_l1_arg_cmd
,
946 "no isis hello-multiplier <2-100> level-1",
949 "Set multiplier for Hello holding time\n"
950 "Hello multiplier value\n"
951 "Specify hello multiplier for level-1 IIHs\n")
953 DEFUN (isis_hello_multiplier_l2
,
954 isis_hello_multiplier_l2_cmd
,
955 "isis hello-multiplier <2-100> level-2",
957 "Set multiplier for Hello holding time\n"
958 "Hello multiplier value\n"
959 "Specify hello multiplier for level-2 IIHs\n")
962 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
964 return CMD_ERR_NO_MATCH
;
966 mult
= atoi (argv
[0]);
967 if (mult
< MIN_HELLO_MULTIPLIER
|| mult
> MAX_HELLO_MULTIPLIER
)
969 vty_out (vty
, "Invalid hello-multiplier %d - should be <2-100>%s",
971 return CMD_ERR_AMBIGUOUS
;
974 circuit
->hello_multiplier
[1] = (u_int16_t
) mult
;
979 DEFUN (no_isis_hello_multiplier_l2
,
980 no_isis_hello_multiplier_l2_cmd
,
981 "no isis hello-multiplier level-2",
984 "Set multiplier for Hello holding time\n"
985 "Specify hello multiplier for level-2 IIHs\n")
987 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
989 return CMD_ERR_NO_MATCH
;
991 circuit
->hello_multiplier
[1] = DEFAULT_HELLO_MULTIPLIER
;
996 ALIAS (no_isis_hello_multiplier_l2
,
997 no_isis_hello_multiplier_l2_arg_cmd
,
998 "no isis hello-multiplier <2-100> level-2",
1001 "Set multiplier for Hello holding time\n"
1002 "Hello multiplier value\n"
1003 "Specify hello multiplier for level-2 IIHs\n")
1005 DEFUN (isis_hello_padding
,
1006 isis_hello_padding_cmd
,
1007 "isis hello padding",
1009 "Add padding to IS-IS hello packets\n"
1010 "Pad hello packets\n"
1013 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1015 return CMD_ERR_NO_MATCH
;
1017 circuit
->pad_hellos
= 1;
1022 DEFUN (no_isis_hello_padding
,
1023 no_isis_hello_padding_cmd
,
1024 "no isis hello padding",
1027 "Add padding to IS-IS hello packets\n"
1028 "Pad hello packets\n"
1031 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1033 return CMD_ERR_NO_MATCH
;
1035 circuit
->pad_hellos
= 0;
1040 DEFUN (csnp_interval
,
1042 "isis csnp-interval <1-600>",
1044 "Set CSNP interval in seconds\n"
1045 "CSNP interval value\n")
1047 unsigned long interval
;
1048 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1050 return CMD_ERR_NO_MATCH
;
1052 interval
= atol (argv
[0]);
1053 if (interval
< MIN_CSNP_INTERVAL
|| interval
> MAX_CSNP_INTERVAL
)
1055 vty_out (vty
, "Invalid csnp-interval %lu - should be <1-600>%s",
1056 interval
, VTY_NEWLINE
);
1057 return CMD_ERR_AMBIGUOUS
;
1060 circuit
->csnp_interval
[0] = (u_int16_t
) interval
;
1061 circuit
->csnp_interval
[1] = (u_int16_t
) interval
;
1066 DEFUN (no_csnp_interval
,
1067 no_csnp_interval_cmd
,
1068 "no isis csnp-interval",
1071 "Set CSNP interval in seconds\n")
1073 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1075 return CMD_ERR_NO_MATCH
;
1077 circuit
->csnp_interval
[0] = DEFAULT_CSNP_INTERVAL
;
1078 circuit
->csnp_interval
[1] = DEFAULT_CSNP_INTERVAL
;
1083 ALIAS (no_csnp_interval
,
1084 no_csnp_interval_arg_cmd
,
1085 "no isis csnp-interval <1-600>",
1088 "Set CSNP interval in seconds\n"
1089 "CSNP interval value\n")
1091 DEFUN (csnp_interval_l1
,
1092 csnp_interval_l1_cmd
,
1093 "isis csnp-interval <1-600> level-1",
1095 "Set CSNP interval in seconds\n"
1096 "CSNP interval value\n"
1097 "Specify interval for level-1 CSNPs\n")
1099 unsigned long interval
;
1100 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1102 return CMD_ERR_NO_MATCH
;
1104 interval
= atol (argv
[0]);
1105 if (interval
< MIN_CSNP_INTERVAL
|| interval
> MAX_CSNP_INTERVAL
)
1107 vty_out (vty
, "Invalid csnp-interval %lu - should be <1-600>%s",
1108 interval
, VTY_NEWLINE
);
1109 return CMD_ERR_AMBIGUOUS
;
1112 circuit
->csnp_interval
[0] = (u_int16_t
) interval
;
1117 DEFUN (no_csnp_interval_l1
,
1118 no_csnp_interval_l1_cmd
,
1119 "no isis csnp-interval level-1",
1122 "Set CSNP interval in seconds\n"
1123 "Specify interval for level-1 CSNPs\n")
1125 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1127 return CMD_ERR_NO_MATCH
;
1129 circuit
->csnp_interval
[0] = DEFAULT_CSNP_INTERVAL
;
1134 ALIAS (no_csnp_interval_l1
,
1135 no_csnp_interval_l1_arg_cmd
,
1136 "no isis csnp-interval <1-600> level-1",
1139 "Set CSNP interval in seconds\n"
1140 "CSNP interval value\n"
1141 "Specify interval for level-1 CSNPs\n")
1143 DEFUN (csnp_interval_l2
,
1144 csnp_interval_l2_cmd
,
1145 "isis csnp-interval <1-600> level-2",
1147 "Set CSNP interval in seconds\n"
1148 "CSNP interval value\n"
1149 "Specify interval for level-2 CSNPs\n")
1151 unsigned long interval
;
1152 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1154 return CMD_ERR_NO_MATCH
;
1156 interval
= atol (argv
[0]);
1157 if (interval
< MIN_CSNP_INTERVAL
|| interval
> MAX_CSNP_INTERVAL
)
1159 vty_out (vty
, "Invalid csnp-interval %lu - should be <1-600>%s",
1160 interval
, VTY_NEWLINE
);
1161 return CMD_ERR_AMBIGUOUS
;
1164 circuit
->csnp_interval
[1] = (u_int16_t
) interval
;
1169 DEFUN (no_csnp_interval_l2
,
1170 no_csnp_interval_l2_cmd
,
1171 "no isis csnp-interval level-2",
1174 "Set CSNP interval in seconds\n"
1175 "Specify interval for level-2 CSNPs\n")
1177 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1179 return CMD_ERR_NO_MATCH
;
1181 circuit
->csnp_interval
[1] = DEFAULT_CSNP_INTERVAL
;
1186 ALIAS (no_csnp_interval_l2
,
1187 no_csnp_interval_l2_arg_cmd
,
1188 "no isis csnp-interval <1-600> level-2",
1191 "Set CSNP interval in seconds\n"
1192 "CSNP interval value\n"
1193 "Specify interval for level-2 CSNPs\n")
1195 DEFUN (psnp_interval
,
1197 "isis psnp-interval <1-120>",
1199 "Set PSNP interval in seconds\n"
1200 "PSNP interval value\n")
1202 unsigned long interval
;
1203 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1205 return CMD_ERR_NO_MATCH
;
1207 interval
= atol (argv
[0]);
1208 if (interval
< MIN_PSNP_INTERVAL
|| interval
> MAX_PSNP_INTERVAL
)
1210 vty_out (vty
, "Invalid psnp-interval %lu - should be <1-120>%s",
1211 interval
, VTY_NEWLINE
);
1212 return CMD_ERR_AMBIGUOUS
;
1215 circuit
->psnp_interval
[0] = (u_int16_t
) interval
;
1216 circuit
->psnp_interval
[1] = (u_int16_t
) interval
;
1221 DEFUN (no_psnp_interval
,
1222 no_psnp_interval_cmd
,
1223 "no isis psnp-interval",
1226 "Set PSNP interval in seconds\n")
1228 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1230 return CMD_ERR_NO_MATCH
;
1232 circuit
->psnp_interval
[0] = DEFAULT_PSNP_INTERVAL
;
1233 circuit
->psnp_interval
[1] = DEFAULT_PSNP_INTERVAL
;
1238 ALIAS (no_psnp_interval
,
1239 no_psnp_interval_arg_cmd
,
1240 "no isis psnp-interval <1-120>",
1243 "Set PSNP interval in seconds\n"
1244 "PSNP interval value\n")
1246 DEFUN (psnp_interval_l1
,
1247 psnp_interval_l1_cmd
,
1248 "isis psnp-interval <1-120> level-1",
1250 "Set PSNP interval in seconds\n"
1251 "PSNP interval value\n"
1252 "Specify interval for level-1 PSNPs\n")
1254 unsigned long interval
;
1255 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1257 return CMD_ERR_NO_MATCH
;
1259 interval
= atol (argv
[0]);
1260 if (interval
< MIN_PSNP_INTERVAL
|| interval
> MAX_PSNP_INTERVAL
)
1262 vty_out (vty
, "Invalid psnp-interval %lu - should be <1-120>%s",
1263 interval
, VTY_NEWLINE
);
1264 return CMD_ERR_AMBIGUOUS
;
1267 circuit
->psnp_interval
[0] = (u_int16_t
) interval
;
1272 DEFUN (no_psnp_interval_l1
,
1273 no_psnp_interval_l1_cmd
,
1274 "no isis psnp-interval level-1",
1277 "Set PSNP interval in seconds\n"
1278 "Specify interval for level-1 PSNPs\n")
1280 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1282 return CMD_ERR_NO_MATCH
;
1284 circuit
->psnp_interval
[0] = DEFAULT_PSNP_INTERVAL
;
1289 ALIAS (no_psnp_interval_l1
,
1290 no_psnp_interval_l1_arg_cmd
,
1291 "no isis psnp-interval <1-120> level-1",
1294 "Set PSNP interval in seconds\n"
1295 "PSNP interval value\n"
1296 "Specify interval for level-1 PSNPs\n")
1298 DEFUN (psnp_interval_l2
,
1299 psnp_interval_l2_cmd
,
1300 "isis psnp-interval <1-120> level-2",
1302 "Set PSNP interval in seconds\n"
1303 "PSNP interval value\n"
1304 "Specify interval for level-2 PSNPs\n")
1306 unsigned long interval
;
1307 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1309 return CMD_ERR_NO_MATCH
;
1311 interval
= atol (argv
[0]);
1312 if (interval
< MIN_PSNP_INTERVAL
|| interval
> MAX_PSNP_INTERVAL
)
1314 vty_out (vty
, "Invalid psnp-interval %lu - should be <1-120>%s",
1315 interval
, VTY_NEWLINE
);
1316 return CMD_ERR_AMBIGUOUS
;
1319 circuit
->psnp_interval
[1] = (u_int16_t
) interval
;
1324 DEFUN (no_psnp_interval_l2
,
1325 no_psnp_interval_l2_cmd
,
1326 "no isis psnp-interval level-2",
1329 "Set PSNP interval in seconds\n"
1330 "Specify interval for level-2 PSNPs\n")
1332 struct isis_circuit
*circuit
= isis_circuit_lookup (vty
);
1334 return CMD_ERR_NO_MATCH
;
1336 circuit
->psnp_interval
[1] = DEFAULT_PSNP_INTERVAL
;
1341 ALIAS (no_psnp_interval_l2
,
1342 no_psnp_interval_l2_arg_cmd
,
1343 "no isis psnp-interval <1-120> level-2",
1346 "Set PSNP interval in seconds\n"
1347 "PSNP interval value\n"
1348 "Specify interval for level-2 PSNPs\n")
1351 validate_metric_style_narrow (struct vty
*vty
, struct isis_area
*area
)
1353 struct isis_circuit
*circuit
;
1354 struct listnode
*node
;
1357 return CMD_ERR_AMBIGUOUS
;
1361 vty_out (vty
, "ISIS area is invalid%s", VTY_NEWLINE
);
1362 return CMD_ERR_AMBIGUOUS
;
1365 for (ALL_LIST_ELEMENTS_RO (area
->circuit_list
, node
, circuit
))
1367 if ((area
->is_type
& IS_LEVEL_1
) &&
1368 (circuit
->is_type
& IS_LEVEL_1
) &&
1369 (circuit
->te_metric
[0] > MAX_NARROW_LINK_METRIC
))
1371 vty_out (vty
, "ISIS circuit %s metric is invalid%s",
1372 circuit
->interface
->name
, VTY_NEWLINE
);
1373 return CMD_ERR_AMBIGUOUS
;
1375 if ((area
->is_type
& IS_LEVEL_2
) &&
1376 (circuit
->is_type
& IS_LEVEL_2
) &&
1377 (circuit
->te_metric
[1] > MAX_NARROW_LINK_METRIC
))
1379 vty_out (vty
, "ISIS circuit %s metric is invalid%s",
1380 circuit
->interface
->name
, VTY_NEWLINE
);
1381 return CMD_ERR_AMBIGUOUS
;
1388 DEFUN (metric_style
,
1390 "metric-style (narrow|transition|wide)",
1391 "Use old-style (ISO 10589) or new-style packet formats\n"
1392 "Use old style of TLVs with narrow metric\n"
1393 "Send and accept both styles of TLVs during transition\n"
1394 "Use new style of TLVs to carry wider metric\n")
1396 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1399 if (strncmp (argv
[0], "w", 1) == 0)
1401 isis_area_metricstyle_set(area
, false, true);
1405 ret
= validate_metric_style_narrow (vty
, area
);
1406 if (ret
!= CMD_SUCCESS
)
1409 if (strncmp (argv
[0], "t", 1) == 0)
1410 isis_area_metricstyle_set(area
, true, true);
1411 else if (strncmp (argv
[0], "n", 1) == 0)
1412 isis_area_metricstyle_set(area
, true, false);
1418 DEFUN (no_metric_style
,
1419 no_metric_style_cmd
,
1422 "Use old-style (ISO 10589) or new-style packet formats\n")
1424 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1427 ret
= validate_metric_style_narrow (vty
, area
);
1428 if (ret
!= CMD_SUCCESS
)
1431 isis_area_metricstyle_set(area
, true, false);
1435 DEFUN (set_overload_bit
,
1436 set_overload_bit_cmd
,
1438 "Set overload bit to avoid any transit traffic\n"
1439 "Set overload bit\n")
1441 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1443 isis_area_overload_bit_set(area
, true);
1447 DEFUN (no_set_overload_bit
,
1448 no_set_overload_bit_cmd
,
1449 "no set-overload-bit",
1450 "Reset overload bit to accept transit traffic\n"
1451 "Reset overload bit\n")
1453 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1455 isis_area_overload_bit_set(area
, false);
1459 DEFUN (set_attached_bit
,
1460 set_attached_bit_cmd
,
1462 "Set attached bit to identify as L1/L2 router for inter-area traffic\n"
1463 "Set attached bit\n")
1465 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1467 isis_area_attached_bit_set(area
, true);
1471 DEFUN (no_set_attached_bit
,
1472 no_set_attached_bit_cmd
,
1473 "no set-attached-bit",
1474 "Reset attached bit\n")
1476 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1478 isis_area_attached_bit_set(area
, false);
1482 DEFUN (dynamic_hostname
,
1483 dynamic_hostname_cmd
,
1485 "Dynamic hostname for IS-IS\n"
1486 "Dynamic hostname\n")
1488 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1490 isis_area_dynhostname_set(area
, true);
1494 DEFUN (no_dynamic_hostname
,
1495 no_dynamic_hostname_cmd
,
1496 "no hostname dynamic",
1498 "Dynamic hostname for IS-IS\n"
1499 "Dynamic hostname\n")
1501 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1503 isis_area_dynhostname_set(area
, false);
1507 static int area_lsp_mtu_set(struct vty
*vty
, unsigned int lsp_mtu
)
1509 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1510 struct listnode
*node
;
1511 struct isis_circuit
*circuit
;
1513 for (ALL_LIST_ELEMENTS_RO(area
->circuit_list
, node
, circuit
))
1515 if(circuit
->state
!= C_STATE_INIT
&& circuit
->state
!= C_STATE_UP
)
1517 if(lsp_mtu
> isis_circuit_pdu_size(circuit
))
1519 vty_out(vty
, "ISIS area contains circuit %s, which has a maximum PDU size of %zu.%s",
1520 circuit
->interface
->name
, isis_circuit_pdu_size(circuit
),
1522 return CMD_ERR_AMBIGUOUS
;
1526 isis_area_lsp_mtu_set(area
, lsp_mtu
);
1530 DEFUN (area_lsp_mtu
,
1532 "lsp-mtu <128-4352>",
1533 "Configure the maximum size of generated LSPs\n"
1534 "Maximum size of generated LSPs\n")
1536 unsigned int lsp_mtu
;
1538 VTY_GET_INTEGER_RANGE("lsp-mtu", lsp_mtu
, argv
[0], 128, 4352);
1540 return area_lsp_mtu_set(vty
, lsp_mtu
);
1543 DEFUN (no_area_lsp_mtu
,
1544 no_area_lsp_mtu_cmd
,
1547 "Configure the maximum size of generated LSPs\n")
1549 return area_lsp_mtu_set(vty
, DEFAULT_LSP_MTU
);
1552 ALIAS (no_area_lsp_mtu
,
1553 no_area_lsp_mtu_arg_cmd
,
1554 "no lsp-mtu <128-4352>",
1556 "Configure the maximum size of generated LSPs\n"
1557 "Maximum size of generated LSPs\n");
1561 "is-type (level-1|level-1-2|level-2-only)",
1562 "IS Level for this routing process (OSI only)\n"
1563 "Act as a station router only\n"
1564 "Act as both a station router and an area router\n"
1565 "Act as an area router only\n")
1567 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1570 type
= string2circuit_t (argv
[0]);
1573 vty_out (vty
, "Unknown IS level %s", VTY_NEWLINE
);
1577 isis_area_is_type_set(area
, type
);
1584 "no is-type (level-1|level-1-2|level-2-only)",
1586 "IS Level for this routing process (OSI only)\n"
1587 "Act as a station router only\n"
1588 "Act as both a station router and an area router\n"
1589 "Act as an area router only\n")
1591 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1595 * Put the is-type back to defaults:
1596 * - level-1-2 on first area
1597 * - level-1 for the rest
1599 if (listgetdata (listhead (isis
->area_list
)) == area
)
1600 type
= IS_LEVEL_1_AND_2
;
1604 isis_area_is_type_set(area
, type
);
1610 set_lsp_gen_interval (struct vty
*vty
, struct isis_area
*area
,
1611 uint16_t interval
, int level
)
1615 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; ++lvl
)
1620 if (interval
>= area
->lsp_refresh
[lvl
-1])
1622 vty_out (vty
, "LSP gen interval %us must be less than "
1623 "the LSP refresh interval %us%s",
1624 interval
, area
->lsp_refresh
[lvl
-1], VTY_NEWLINE
);
1625 return CMD_ERR_AMBIGUOUS
;
1629 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; ++lvl
)
1633 area
->lsp_gen_interval
[lvl
-1] = interval
;
1639 DEFUN (lsp_gen_interval
,
1640 lsp_gen_interval_cmd
,
1641 "lsp-gen-interval <1-120>",
1642 "Minimum interval between regenerating same LSP\n"
1643 "Minimum interval in seconds\n")
1645 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1649 interval
= atoi (argv
[0]);
1650 level
= IS_LEVEL_1
| IS_LEVEL_2
;
1651 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1654 DEFUN (no_lsp_gen_interval
,
1655 no_lsp_gen_interval_cmd
,
1656 "no lsp-gen-interval",
1658 "Minimum interval between regenerating same LSP\n")
1660 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1664 interval
= DEFAULT_MIN_LSP_GEN_INTERVAL
;
1665 level
= IS_LEVEL_1
| IS_LEVEL_2
;
1666 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1669 ALIAS (no_lsp_gen_interval
,
1670 no_lsp_gen_interval_arg_cmd
,
1671 "no lsp-gen-interval <1-120>",
1673 "Minimum interval between regenerating same LSP\n"
1674 "Minimum interval in seconds\n")
1676 DEFUN (lsp_gen_interval_l1
,
1677 lsp_gen_interval_l1_cmd
,
1678 "lsp-gen-interval level-1 <1-120>",
1679 "Minimum interval between regenerating same LSP\n"
1680 "Set interval for level 1 only\n"
1681 "Minimum interval in seconds\n")
1683 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1687 interval
= atoi (argv
[0]);
1689 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1692 DEFUN (no_lsp_gen_interval_l1
,
1693 no_lsp_gen_interval_l1_cmd
,
1694 "no lsp-gen-interval level-1",
1696 "Minimum interval between regenerating same LSP\n"
1697 "Set interval for level 1 only\n")
1699 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1703 interval
= DEFAULT_MIN_LSP_GEN_INTERVAL
;
1705 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1708 ALIAS (no_lsp_gen_interval_l1
,
1709 no_lsp_gen_interval_l1_arg_cmd
,
1710 "no lsp-gen-interval level-1 <1-120>",
1712 "Minimum interval between regenerating same LSP\n"
1713 "Set interval for level 1 only\n"
1714 "Minimum interval in seconds\n")
1716 DEFUN (lsp_gen_interval_l2
,
1717 lsp_gen_interval_l2_cmd
,
1718 "lsp-gen-interval level-2 <1-120>",
1719 "Minimum interval between regenerating same LSP\n"
1720 "Set interval for level 2 only\n"
1721 "Minimum interval in seconds\n")
1723 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1727 interval
= atoi (argv
[0]);
1729 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1732 DEFUN (no_lsp_gen_interval_l2
,
1733 no_lsp_gen_interval_l2_cmd
,
1734 "no lsp-gen-interval level-2",
1736 "Minimum interval between regenerating same LSP\n"
1737 "Set interval for level 2 only\n")
1739 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1743 interval
= DEFAULT_MIN_LSP_GEN_INTERVAL
;
1745 return set_lsp_gen_interval (vty
, area
, interval
, level
);
1748 ALIAS (no_lsp_gen_interval_l2
,
1749 no_lsp_gen_interval_l2_arg_cmd
,
1750 "no lsp-gen-interval level-2 <1-120>",
1752 "Minimum interval between regenerating same LSP\n"
1753 "Set interval for level 2 only\n"
1754 "Minimum interval in seconds\n")
1756 DEFUN (spf_interval
,
1758 "spf-interval <1-120>",
1759 "Minimum interval between SPF calculations\n"
1760 "Minimum interval between consecutive SPFs in seconds\n")
1762 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1765 interval
= atoi (argv
[0]);
1766 area
->min_spf_interval
[0] = interval
;
1767 area
->min_spf_interval
[1] = interval
;
1772 DEFUN (no_spf_interval
,
1773 no_spf_interval_cmd
,
1776 "Minimum interval between SPF calculations\n")
1778 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1780 area
->min_spf_interval
[0] = MINIMUM_SPF_INTERVAL
;
1781 area
->min_spf_interval
[1] = MINIMUM_SPF_INTERVAL
;
1786 ALIAS (no_spf_interval
,
1787 no_spf_interval_arg_cmd
,
1788 "no spf-interval <1-120>",
1790 "Minimum interval between SPF calculations\n"
1791 "Minimum interval between consecutive SPFs in seconds\n")
1793 DEFUN (spf_interval_l1
,
1794 spf_interval_l1_cmd
,
1795 "spf-interval level-1 <1-120>",
1796 "Minimum interval between SPF calculations\n"
1797 "Set interval for level 1 only\n"
1798 "Minimum interval between consecutive SPFs in seconds\n")
1800 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1803 interval
= atoi (argv
[0]);
1804 area
->min_spf_interval
[0] = interval
;
1809 DEFUN (no_spf_interval_l1
,
1810 no_spf_interval_l1_cmd
,
1811 "no spf-interval level-1",
1813 "Minimum interval between SPF calculations\n"
1814 "Set interval for level 1 only\n")
1816 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1818 area
->min_spf_interval
[0] = MINIMUM_SPF_INTERVAL
;
1823 ALIAS (no_spf_interval
,
1824 no_spf_interval_l1_arg_cmd
,
1825 "no spf-interval level-1 <1-120>",
1827 "Minimum interval between SPF calculations\n"
1828 "Set interval for level 1 only\n"
1829 "Minimum interval between consecutive SPFs in seconds\n")
1831 DEFUN (spf_interval_l2
,
1832 spf_interval_l2_cmd
,
1833 "spf-interval level-2 <1-120>",
1834 "Minimum interval between SPF calculations\n"
1835 "Set interval for level 2 only\n"
1836 "Minimum interval between consecutive SPFs in seconds\n")
1838 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1841 interval
= atoi (argv
[0]);
1842 area
->min_spf_interval
[1] = interval
;
1847 DEFUN (no_spf_interval_l2
,
1848 no_spf_interval_l2_cmd
,
1849 "no spf-interval level-2",
1851 "Minimum interval between SPF calculations\n"
1852 "Set interval for level 2 only\n")
1854 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1856 area
->min_spf_interval
[1] = MINIMUM_SPF_INTERVAL
;
1861 ALIAS (no_spf_interval
,
1862 no_spf_interval_l2_arg_cmd
,
1863 "no spf-interval level-2 <1-120>",
1865 "Minimum interval between SPF calculations\n"
1866 "Set interval for level 2 only\n"
1867 "Minimum interval between consecutive SPFs in seconds\n")
1870 area_max_lsp_lifetime_set(struct vty
*vty
, int level
,
1873 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1875 uint16_t refresh_interval
= interval
- 300;
1876 int set_refresh_interval
[ISIS_LEVELS
] = {0, 0};
1878 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; lvl
++)
1883 if (refresh_interval
< area
->lsp_refresh
[lvl
-1])
1885 vty_out (vty
, "Level %d Max LSP lifetime %us must be 300s greater than "
1886 "the configured LSP refresh interval %us%s",
1887 lvl
, interval
, area
->lsp_refresh
[lvl
-1], VTY_NEWLINE
);
1888 vty_out (vty
, "Automatically reducing level %d LSP refresh interval "
1889 "to %us%s", lvl
, refresh_interval
, VTY_NEWLINE
);
1890 set_refresh_interval
[lvl
-1] = 1;
1892 if (refresh_interval
<= area
->lsp_gen_interval
[lvl
-1])
1894 vty_out (vty
, "LSP refresh interval %us must be greater than "
1895 "the configured LSP gen interval %us%s",
1896 refresh_interval
, area
->lsp_gen_interval
[lvl
-1],
1898 return CMD_ERR_AMBIGUOUS
;
1903 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; lvl
++)
1907 isis_area_max_lsp_lifetime_set(area
, lvl
, interval
);
1908 if (set_refresh_interval
[lvl
-1])
1909 isis_area_lsp_refresh_set(area
, lvl
, refresh_interval
);
1915 DEFUN (max_lsp_lifetime
,
1916 max_lsp_lifetime_cmd
,
1917 "max-lsp-lifetime <350-65535>",
1918 "Maximum LSP lifetime\n"
1919 "LSP lifetime in seconds\n")
1921 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_1_AND_2
, atoi(argv
[0]));
1924 DEFUN (no_max_lsp_lifetime
,
1925 no_max_lsp_lifetime_cmd
,
1926 "no max-lsp-lifetime",
1928 "LSP lifetime in seconds\n")
1930 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_1_AND_2
,
1931 DEFAULT_LSP_LIFETIME
);
1934 ALIAS (no_max_lsp_lifetime
,
1935 no_max_lsp_lifetime_arg_cmd
,
1936 "no max-lsp-lifetime <350-65535>",
1938 "Maximum LSP lifetime\n"
1939 "LSP lifetime in seconds\n")
1941 DEFUN (max_lsp_lifetime_l1
,
1942 max_lsp_lifetime_l1_cmd
,
1943 "max-lsp-lifetime level-1 <350-65535>",
1944 "Maximum LSP lifetime for Level 1 only\n"
1945 "LSP lifetime for Level 1 only in seconds\n")
1947 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_1
, atoi(argv
[0]));
1950 DEFUN (no_max_lsp_lifetime_l1
,
1951 no_max_lsp_lifetime_l1_cmd
,
1952 "no max-lsp-lifetime level-1",
1954 "LSP lifetime for Level 1 only in seconds\n")
1956 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_1
, DEFAULT_LSP_LIFETIME
);
1959 ALIAS (no_max_lsp_lifetime_l1
,
1960 no_max_lsp_lifetime_l1_arg_cmd
,
1961 "no max-lsp-lifetime level-1 <350-65535>",
1963 "Maximum LSP lifetime for Level 1 only\n"
1964 "LSP lifetime for Level 1 only in seconds\n")
1966 DEFUN (max_lsp_lifetime_l2
,
1967 max_lsp_lifetime_l2_cmd
,
1968 "max-lsp-lifetime level-2 <350-65535>",
1969 "Maximum LSP lifetime for Level 2 only\n"
1970 "LSP lifetime for Level 2 only in seconds\n")
1972 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_2
, atoi(argv
[0]));
1975 DEFUN (no_max_lsp_lifetime_l2
,
1976 no_max_lsp_lifetime_l2_cmd
,
1977 "no max-lsp-lifetime level-2",
1979 "LSP lifetime for Level 2 only in seconds\n")
1981 return area_max_lsp_lifetime_set(vty
, IS_LEVEL_2
, DEFAULT_LSP_LIFETIME
);
1984 ALIAS (no_max_lsp_lifetime_l2
,
1985 no_max_lsp_lifetime_l2_arg_cmd
,
1986 "no max-lsp-lifetime level-2 <350-65535>",
1988 "Maximum LSP lifetime for Level 2 only\n"
1989 "LSP lifetime for Level 2 only in seconds\n")
1992 area_lsp_refresh_interval_set(struct vty
*vty
, int level
, uint16_t interval
)
1994 VTY_DECLVAR_CONTEXT (isis_area
, area
);
1997 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; ++lvl
)
2001 if (interval
<= area
->lsp_gen_interval
[lvl
-1])
2003 vty_out (vty
, "LSP refresh interval %us must be greater than "
2004 "the configured LSP gen interval %us%s",
2005 interval
, area
->lsp_gen_interval
[lvl
-1],
2007 return CMD_ERR_AMBIGUOUS
;
2009 if (interval
> (area
->max_lsp_lifetime
[lvl
-1] - 300))
2011 vty_out (vty
, "LSP refresh interval %us must be less than "
2012 "the configured LSP lifetime %us less 300%s",
2013 interval
, area
->max_lsp_lifetime
[lvl
-1],
2015 return CMD_ERR_AMBIGUOUS
;
2019 for (lvl
= IS_LEVEL_1
; lvl
<= IS_LEVEL_2
; ++lvl
)
2023 isis_area_lsp_refresh_set(area
, lvl
, interval
);
2029 DEFUN (lsp_refresh_interval
,
2030 lsp_refresh_interval_cmd
,
2031 "lsp-refresh-interval <1-65235>",
2032 "LSP refresh interval\n"
2033 "LSP refresh interval in seconds\n")
2035 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_1_AND_2
, atoi(argv
[0]));
2038 DEFUN (no_lsp_refresh_interval
,
2039 no_lsp_refresh_interval_cmd
,
2040 "no lsp-refresh-interval",
2042 "LSP refresh interval in seconds\n")
2044 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_1_AND_2
,
2045 DEFAULT_MAX_LSP_GEN_INTERVAL
);
2048 ALIAS (no_lsp_refresh_interval
,
2049 no_lsp_refresh_interval_arg_cmd
,
2050 "no lsp-refresh-interval <1-65235>",
2052 "LSP refresh interval\n"
2053 "LSP refresh interval in seconds\n")
2055 DEFUN (lsp_refresh_interval_l1
,
2056 lsp_refresh_interval_l1_cmd
,
2057 "lsp-refresh-interval level-1 <1-65235>",
2058 "LSP refresh interval for Level 1 only\n"
2059 "LSP refresh interval for Level 1 only in seconds\n")
2061 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_1
, atoi(argv
[0]));
2064 DEFUN (no_lsp_refresh_interval_l1
,
2065 no_lsp_refresh_interval_l1_cmd
,
2066 "no lsp-refresh-interval level-1",
2068 "LSP refresh interval for Level 1 only in seconds\n")
2070 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_1
,
2071 DEFAULT_MAX_LSP_GEN_INTERVAL
);
2074 ALIAS (no_lsp_refresh_interval_l1
,
2075 no_lsp_refresh_interval_l1_arg_cmd
,
2076 "no lsp-refresh-interval level-1 <1-65235>",
2078 "LSP refresh interval for Level 1 only\n"
2079 "LSP refresh interval for Level 1 only in seconds\n")
2081 DEFUN (lsp_refresh_interval_l2
,
2082 lsp_refresh_interval_l2_cmd
,
2083 "lsp-refresh-interval level-2 <1-65235>",
2084 "LSP refresh interval for Level 2 only\n"
2085 "LSP refresh interval for Level 2 only in seconds\n")
2087 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_2
, atoi(argv
[0]));
2090 DEFUN (no_lsp_refresh_interval_l2
,
2091 no_lsp_refresh_interval_l2_cmd
,
2092 "no lsp-refresh-interval level-2",
2094 "LSP refresh interval for Level 2 only in seconds\n")
2096 return area_lsp_refresh_interval_set(vty
, IS_LEVEL_2
,
2097 DEFAULT_MAX_LSP_GEN_INTERVAL
);
2100 ALIAS (no_lsp_refresh_interval_l2
,
2101 no_lsp_refresh_interval_l2_arg_cmd
,
2102 "no lsp-refresh-interval level-2 <1-65235>",
2104 "LSP refresh interval for Level 2 only\n"
2105 "LSP refresh interval for Level 2 only in seconds\n")
2108 area_passwd_set(struct vty
*vty
, int level
,
2109 int (*type_set
)(struct isis_area
*area
, int level
,
2110 const char *passwd
, u_char snp_auth
),
2111 const char *passwd
, u_char snp_auth
)
2113 VTY_DECLVAR_CONTEXT (isis_area
, area
);
2115 if (passwd
&& strlen(passwd
) > 254)
2117 vty_out (vty
, "Too long area password (>254)%s", VTY_NEWLINE
);
2118 return CMD_ERR_AMBIGUOUS
;
2121 type_set(area
, level
, passwd
, snp_auth
);
2125 DEFUN (area_passwd_md5
,
2126 area_passwd_md5_cmd
,
2127 "(area-password|domain-password) md5 WORD",
2128 "Configure the authentication password for an area\n"
2129 "Set the authentication password for a routing domain\n"
2130 "Authentication type\n"
2131 "Level-wide password\n")
2133 u_char snp_auth
= 0;
2134 int level
= (argv
[0][0] == 'd') ? IS_LEVEL_2
: IS_LEVEL_1
;
2138 snp_auth
= SNP_AUTH_SEND
;
2139 if (strncmp(argv
[2], "v", 1) == 0)
2140 snp_auth
|= SNP_AUTH_RECV
;
2143 return area_passwd_set(vty
, level
, isis_area_passwd_hmac_md5_set
,
2147 ALIAS (area_passwd_md5
,
2148 area_passwd_md5_snpauth_cmd
,
2149 "(area-password|domain-password) md5 WORD authenticate snp (send-only|validate)",
2150 "Configure the authentication password for an area\n"
2151 "Set the authentication password for a routing domain\n"
2152 "Authentication type\n"
2153 "Level-wide password\n"
2156 "Send but do not check PDUs on receiving\n"
2157 "Send and check PDUs on receiving\n")
2159 DEFUN (area_passwd_clear
,
2160 area_passwd_clear_cmd
,
2161 "(area-password|domain-password) clear WORD",
2162 "Configure the authentication password for an area\n"
2163 "Set the authentication password for a routing domain\n"
2164 "Authentication type\n"
2167 u_char snp_auth
= 0;
2168 int level
= (argv
[0][0] == 'd') ? IS_LEVEL_2
: IS_LEVEL_1
;
2172 snp_auth
= SNP_AUTH_SEND
;
2173 if (strncmp(argv
[2], "v", 1) == 0)
2174 snp_auth
|= SNP_AUTH_RECV
;
2177 return area_passwd_set(vty
, level
, isis_area_passwd_cleartext_set
,
2181 ALIAS (area_passwd_clear
,
2182 area_passwd_clear_snpauth_cmd
,
2183 "(area-password|domain-password) clear WORD authenticate snp (send-only|validate)",
2184 "Configure the authentication password for an area\n"
2185 "Set the authentication password for a routing domain\n"
2186 "Authentication type\n"
2190 "Send but do not check PDUs on receiving\n"
2191 "Send and check PDUs on receiving\n")
2193 DEFUN (no_area_passwd
,
2195 "no (area-password|domain-password)",
2197 "Configure the authentication password for an area\n"
2198 "Set the authentication password for a routing domain\n")
2200 VTY_DECLVAR_CONTEXT (isis_area
, area
);
2201 int level
= (argv
[0][0] == 'd') ? IS_LEVEL_2
: IS_LEVEL_1
;
2203 return isis_area_passwd_unset (area
, level
);
2207 isis_vty_init (void)
2209 install_element (INTERFACE_NODE
, &ip_router_isis_cmd
);
2210 install_element (INTERFACE_NODE
, &no_ip_router_isis_cmd
);
2212 install_element (INTERFACE_NODE
, &isis_passive_cmd
);
2213 install_element (INTERFACE_NODE
, &no_isis_passive_cmd
);
2215 install_element (INTERFACE_NODE
, &isis_circuit_type_cmd
);
2216 install_element (INTERFACE_NODE
, &no_isis_circuit_type_cmd
);
2218 install_element (INTERFACE_NODE
, &isis_network_cmd
);
2219 install_element (INTERFACE_NODE
, &no_isis_network_cmd
);
2221 install_element (INTERFACE_NODE
, &isis_passwd_cmd
);
2222 install_element (INTERFACE_NODE
, &no_isis_passwd_cmd
);
2223 install_element (INTERFACE_NODE
, &no_isis_passwd_arg_cmd
);
2225 install_element (INTERFACE_NODE
, &isis_priority_cmd
);
2226 install_element (INTERFACE_NODE
, &no_isis_priority_cmd
);
2227 install_element (INTERFACE_NODE
, &no_isis_priority_arg_cmd
);
2228 install_element (INTERFACE_NODE
, &isis_priority_l1_cmd
);
2229 install_element (INTERFACE_NODE
, &no_isis_priority_l1_cmd
);
2230 install_element (INTERFACE_NODE
, &no_isis_priority_l1_arg_cmd
);
2231 install_element (INTERFACE_NODE
, &isis_priority_l2_cmd
);
2232 install_element (INTERFACE_NODE
, &no_isis_priority_l2_cmd
);
2233 install_element (INTERFACE_NODE
, &no_isis_priority_l2_arg_cmd
);
2235 install_element (INTERFACE_NODE
, &isis_metric_cmd
);
2236 install_element (INTERFACE_NODE
, &no_isis_metric_cmd
);
2237 install_element (INTERFACE_NODE
, &no_isis_metric_arg_cmd
);
2238 install_element (INTERFACE_NODE
, &isis_metric_l1_cmd
);
2239 install_element (INTERFACE_NODE
, &no_isis_metric_l1_cmd
);
2240 install_element (INTERFACE_NODE
, &no_isis_metric_l1_arg_cmd
);
2241 install_element (INTERFACE_NODE
, &isis_metric_l2_cmd
);
2242 install_element (INTERFACE_NODE
, &no_isis_metric_l2_cmd
);
2243 install_element (INTERFACE_NODE
, &no_isis_metric_l2_arg_cmd
);
2245 install_element (INTERFACE_NODE
, &isis_hello_interval_cmd
);
2246 install_element (INTERFACE_NODE
, &no_isis_hello_interval_cmd
);
2247 install_element (INTERFACE_NODE
, &no_isis_hello_interval_arg_cmd
);
2248 install_element (INTERFACE_NODE
, &isis_hello_interval_l1_cmd
);
2249 install_element (INTERFACE_NODE
, &no_isis_hello_interval_l1_cmd
);
2250 install_element (INTERFACE_NODE
, &no_isis_hello_interval_l1_arg_cmd
);
2251 install_element (INTERFACE_NODE
, &isis_hello_interval_l2_cmd
);
2252 install_element (INTERFACE_NODE
, &no_isis_hello_interval_l2_cmd
);
2253 install_element (INTERFACE_NODE
, &no_isis_hello_interval_l2_arg_cmd
);
2255 install_element (INTERFACE_NODE
, &isis_hello_multiplier_cmd
);
2256 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_cmd
);
2257 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_arg_cmd
);
2258 install_element (INTERFACE_NODE
, &isis_hello_multiplier_l1_cmd
);
2259 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_l1_cmd
);
2260 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_l1_arg_cmd
);
2261 install_element (INTERFACE_NODE
, &isis_hello_multiplier_l2_cmd
);
2262 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_l2_cmd
);
2263 install_element (INTERFACE_NODE
, &no_isis_hello_multiplier_l2_arg_cmd
);
2265 install_element (INTERFACE_NODE
, &isis_hello_padding_cmd
);
2266 install_element (INTERFACE_NODE
, &no_isis_hello_padding_cmd
);
2268 install_element (INTERFACE_NODE
, &csnp_interval_cmd
);
2269 install_element (INTERFACE_NODE
, &no_csnp_interval_cmd
);
2270 install_element (INTERFACE_NODE
, &no_csnp_interval_arg_cmd
);
2271 install_element (INTERFACE_NODE
, &csnp_interval_l1_cmd
);
2272 install_element (INTERFACE_NODE
, &no_csnp_interval_l1_cmd
);
2273 install_element (INTERFACE_NODE
, &no_csnp_interval_l1_arg_cmd
);
2274 install_element (INTERFACE_NODE
, &csnp_interval_l2_cmd
);
2275 install_element (INTERFACE_NODE
, &no_csnp_interval_l2_cmd
);
2276 install_element (INTERFACE_NODE
, &no_csnp_interval_l2_arg_cmd
);
2278 install_element (INTERFACE_NODE
, &psnp_interval_cmd
);
2279 install_element (INTERFACE_NODE
, &no_psnp_interval_cmd
);
2280 install_element (INTERFACE_NODE
, &no_psnp_interval_arg_cmd
);
2281 install_element (INTERFACE_NODE
, &psnp_interval_l1_cmd
);
2282 install_element (INTERFACE_NODE
, &no_psnp_interval_l1_cmd
);
2283 install_element (INTERFACE_NODE
, &no_psnp_interval_l1_arg_cmd
);
2284 install_element (INTERFACE_NODE
, &psnp_interval_l2_cmd
);
2285 install_element (INTERFACE_NODE
, &no_psnp_interval_l2_cmd
);
2286 install_element (INTERFACE_NODE
, &no_psnp_interval_l2_arg_cmd
);
2288 install_element (ISIS_NODE
, &metric_style_cmd
);
2289 install_element (ISIS_NODE
, &no_metric_style_cmd
);
2291 install_element (ISIS_NODE
, &set_overload_bit_cmd
);
2292 install_element (ISIS_NODE
, &no_set_overload_bit_cmd
);
2294 install_element (ISIS_NODE
, &set_attached_bit_cmd
);
2295 install_element (ISIS_NODE
, &no_set_attached_bit_cmd
);
2297 install_element (ISIS_NODE
, &dynamic_hostname_cmd
);
2298 install_element (ISIS_NODE
, &no_dynamic_hostname_cmd
);
2300 install_element (ISIS_NODE
, &area_lsp_mtu_cmd
);
2301 install_element (ISIS_NODE
, &no_area_lsp_mtu_cmd
);
2302 install_element (ISIS_NODE
, &no_area_lsp_mtu_arg_cmd
);
2304 install_element (ISIS_NODE
, &is_type_cmd
);
2305 install_element (ISIS_NODE
, &no_is_type_cmd
);
2307 install_element (ISIS_NODE
, &lsp_gen_interval_cmd
);
2308 install_element (ISIS_NODE
, &no_lsp_gen_interval_cmd
);
2309 install_element (ISIS_NODE
, &no_lsp_gen_interval_arg_cmd
);
2310 install_element (ISIS_NODE
, &lsp_gen_interval_l1_cmd
);
2311 install_element (ISIS_NODE
, &no_lsp_gen_interval_l1_cmd
);
2312 install_element (ISIS_NODE
, &no_lsp_gen_interval_l1_arg_cmd
);
2313 install_element (ISIS_NODE
, &lsp_gen_interval_l2_cmd
);
2314 install_element (ISIS_NODE
, &no_lsp_gen_interval_l2_cmd
);
2315 install_element (ISIS_NODE
, &no_lsp_gen_interval_l2_arg_cmd
);
2317 install_element (ISIS_NODE
, &spf_interval_cmd
);
2318 install_element (ISIS_NODE
, &no_spf_interval_cmd
);
2319 install_element (ISIS_NODE
, &no_spf_interval_arg_cmd
);
2320 install_element (ISIS_NODE
, &spf_interval_l1_cmd
);
2321 install_element (ISIS_NODE
, &no_spf_interval_l1_cmd
);
2322 install_element (ISIS_NODE
, &no_spf_interval_l1_arg_cmd
);
2323 install_element (ISIS_NODE
, &spf_interval_l2_cmd
);
2324 install_element (ISIS_NODE
, &no_spf_interval_l2_cmd
);
2325 install_element (ISIS_NODE
, &no_spf_interval_l2_arg_cmd
);
2327 install_element (ISIS_NODE
, &max_lsp_lifetime_cmd
);
2328 install_element (ISIS_NODE
, &no_max_lsp_lifetime_cmd
);
2329 install_element (ISIS_NODE
, &no_max_lsp_lifetime_arg_cmd
);
2330 install_element (ISIS_NODE
, &max_lsp_lifetime_l1_cmd
);
2331 install_element (ISIS_NODE
, &no_max_lsp_lifetime_l1_cmd
);
2332 install_element (ISIS_NODE
, &no_max_lsp_lifetime_l1_arg_cmd
);
2333 install_element (ISIS_NODE
, &max_lsp_lifetime_l2_cmd
);
2334 install_element (ISIS_NODE
, &no_max_lsp_lifetime_l2_cmd
);
2335 install_element (ISIS_NODE
, &no_max_lsp_lifetime_l2_arg_cmd
);
2337 install_element (ISIS_NODE
, &lsp_refresh_interval_cmd
);
2338 install_element (ISIS_NODE
, &no_lsp_refresh_interval_cmd
);
2339 install_element (ISIS_NODE
, &no_lsp_refresh_interval_arg_cmd
);
2340 install_element (ISIS_NODE
, &lsp_refresh_interval_l1_cmd
);
2341 install_element (ISIS_NODE
, &no_lsp_refresh_interval_l1_cmd
);
2342 install_element (ISIS_NODE
, &no_lsp_refresh_interval_l1_arg_cmd
);
2343 install_element (ISIS_NODE
, &lsp_refresh_interval_l2_cmd
);
2344 install_element (ISIS_NODE
, &no_lsp_refresh_interval_l2_cmd
);
2345 install_element (ISIS_NODE
, &no_lsp_refresh_interval_l2_arg_cmd
);
2347 install_element (ISIS_NODE
, &area_passwd_md5_cmd
);
2348 install_element (ISIS_NODE
, &area_passwd_md5_snpauth_cmd
);
2349 install_element (ISIS_NODE
, &area_passwd_clear_cmd
);
2350 install_element (ISIS_NODE
, &area_passwd_clear_snpauth_cmd
);
2351 install_element (ISIS_NODE
, &no_area_passwd_cmd
);