blob: ce8e669fc254dcf51bf1f31e33c6edb5469a1b28 [file] [log] [blame]
Thomas Vachuska8ca75a22017-08-24 16:12:59 -07001module openconfig-isis {
2
3 yang-version "1";
4
5 // namespace
6 namespace "http://openconfig.net/yang/openconfig-isis";
7
8 prefix "oc-isis";
9
10 // import some basic types
11 import ietf-inet-types { prefix "inet"; }
12 import ietf-yang-types { prefix "yang"; }
13 import openconfig-types { prefix "oc-types"; }
14 import openconfig-isis-types { prefix "oc-isis-types"; }
15 import openconfig-routing-policy { prefix "oc-rpol"; }
16 import openconfig-extensions { prefix "oc-ext"; }
17 import openconfig-interfaces { prefix "oc-if"; }
18 import openconfig-segment-routing { prefix "oc-sr"; }
19 // TODO(robjs): Import authentication and keychain following merge of these
20 // modules.
21 //import openconfig-authentication-types { prefix "oc-auth-types"; }
22 //import openconfig-keychain { prefix "oc-keychain"; }
23
24 // Include submodules:
25 // IS-IS LSP is the LSDB for IS-IS.
26 include openconfig-isis-lsp;
27 // IS-IS RT is routing-related features for IS-IS
28 include openconfig-isis-routing;
29
30 // meta
31 organization
32 "OpenConfig working group";
33
34 contact
35 "OpenConfig working group
36 www.openconfig.net ";
37
38 description
39 "This module describes a YANG model for ISIS protocol configuration.
40 It is a limited subset of all of the configuration parameters
41 available in the variety of vendor implementations, hence it is
42 expected that it would be augmented with vendor - specific configuration
43 data as needed. Additional modules or submodules to handle other
44 aspects of ISIS configuration, including policy, routing, types,
45 LSDB and additional address families are also expected. This model
46 supports the following ISIS configuration level hierarchy:
47
48 ISIS
49 +-> { global ISIS configuration}
50 +-> levels +-> { level config}
51 +-> { system-level-counters }
52 +-> { level link-state-database}
53 +-> interface +-> { interface config }
54 +-> { circuit-counters }
55 +-> { levels config }
56 +-> { level adjacencies }";
57
58 oc-ext:openconfig-version "0.3.2";
59
60 revision "2017-07-26" {
61 description
62 "Update LSDB and fix bugs.";
63 reference "0.3.2";
64 }
65
66 revision "2017-05-15" {
67 description
68 "Refactor LSDB.";
69 reference "0.3.0";
70 }
71
72 revision "2017-01-13" {
73 description
74 "Remove top-level /isis container";
75 reference "0.2.1";
76 }
77
78 revision "2016-12-15" {
79 description
80 "Add segment routing to IS-IS module";
81 reference "0.2.0";
82 }
83
84 revision "2016-10-18" {
85 description
86 "Initial revision of IS-IS models.";
87 reference "0.1.0";
88 }
89
90 // extension statements
91
92 // feature statements
93
94 // identity statements
95
96 // typedef statements
97
98 // grouping statements
99
100 grouping isis-global-config {
101 description
102 "This grouping defines lobal configuration options for ISIS router.";
103
104 // multi-instance
105 leaf instance {
106 type string;
107 default 0;
108 description
109 "ISIS Instance.";
110 }
111
112 leaf-list net {
113 type oc-isis-types:net;
114 description
115 "ISIS network entity title (NET). The first 8 bits are usually
116 49 (private AFI), next 16 bits represent area, next 48 bits represent
117 system id and final 8 bits are set to 0.";
118 reference
119 "International Organization for Standardization, Information
120 technology - Open Systems Interconnection-Network service
121 Definition - ISO/ IEC 8348:2002.";
122 }
123
124 leaf maximum-area-addresses {
125 type uint8;
126 default 3;
127 description
128 "Maximum areas supported.";
129 }
130
131 leaf level-capability {
132 type oc-isis-types:level-type;
133 default "LEVEL_1_2";
134 description
135 "ISIS level capability(level-1, level-2,vlevel-1-2).";
136 }
137
138 leaf max-ecmp-paths {
139 type uint8;
140 description
141 "ISIS max-paths count.";
142 }
143
144 leaf poi-tlv {
145 type boolean;
146 default false;
147 description
148 "ISIS purge TLV. When set to true, a TLV is added to purges to record
149 the system ID of the IS generating the purge.";
150 reference "RFC6232: Purge Originator Identification TLV for IS-IS. TLV 13.";
151 }
152
153 leaf iid-tlv {
154 type boolean;
155 default false;
156 description
157 "ISIS Instance Identifier TLV. When set to trues, the IID-TLV identifies
158 the unique instance as well as the topology/topologies to which the
159 PDU applies.";
160 reference "RFC6822: IS-IS Multi-Instance. TLV 7";
161 }
162
163 leaf fast-flooding {
164 type boolean;
165 default true;
166 description
167 "When set to true, IS will always flood the LSP that triggered an SPF
168 before the router actually runs the SPF computation.";
169 }
170 }
171
172 grouping admin-config {
173 description
174 "Re-usable grouping to enable or disable a particular IS-IS feature.";
175
176 leaf enabled {
177 type boolean;
178 default false;
179 description
180 "When set to true, the functionality within which this leaf is
181 defined is enabled, when set to false it is explicitly disabled.";
182 }
183 }
184
185 grouping isis-bfd-config {
186 description
187 "This grouping defines Bidirectionl-Forwarding-Detection
188 configuration.";
189
190 //There is also BFD state under adjacency
191 leaf bfd-tlv {
192 type boolean;
193 description
194 "When set to true, BFD TLV is used. This enables support for the IS-IS
195 BFD TLV options, which specify that a BFD session must be established
196 before an IS-IS adjacency can transition to the established state.
197 This option should be enabled on all IS-IS neighbors on a shared
198 interface.";
199 reference "RFC6213. TLV 148";
200 }
201 reference "RFC5880: Bidirectional Forwarding Detection (BFD).";
202 }
203
204 grouping isis-authentication-check-config {
205 description
206 "This grouping defines ISIS authentication check.";
207
208 leaf authentication-check {
209 type boolean;
210 default true;
211 description
212 "When set to true, reject all ISIS protocol PDUs that either have a mismatch
213 in authentication-type or authentication-key.";
214 }
215 }
216
217 grouping isis-metric-style-config {
218 description
219 "This grouping defines ISIS metric style.";
220
221 leaf metric-style {
222 type oc-isis-types:metric-style;
223 description
224 "ISIS metric style types(narrow, wide).";
225 }
226 }
227
228 grouping authentication-key-config {
229 description
230 "This grouping defines authentication key configuration.";
231
232 leaf auth-password {
233 type oc-types:routing-password;
234 description
235 "Authentication key string.";
236 }
237 }
238
239 grouping keychain-base-group {
240 description
241 "This grouping defines keychain configuration.";
242
243 container keychain {
244 description
245 "This container defines keychain parameters.";
246
247 // TODO(robjs): Import keychain parameters following merge of the auth
248 // models.
249 //uses oc-keychain:keychain-common-base;
250 //uses oc-keychain:tolerance-base;
251 //uses oc-keychain:keychain-key-base;
252 }
253 }
254
255 grouping isis-authentication-config {
256 description
257 "This grouping defines ISIS authentication configuration.";
258
259 // TODO(robjs): Add authentication following merge of auth modules.
260 //leaf auth-type {
261 // type oc-auth-types:auth-type;
262 // description
263 // "ISIS authentication type (key, key-chain).";
264 //}
265
266 leaf csnp-authentication {
267 type boolean;
268 default false;
269 description
270 "Enable or disable for IS-IS CSNPs.";
271 }
272
273 leaf psnp-authentication {
274 type boolean;
275 default false;
276 description
277 "Enable or disable authentication for IS-IS PSNPs.";
278 }
279
280 leaf lsp-authentication {
281 type boolean;
282 default false;
283 description
284 "Enable or disable authentication for IS-IS LSPs.";
285 }
286 }
287
288 grouping isis-authentication-group {
289 description
290 "This grouping defines ISIS authentication.";
291
292 container config {
293 description
294 "This container defines ISIS authentication configuration.";
295
296 uses isis-authentication-config;
297 }
298
299 container state {
300 config false;
301 description
302 "This container defines ISIS authentication state.";
303
304 uses isis-authentication-config;
305 }
306
307 container key {
308 description
309 "This container defines ISIS authentication key";
310 container config {
311 description
312 "This container defines ISIS authentication key configuration.";
313
314 uses authentication-key-group-config {
315 when "../auth-type = KEY";
316 }
317 }
318
319 container state {
320 config false;
321 description
322 "This container defines ISIS authentication key state.";
323
324 uses authentication-key-group-config {
325 when "../auth-type = KEY";
326 }
327 }
328 }
329
330 uses keychain-base-group {
331 when "../auth-type = KEY_CHAIN";
332 }
333 }
334
335 grouping isis-hello-authentication-config {
336 description
337 "Configuration options for IS-IS hello authentication.";
338
339 leaf hello-authentication {
340 type boolean;
341 default false;
342 description
343 "Enabled or disable ISIS Hello authentication.";
344 }
345
346 // TODO(robjs): Add hello-auth-type following merge of auth models.
347 //leaf hello-auth-type {
348 // type oc-auth-types:auth-type;
349 // description
350 // "ISIS authentication type (key, key-chain).";
351 //}
352 }
353
354 grouping isis-hello-authentication-group {
355 description
356 "This grouping defines ISIS hello-authentication.";
357
358 container config {
359 description
360 "This container defines ISIS authentication configuration.";
361
362 uses isis-hello-authentication-config;
363 }
364
365 container state {
366 config false;
367 description
368 "This container defines ISIS authentication state.";
369
370 uses isis-hello-authentication-config;
371 }
372
373 container key {
374 description
375 "This container defines ISIS authentication key";
376
377 container config {
378 description
379 "This container defines ISIS authentication key configuration.";
380
381 uses authentication-key-group-config {
382 when "../auth-type = KEY";
383 }
384 }
385
386 container state {
387 config false;
388 description
389 "This container defines ISIS authentication key state.";
390
391 uses authentication-key-group-config {
392 when "../auth-type = KEY";
393 }
394 }
395 }
396
397 uses keychain-base-group {
398 when "../auth-type = KEY_CHAIN";
399 }
400 }
401
402 grouping isis-ldp-igp-config {
403 description
404 "This grouping defines ISIS/LDP Synchronization configuration.";
405
406 leaf enabled {
407 type boolean;
408 default true;
409 description
410 "When set to true, rely on IGP/LDP synchronization. IGP cost for
411 link is maintained at max until LDP adjacencies are established ";
412 reference "RFC5443: LDP IGP Synchronization.";
413 }
414
415 leaf post-session-up-delay {
416 type uint16;
417 units seconds;
418 description
419 "Specifies a delay, expressed in units of seconds,
420 between the LDP session to the IGP neighbor being established, and
421 it being considered synchronized by the IGP.";
422 }
423 }
424
425 grouping isis-te-config {
426 description
427 "This grouping defines ISIS Traffic Engineering configuration.";
428
429 leaf ipv4-router-id {
430 type inet:ipv4-address-no-zone;
431 description
432 "IPv4 MPLS Traffic Engineering Router-ID.";
433 }
434
435 leaf ipv6-router-id {
436 type inet:ipv6-address-no-zone;
437 description
438 "IPv6 MPLS Traffic Engineering Router-ID.";
439 }
440 }
441
442 grouping isis-reference-bandwidth-config {
443 description
444 "This grouping defines ISIS Reference Bandwidth Configuration.";
445
446 leaf reference-bandwidth {
447 type uint32;
448 description
449 "ISIS Reference Bandwidth value";
450 }
451 }
452
453 grouping isis-overload-bit-set-config {
454 description
455 "This grouping defines ISIS Overload Bit.";
456
457 leaf set-bit {
458 type boolean;
459 default false;
460 description
461 "When set to true, IS-IS overload bit is set.";
462 }
463
464 leaf set-bit-on-boot {
465 type boolean;
466 default false;
467 description
468 "When set to true, the IS-IS overload bit is set on system boot.";
469 }
470
471 leaf advertise-high-metric {
472 type boolean;
473 default false;
474 description
475 "When set to true, the local IS advertises links with the highest
476 available metric regardless of their configured metric. The metric
477 value is based on the metric style - if wide metrics are utilised
478 the metric is advertised as 16777214, otherwise they are advertised
479 with a value of 63.";
480 }
481 }
482
483 grouping isis-overload-bit-reset-config {
484 description
485 "This grouping defines ISIS Overload Bit Reset Triggers";
486
487 leaf reset-trigger {
488 type identityref {
489 base oc-isis-types:OVERLOAD_RESET_TRIGGER_TYPE;
490 }
491 description
492 "In the case that the system sets the overload bit on start, the
493 system should reset the bit (i.e., clear the overload bit) upon
494 the specified trigger.";
495 }
496
497 leaf delay {
498 type uint16;
499 units seconds;
500 description
501 "If a reset trigger is specified, the system should delay resetting
502 the overload bit for the specified number of seconds after the
503 trigger occurs.";
504 }
505 }
506
507 grouping isis-attached-bit-config {
508 description
509 "This grouping defines ISIS Attached Bit";
510
511 leaf ignore-bit {
512 type boolean;
513 default false;
514 description
515 "When set to true, if the attached bit is set on an incoming Level 1
516 IS-IS, the local system ignores it. In this case the local system
517 does not set a default route to the L1L2 router advertising the PDU
518 with the attached bit set.";
519 }
520
521 leaf suppress-bit {
522 type boolean;
523 default false;
524 description
525 "When set to true, if the local IS acts as a L1L2 router, then the
526 attached bit is not advertised in locally generated PDUs.";
527 }
528 }
529
530 grouping overload-bit-group {
531 description
532 "This grouping defines ISIS Overload Bit.";
533
534 container config {
535 description
536 "This container defines ISIS Overload Bit configuration.";
537
538 uses isis-overload-bit-set-config;
539 }
540
541 container state {
542 config false;
543 description
544 "This container defines state for ISIS Overload Bit.";
545
546 uses isis-overload-bit-set-config;
547 }
548
549 container reset-triggers {
550 description
551 "This container defines state for ISIS Overload Bit reset triggers";
552
553 list reset-trigger {
554 key "reset-trigger";
555
556 description
557 "This list describes ISIS Overload reset trigger reasons.";
558
559 leaf reset-trigger {
560 type leafref {
561 path "../config/reset-trigger";
562 }
563 description
564 "Reference to the reset trigger reason";
565 }
566
567 container config {
568 description
569 "This container defines ISIS Overload Bit reset trigger
570 configuration.";
571
572 uses isis-overload-bit-reset-config;
573 }
574
575 container state {
576 config false;
577 description
578 "This container defines state for ISIS Overload Bit reset
579 triggers.";
580
581 uses isis-overload-bit-reset-config;
582 }
583 }
584 }
585 }
586
587
588 grouping isis-base-level-config {
589 description
590 "This grouping defines ISIS Level configuration.";
591
592 leaf level-number {
593 type oc-isis-types:level-number;
594 description
595 "ISIS level number (level-1, level-2).";
596 }
597 }
598
599 grouping isis-interface-level-config {
600 description
601 "This grouping defines ISIS Interface Level configuration.";
602
603 leaf level-number {
604 type oc-isis-types:level-number;
605 description
606 "ISIS level number(level-1, level-2).";
607 }
608
609 leaf passive {
610 type boolean;
611 default false;
612 description
613 "ISIS passive interface admin enable/disable function.";
614 }
615
616 leaf priority {
617 type uint8 {
618 range "0 .. 127";
619 }
620 description
621 "ISIS neighbor priority(LAN hello PDU only).";
622 }
623 }
624
625 grouping isis-hello-timers-config {
626 description
627 "This grouping defines ISIS hello timers configuration.";
628
629 leaf hello-interval {
630 type uint32;
631 description
632 "ISIS hello-interval value.";
633 }
634
635 leaf hello-multiplier {
636 type uint8;
637 description
638 "ISIS hello-multiplier value.";
639 }
640 }
641
642 grouping isis-interface-config {
643 description
644 "This grouping defines ISIS interface configuration.";
645
646 leaf interface-id {
647 type oc-if:interface-id;
648 description
649 "Interface for which ISIS configuration is to be applied.";
650 }
651
652 leaf passive {
653 type boolean;
654 default false;
655 description
656 "When set to true, the referenced interface is a passive interface
657 such that it is not eligible to establish adjacencies with other
658 systems, but is advertised into the IS-IS topology.";
659 }
660
661 leaf hello-padding {
662 type oc-isis-types:hello-padding-type;
663 description
664 "This leaf controls padding type for IS-IS Hello PDUs.";
665 }
666
667 leaf circuit-type {
668 type oc-isis-types:circuit-type;
669 description
670 "ISIS circuit type (p2p, broadcast).";
671 }
672 }
673
674 grouping isis-adaptive-timers-state {
675 description
676 "This grouping defines ISIS adaptive timers state";
677
678 leaf adaptive-timer {
679 type oc-isis-types:adaptive-timer-type;
680 description
681 "ISIS adaptive timer types (linear, exponential).";
682 }
683 }
684
685 grouping isis-lsp-generation-timers-config {
686 description
687 "This grouping defines ISIS LSP Generation timers configuration";
688
689 leaf lsp-max-wait-interval {
690 type uint64;
691 units milliseconds;
692 description
693 "Time interval in milliseconds that specifies max interval between
694 two consecutive occurrences of an LSP being generated.";
695 }
696
697 leaf lsp-first-wait-interval {
698 type uint64;
699 units milliseconds;
700 description
701 "Time interval in milliseconds that specifies the first LSP generation
702 delay.";
703 }
704
705 leaf lsp-second-wait-interval {
706 type uint64;
707 units milliseconds;
708 description
709 "Time interval in milliseconds that specifies the millisecond LSP
710 generation delay.";
711 }
712 }
713
714 grouping isis-lsp-timers-config {
715 description
716 "This grouping defines ISIS LSP timers configuration";
717
718 leaf lsp-lifetime-interval {
719 type uint16;
720 units seconds;
721 default 1200;
722 description
723 "Time interval in seconds that specifies how long an LSP remains in
724 LSDB without being refreshed.";
725 }
726
727 leaf lsp-refresh-interval {
728 type uint16;
729 units seconds;
730 description
731 "Time interval in seconds that specifies how often route topology
732 that a device originates is transmitted in LSPs.";
733 }
734 }
735
736 grouping isis-spf-timers-config {
737 description
738 "This grouping defines ISIS SPF timers configuration.";
739
740 leaf spf-hold-interval {
741 type uint64;
742 units milliseconds;
743 default 5000;
744 description
745 "SPF Hold Down time interval in milliseconds.";
746 }
747
748 leaf spf-first-interval {
749 type uint64;
750 units milliseconds;
751 description
752 "Time interval in milliseconds between the
753 detection of topology change and when the SPF algorithm runs.";
754 }
755 leaf spf-second-interval {
756 type uint64;
757 units milliseconds;
758 description
759 "Time interval in milliseconds between the first and second
760 SPF calculation.";
761 }
762 }
763
764 grouping isis-interface-timers-config {
765 description
766 "This grouping defines ISIS interface timers configuration.";
767
768 leaf csnp-interval {
769 type uint16;
770 units seconds;
771 description
772 "The interval, specified in seconds, at which periodic CSNP packets
773 should be transmitted by the local IS.";
774 }
775
776 leaf lsp-pacing-interval {
777 type uint64;
778 units milliseconds;
779 description
780 "The interval interval in milliseconds between the
781 detection of topology change and when the SPF algorithm runs.";
782 }
783 }
784
785 grouping isis-transport-config {
786 description
787 "This grouping defines configuration parameters relating to the
788 transport protocol used by the ISIS.";
789
790 leaf lsp-mtu-size {
791 type uint16;
792 description
793 "The maximum size in bytes of an IS-IS Link state PDU.";
794 }
795 }
796
797 grouping isis-graceful-restart-config {
798 description
799 "This grouping defines ISIS graceful restart configuration.";
800
801 leaf helper-only {
802 type boolean;
803 description
804 "Enable or disable the IS-IS graceful restart helper function. When
805 this leaf is set, the local system does not utilise the IS-IS
806 graceful restart procedures during its own restart, but supports
807 retaining forwarding information during a remote speaker's restart.";
808 }
809 reference "RFC 5306: Restart Signaling for IS-IS.";
810 }
811
812 // configuration context containers
813 grouping inter-level-propagation-policies-structural {
814 description
815 "Propagate prefixes between IS-IS levels.";
816
817 container inter-level-propagation-policies {
818 description
819 "Policies to propagate prefixes between IS-IS levels.";
820
821 container level1-to-level2 {
822 description
823 "Policies relating to prefixes to be propagated from
824 Level 1 to Level 2.";
825
826 container config {
827 description
828 "Configuration parameters relating to the propagation
829 of prefixes from IS-IS Level 1 to Level 2.";
830
831 uses inter-level-propagation-policy-config;
832 }
833
834 container state {
835 config false;
836 description
837 "Operational state parameters relating to the
838 propagation of prefixes from IS-IS Level 1 to Level 2.";
839
840 uses inter-level-propagation-policy-config;
841 }
842
843 }
844
845 container level2-to-level1 {
846 description
847 "Policies relating to prefixes to be propagated from
848 Level2 to Level 1.";
849
850 container config {
851 description
852 "Configuration parameters relating to the propagation
853 of prefixes from IS-IS Level 2 to Level 1.";
854
855 uses inter-level-propagation-policy-config;
856 }
857
858 container state {
859 config false;
860 description
861 "Operational state parameters relating to the propagation
862 of prefixes from IS-IS Level 2 to Level 1.";
863
864 uses inter-level-propagation-policy-config;
865 }
866 }
867 }
868 }
869
870 grouping inter-level-propagation-policy-config {
871 description
872 "Policy governing the propagation of prefixes between levels.";
873
874 uses oc-rpol:apply-policy-import-config;
875 }
876
877 grouping authentication-key-group-config {
878 description
879 "This grouping defines ISIS authentication key configuration.";
880
881 uses authentication-key-config;
882
883 // TODO(robjs): Add crypto-algorithm after merge of authentication modules.
884 //leaf crypto-algorithm {
885 // type identityref {
886 // base oc-auth-types:CRYPTO_TYPE;
887 // }
888 // description
889 // "Authentication key cryptographic algorithm to be used for key encryption.";
890 //}
891 }
892
893 grouping isis-global-base {
894 description
895 "This grouping describes ISIS Global router.";
896
897 container config {
898 description
899 "This container defines ISIS global configuration router.";
900
901 uses isis-authentication-check-config;
902 uses isis-global-config;
903 }
904
905 container state {
906 config false;
907 description
908 "This container defines state for ISIS global router.";
909
910 uses isis-authentication-check-config;
911 uses isis-global-config;
912 }
913
914 container lsp-bit {
915 description
916 "This container defines ISIS LSP Operational Bits.";
917
918 container overload-bit {
919 description
920 "This container defines Overload Bit configuration.";
921 uses overload-bit-group;
922 }
923
924 container attached-bit {
925 description
926 "This container defines Attached Bit.";
927
928 container config {
929 description
930 "This container defines Attached Bit configuration.";
931
932 uses isis-attached-bit-config;
933 }
934
935 container state {
936 config false;
937 description
938 "This container defines state for Link State PDU Bit.";
939
940 uses isis-attached-bit-config;
941 }
942 }
943 }
944
945 container reference-bandwidth {
946 description
947 "This container defines ISIS Reference Bandwidth.";
948
949 container config {
950 description
951 "This container defines Reference Bandwidth configuration";
952 uses isis-reference-bandwidth-config;
953 }
954
955 container state {
956 config false;
957 description
958 "This container defines state for Reference Bandwidth.";
959
960 uses isis-reference-bandwidth-config;
961 }
962 }
963
964 container nsr {
965 description
966 "This container defines ISIS Non-Stop Routing.";
967
968 container config {
969 description
970 "This container defines Non-Stop-Routing configuration.";
971
972 uses admin-config;
973 }
974
975 container state {
976 config false;
977 description
978 "This container defines state for Non-Stop-Routing";
979
980 uses admin-config;
981 }
982 }
983
984 container graceful-restart {
985 description
986 "This container defines ISIS Graceful Restart.";
987
988 container config {
989 description
990 "This container defines ISIS graceful-restart configuration.";
991
992 uses admin-config;
993 uses isis-graceful-restart-config;
994 }
995
996 container state {
997 config false;
998 description
999 "This container defines state information for ISIS graceful-restart.";
1000
1001 uses admin-config;
1002 uses isis-graceful-restart-config;
1003 }
1004 }
1005
1006 container timers {
1007 description
1008 "This container defines ISIS timers.";
1009
1010 container config {
1011 description
1012 "This container defines ISIS global timers configuration.";
1013
1014 uses isis-lsp-timers-config;
1015 }
1016
1017 container state {
1018 config false;
1019 description
1020 "This container defines state information for ISIS global timers.";
1021
1022 uses isis-lsp-timers-config;
1023 }
1024
1025 container spf {
1026 description
1027 "This container defines ISIS SPF timer settings.";
1028
1029 container config {
1030 description
1031 "This container defines ISIS SPF timers configuration.";
1032
1033 uses isis-spf-timers-config;
1034 }
1035
1036 container state {
1037 config false;
1038 description
1039 "This container defines state information for ISIS SPF timers.";
1040
1041 uses isis-spf-timers-config;
1042 uses isis-adaptive-timers-state;
1043 }
1044 }
1045
1046 container lsp-generation {
1047 description
1048 "This container defines ISIS LSP Generation.";
1049
1050 container config {
1051 description
1052 "This container defines ISIS LSP Generation timers
1053 configuration.";
1054
1055 uses isis-lsp-generation-timers-config;
1056 }
1057
1058 container state {
1059 config false;
1060 description
1061 "This container defines state information for ISIS LSP Generation
1062 timers.";
1063
1064 uses isis-lsp-generation-timers-config;
1065 uses isis-adaptive-timers-state;
1066 }
1067 }
1068 }
1069
1070 container transport {
1071 description
1072 "This container defines ISIS transport.";
1073
1074 container config {
1075 description
1076 "This container defines ISIS transport related configuration.";
1077
1078 uses isis-transport-config;
1079 }
1080
1081 container state {
1082 config false;
1083 description
1084 "This container defines state information for ISIS transport
1085 parameters.";
1086
1087 uses isis-transport-config;
1088 }
1089 }
1090
1091 container mpls {
1092 description
1093 "Configuration and operational state relating to MPLS-related
1094 features in IS-IS";
1095
1096 container igp-ldp-sync {
1097 description
1098 "Configuration and operational state relating to synchronisation
1099 between the LDP and IS-IS";
1100
1101 container config {
1102 description
1103 "This container defines ISIS/IGP configuration.";
1104
1105 uses isis-ldp-igp-config;
1106 }
1107
1108 container state {
1109 config false;
1110 description
1111 "This container defines state information for ISIS/LDP Sync.";
1112
1113 uses isis-ldp-igp-config;
1114 }
1115 }
1116 }
1117
1118 container igp-shortcuts {
1119 description
1120 "This container defines IGP shortcuts configuration and state
1121 information.";
1122
1123 uses isis-shortcuts-afi-list;
1124 }
1125
1126 container afi-safi {
1127 description
1128 "This container defines address-family specific configuration
1129 and state information.";
1130
1131 uses isis-afi-safi-list;
1132 }
1133
1134 uses oc-sr:sr-igp-top;
1135 }
1136
1137 grouping isis-route-preference-config {
1138 description
1139 "This grouping defines ISIS route preference configuration";
1140
1141 leaf external-route-preference {
1142 type uint8 {
1143 range "1..max";
1144 }
1145 description
1146 "Administrative Distance(preference) for external ISIS routes.";
1147 }
1148
1149 leaf internal-route-preference {
1150 type uint8 {
1151 range "1..max";
1152 }
1153 description
1154 "Administrative Distance(preference) for internal ISIS routes.";
1155 }
1156 }
1157
1158 grouping isis-interfaces {
1159 description
1160 "This grouping defines ISIS interfaces configured on local system.";
1161
1162 list interface {
1163 key "interface-id";
1164
1165 description
1166 "This list contains ISIS interfaces.";
1167
1168 leaf interface-id {
1169 type leafref {
1170 path "../config/interface-id";
1171 }
1172 description
1173 "Reference to interface-id";
1174 }
1175
1176 uses isis-interface-group;
1177 uses oc-if:interface-ref;
1178 }
1179 }
1180
1181 grouping isis-interface-group {
1182 description
1183 "This grouping defines ISIS interfaces configured on local system.";
1184
1185 container config {
1186 description
1187 "This container defines ISIS interface configuration.";
1188
1189 uses admin-config;
1190 uses isis-interface-config;
1191 }
1192
1193 container state {
1194 config false;
1195 description
1196 "This container defines state information for ISIS interfaces.";
1197
1198 uses admin-config;
1199 uses isis-interface-config;
1200 }
1201
1202 container circuit-counters {
1203 description
1204 "This container defines state information for ISIS circuit counters.";
1205
1206 uses circuit-counters-structural;
1207 }
1208
1209 container authentication {
1210 description
1211 "This container defines ISIS authentication.";
1212
1213 uses isis-hello-authentication-group;
1214 }
1215
1216 container afi-safi {
1217 description
1218 "This container defines address-family specific configuration
1219 and state information.";
1220
1221 uses isis-if-global-afi-safi-list;
1222 }
1223
1224 container levels {
1225 description
1226 "This container defines ISIS level specific configuration and
1227 state information.";
1228
1229 uses isis-interface-levels;
1230 }
1231
1232 container timers {
1233 description
1234 "This container describes ISIS interface timers configuration";
1235
1236 container config {
1237 description
1238 "Configuration parameters relating to interface
1239 timers for IS-IS";
1240
1241 uses isis-interface-timers-config;
1242 }
1243
1244 container state {
1245 config false;
1246 description
1247 "This container defines state information for ISIS interface timers.";
1248
1249 uses isis-interface-timers-config;
1250 }
1251 }
1252
1253 container bfd {
1254 //TODO(bogdanov): Integrate BFD model/module
1255 description
1256 "This container defines BFD.";
1257
1258 container config {
1259 description
1260 "This container defines BFD configuration parameters.";
1261
1262 uses isis-bfd-config;
1263 }
1264
1265 container state {
1266 config false;
1267 description
1268 "This container defines BFD state information.";
1269
1270 uses isis-bfd-config;
1271 }
1272 }
1273 }
1274
1275 grouping isis-levels {
1276 description
1277 "This grouping defines global ISIS Levels.";
1278
1279 list level {
1280 key "level-number";
1281
1282 description
1283 "Configuration and operational state parameters related to a
1284 particular level within the IS-IS protocol instance";
1285
1286 leaf level-number {
1287 type leafref {
1288 path "../config/level-number";
1289 }
1290 description
1291 "Reference to ISIS level-number.";
1292 }
1293
1294 uses isis-level-group;
1295 }
1296 }
1297
1298 grouping isis-interface-levels {
1299 description
1300 "This grouping defines ISIS interface Levels.";
1301
1302 list level {
1303 key "level-number";
1304 description
1305 "Configuration and operational state parameters related to a
1306 particular level on an IS-IS enabled interface.";
1307
1308 leaf level-number {
1309 type leafref {
1310 path "../config/level-number";
1311 }
1312 description
1313 "Reference to ISIS level-number.";
1314 }
1315
1316 uses isis-interface-level-group;
1317 }
1318 }
1319
1320 grouping isis-level-group {
1321 description
1322 "This grouping defines ISIS level configuration and state
1323 information.";
1324
1325 container config {
1326 description
1327 "This container defines ISIS level based configuration.";
1328
1329 uses admin-config;
1330 uses isis-base-level-config;
1331 uses isis-metric-style-config;
1332 uses isis-authentication-check-config;
1333 }
1334
1335 container state {
1336 config false;
1337 description
1338 "This container defines ISIS level state information.";
1339
1340 uses admin-config;
1341 uses isis-base-level-config;
1342 uses isis-metric-style-config;
1343 uses isis-authentication-check-config;
1344 }
1345
1346 container system-level-counters {
1347 description
1348 "This container defines ISIS system level counters.";
1349
1350 uses system-level-counters-structural;
1351 }
1352
1353 container link-state-database {
1354 config false;
1355 description
1356 "This container defines ISIS LSDB.";
1357
1358 list lsp {
1359 key "lsp-id";
1360 description
1361 "This list describes LSPs in the LSDB.";
1362 uses lsp-state;
1363 }
1364 }
1365
1366 container traffic-engineering {
1367 description
1368 "This container defines ISIS TE.";
1369
1370 container config {
1371 description
1372 "This container defines ISIS TE configuration.";
1373
1374 uses admin-config;
1375 uses isis-te-config;
1376 }
1377
1378 container state {
1379 config false;
1380 description
1381 "This container defines ISIS TE state information.";
1382
1383 uses admin-config;
1384 uses isis-te-config;
1385 }
1386 }
1387
1388 container route-preference {
1389 description
1390 "This container defines Administrative Distance (or preference)
1391 assigned to ISIS routes (level1 internal, level2 internal, level1
1392 external, level2 external).";
1393
1394 container config {
1395 description
1396 "This container defines route preference configuration.";
1397 uses isis-route-preference-config;
1398 }
1399
1400 container state {
1401 config false;
1402 description
1403 "This container defines ISIS route preference state information.";
1404 uses isis-route-preference-config;
1405 }
1406 }
1407
1408 container authentication {
1409 description
1410 "This container defines ISIS authentication.";
1411 uses isis-authentication-group;
1412 }
1413
1414 }
1415
1416 grouping isis-interface-level-group {
1417 description
1418 "This grouping defines ISIS interface level.";
1419
1420 container config {
1421 description
1422 "This container defines interface ISIS level configuration.";
1423
1424 uses isis-interface-level-config;
1425 uses admin-config;
1426 }
1427
1428 container state {
1429 config false;
1430 description
1431 "This container defines interface ISIS level state information.";
1432
1433 uses isis-interface-level-config;
1434 uses admin-config;
1435 }
1436
1437 container packet-counters {
1438 description
1439 "This container defines ISIS interface packet counters.";
1440
1441 uses packet-counters-structural;
1442 }
1443
1444 container adjacencies {
1445 config false;
1446 description
1447 "This container defines ISIS adjacencies.";
1448
1449 list adjacency {
1450 key "system-id";
1451
1452 description
1453 "List of the local system's IS-IS adjacencies.";
1454
1455 leaf system-id {
1456 type leafref {
1457 path "../state/system-id";
1458 }
1459 description
1460 "Reference to the IS neighbor.";
1461 }
1462
1463 container state {
1464 description
1465 "Operational state relating to the IS-IS adjacency with the
1466 remote system";
1467
1468 uses adjacency-state;
1469 }
1470 }
1471 }
1472
1473 container timers {
1474 description
1475 "This container defines ISIS timers.";
1476
1477 container config {
1478 description
1479 "This container defines ISIS interface hello-timers configuration.";
1480
1481 uses isis-hello-timers-config;
1482 }
1483
1484 container state {
1485 config false;
1486 description
1487 "This container defines ISIS interface hello-timers state.";
1488
1489 uses isis-hello-timers-config;
1490 }
1491 }
1492
1493 container afi-safi {
1494 description
1495 "This container defines address-family specific configuration
1496 and state information.";
1497
1498 uses isis-if-afi-safi-list;
1499 }
1500
1501 container hello-authentication {
1502 description
1503 "This container defines ISIS authentication.";
1504
1505 uses isis-hello-authentication-group;
1506 }
1507 }
1508
1509
1510 grouping isis-top {
1511 description
1512 "This grouping define top-level ISIS model data.";
1513
1514 container isis {
1515 description
1516 "This container defines top-level ISIS configuration and state
1517 information.";
1518
1519 container global {
1520 description
1521 "This container defines global ISIS configuration and state
1522 information.";
1523
1524 uses isis-global-base;
1525 uses inter-level-propagation-policies-structural;
1526 }
1527
1528 container levels {
1529 description
1530 "This container defines ISIS level configuration and state
1531 information.";
1532 uses isis-levels;
1533 }
1534
1535 container interfaces {
1536 description
1537 "This container defines global ISIS interface configuration and
1538 state information.";
1539 uses isis-interfaces;
1540 }
1541 }
1542 }
1543
1544 grouping adjacency-state {
1545 description
1546 "This grouping defines ISIS adjacency.";
1547
1548 leaf system-id {
1549 type oc-isis-types:system-id;
1550 description
1551 "ISIS neighbor system-id.";
1552 }
1553
1554 leaf neighbor-ipv4-address {
1555 type inet:ipv4-address-no-zone;
1556 description
1557 "ISIS Neighbor IPv4 address.";
1558 }
1559
1560 leaf neighbor-ipv6-address {
1561 type inet:ipv6-address-no-zone;
1562 description
1563 "ISIS Neighbor IPv6 address.";
1564 }
1565
1566 leaf neighbor-snpa {
1567 type oc-isis-types:snpa;
1568 description
1569 "ISIS neighbor SNPA.";
1570 }
1571
1572 leaf local-extended-circuit-id {
1573 type oc-isis-types:extended-circuit-id;
1574 description
1575 "Local extended circuit ID.";
1576 }
1577 leaf neighbor-extended-circuit-id {
1578 type oc-isis-types:extended-circuit-id;
1579 description
1580 "ISIS neighbor extended circuit ID.";
1581 }
1582
1583 leaf priority {
1584 type uint8 {
1585 range "0..127";
1586 }
1587 description
1588 "Priority of the neighboring IS(LAN Hello only).";
1589 }
1590
1591 leaf dis-system-id {
1592 type oc-isis-types:system-id;
1593 description
1594 "DIS System ID(LAN hello only).";
1595 }
1596
1597 leaf neighbor-circuit-type {
1598 type oc-isis-types:level-type;
1599 description
1600 "Received ISIS circuit type (level-1, level-2, level-1-2).";
1601 }
1602
1603 leaf adjacency-type {
1604 type oc-isis-types:level-type;
1605 description
1606 "Formed ISIS adjacency type(level-1, level-2, level-1-2).";
1607 }
1608
1609 leaf adjacency-state {
1610 type oc-isis-types:isis-interface-adj-state;
1611 description
1612 "P2P 3-way ISIS adjacency state(up, down, init, failed).";
1613 reference "RFC4303. TLV 240.";
1614 }
1615
1616 leaf remaining-hold-time {
1617 type uint16;
1618 units seconds;
1619 description
1620 "Holding time in seconds for adjacency. This value is based on received
1621 hello PDUs and the elapsed time since receipt.";
1622 }
1623
1624 leaf up-time {
1625 type yang:timestamp;
1626 description
1627 "Adjacency up time.";
1628 }
1629
1630 leaf multi-topology {
1631 type boolean;
1632 description
1633 "When set to true, ISIS multi-topology is supported.";
1634 reference "RFC5129. TLV 229.";
1635 }
1636
1637 leaf-list topology {
1638 type identityref {
1639 base oc-isis-types:AFI_SAFI_TYPE;
1640 }
1641 description
1642 "ISIS topology type support(ipv4-unicast, ipv6-unicast,
1643 ipv4-multicast, ipv6-multicast).";
1644 }
1645
1646 leaf restart-support {
1647 type boolean;
1648 description
1649 "When set to true, Graceful-restart signaling is supported.";
1650 }
1651
1652 leaf restart-suppress {
1653 type boolean;
1654 description
1655 "When set to true, adjacency is not advertised. The SA bit is used by a
1656 starting router to request that its neighbor suppress advertisement of
1657 the adjacency to the starting router in the neighbor's LSPs.";
1658 }
1659
1660 leaf restart-status {
1661 type boolean;
1662 description
1663 "When set to true, neighbor is being helped. The RR bit is used by a
1664 (re)starting router to signal to its neighbors that a (re)start is in
1665 progress.";
1666 }
1667
1668 leaf-list area-address {
1669 type oc-isis-types:area-address;
1670 description
1671 "List of ISIS area-address(es).";
1672 }
1673
1674 leaf-list nlpid {
1675 type enumeration {
1676 enum IPV4 {
1677 description
1678 "IPv4 Address family.";
1679 }
1680 enum IPV6 {
1681 description
1682 "IPv6 Address family.";
1683 }
1684 }
1685 description
1686 "Supported Protocol. IPv4 is defined as (0xcc)
1687 and IPv6 - (0x8e). ISIS reference is TLV 129.";
1688 }
1689
1690 // TODO(bogdanov): update when BFD model is integrated.
1691 //leaf ipv4-bfd-status {
1692 //type oc-isis-types:bfd-state;
1693 //description
1694 // "IPv4 BFD session status.";
1695 //}
1696 //leaf ipv6-bfd-status {
1697 //type oc-isis-types:bfd-state;
1698 //description
1699 // "IPv4 BFD session status. ";
1700 //}
1701
1702 }
1703
1704 grouping packet-counters-generic-state {
1705 description
1706 "Operational state parameters relating to LSP packet counters.";
1707
1708 leaf received {
1709 type yang:counter32;
1710 description
1711 "The number of the specified type of PDU received on the interface.";
1712 }
1713 leaf processed {
1714 type yang:counter32;
1715 description
1716 "The number of the specified type of PDU received on the interface
1717 that have been processed by the local system.";
1718 }
1719 leaf dropped {
1720 type yang:counter32;
1721 description
1722 "The number of the specified type of PDU received on the interface
1723 that have been dropped.";
1724 }
1725
1726 leaf sent {
1727 type yang:counter32;
1728 description
1729 "The number of the specified type of PDU that have been sent by the
1730 local system on the interface.";
1731 }
1732
1733 leaf retransmit {
1734 type yang:counter32;
1735 description
1736 "The number of the specified type of PDU that that have been
1737 retransmitted by the local system on the interface.";
1738 }
1739 }
1740
1741 grouping packet-counters-structural {
1742 description
1743 "This grouping defines ISIS packet counter state.";
1744
1745 container lsp {
1746 description
1747 "This container defines LSP packet counters.";
1748
1749 container state {
1750 config false;
1751 description
1752 "This container defines LSP PDU counters.";
1753
1754 uses packet-counters-generic-state;
1755 }
1756 }
1757
1758 container iih {
1759 description
1760 "This container defines IIH packet counters.";
1761
1762 container state {
1763 config false;
1764 description
1765 "Operational counters relating to IIH PDUs";
1766
1767 uses packet-counters-generic-state;
1768 }
1769 }
1770
1771 container ish {
1772 description
1773 "This container defines ISH packet counters.";
1774
1775 container state {
1776 config false;
1777 description
1778 "Operational state relating to ISH PDUs.";
1779
1780 uses packet-counters-generic-state;
1781 }
1782 }
1783
1784 container esh {
1785 description
1786 "This container defines ESH packet counters.";
1787 container state {
1788 config false;
1789 description
1790 "Operational state relating to ESH PDUs";
1791
1792 uses packet-counters-generic-state;
1793 }
1794 }
1795
1796 container psnp {
1797 description
1798 "This container defines PSNP packet counters.";
1799
1800 container state {
1801 config false;
1802 description
1803 "Packet counters relating to PSNPs.";
1804
1805 uses packet-counters-generic-state;
1806 }
1807 }
1808
1809 container csnp {
1810 description
1811 "Operational state parameters relating to CSNPs.";
1812
1813 container state {
1814 config false;
1815 description
1816 "Packet counters relating to CSNPs.";
1817
1818 uses packet-counters-generic-state;
1819 }
1820 }
1821
1822 container unknown {
1823 description
1824 "Operational state parameters relating to IS-IS PDUs that are not
1825 otherwise classified - referred to as Unknown PDUs.";
1826
1827 container state {
1828 config false;
1829 description
1830 "Packet counters relating to unknown PDUs.";
1831
1832 uses packet-counters-generic-state;
1833 }
1834 }
1835 }
1836
1837 grouping system-level-counters-state {
1838 description
1839 "IS-IS counters that are relevant to the system IS-IS context.";
1840
1841 leaf corrupted-lsps {
1842 type yang:counter32;
1843 description
1844 "Number of corrupted in-memory LSPs detected. LSPs received from the
1845 wire with a bad checksum are silently dropped and not counted. LSPs
1846 received from the wire with parse errors are counted by lsp-errors. MIB
1847 Entry: SysCorrLSPs.";
1848 }
1849
1850 leaf database-overloads {
1851 type yang:counter32;
1852 description
1853 "Number of times the database has become
1854 overloaded.
1855 MIB entry: SysLSPL(Level)DbaseOloads.";
1856 }
1857
1858 leaf manual-address-drop-from-areas {
1859 type yang:counter32;
1860 description
1861 "Number of times a manual address has been dropped from area.
1862 MIB Entry: SysManAddrDropFromAreas.";
1863 }
1864
1865 leaf exceed-max-seq-nums {
1866 type yang:counter32;
1867 description
1868 "The number of times the system has attempted to exceed the maximum
1869 sequence number. MIB Entry: SysAttmptToExMaxSeqNums.";
1870 }
1871 leaf seq-num-skips {
1872 type yang:counter32;
1873 description
1874 "Number of times a sequence number skip has occurred. MIB Entry:
1875 SysSeqNumSkips.";
1876 }
1877
1878 leaf own-lsp-purges {
1879 type yang:counter32;
1880 description
1881 "Number of times a zero-aged copy of the system's
1882 own LSP is received from some other node.
1883 MIB Entry: isisSysOwnLSPPurges.";
1884 }
1885
1886 leaf id-len-mismatch {
1887 type yang:counter32;
1888 description
1889 "Number of times a PDU is received with a different value for ID field
1890 length from that of the receiving system. MIB Entry:
1891 isisSysIDFieldLenMismatches.";
1892 }
1893
1894 leaf part-changes {
1895 type yang:counter32;
1896 description
1897 "The number of partition changes detected. MIB Entry: SysPartChanges.";
1898 }
1899
1900 leaf max-area-address-mismatches {
1901 type yang:counter32;
1902 description
1903 "Number of times a PDU is received with a different value for
1904 MaximumAreaAddresses from that of the receiving system. MIB Entry:
1905 SysMaxAreaAddrMismatches.";
1906 }
1907
1908 leaf auth-fails {
1909 type yang:counter32;
1910 description
1911 "The number of authentication key failures.
1912 MIB Entry: SysAuthFails.";
1913 }
1914
1915 leaf spf-runs {
1916 type yang:counter32;
1917 description
1918 "The number of times SPF was ran at this level.";
1919 }
1920
1921 leaf auth-type-fails {
1922 type yang:counter32;
1923 description
1924 "The number of authentication type mismatches.";
1925 }
1926
1927 leaf lsp-errors {
1928 type yang:counter32;
1929 description
1930 "The number of received LSPs with errors.";
1931 }
1932 }
1933
1934 grouping system-level-counters-structural {
1935 description
1936 "This grouping defines system level counters.";
1937
1938 container state {
1939 config false;
1940 description
1941 "The container defines a list of system counters for the IS.";
1942
1943 uses system-level-counters-state;
1944 }
1945 }
1946
1947 grouping circuit-counters-state {
1948 description
1949 "Operational state parameters relating to counters specific to one
1950 interface or circuit.";
1951
1952 leaf adj-changes {
1953 type yang:counter32;
1954 description
1955 "Number of times an adjacency state change has occurred on this circuit.
1956 MIB Entry: CircAdjChanges.";
1957 }
1958
1959 leaf init-fails {
1960 type yang:counter32;
1961 description
1962 "Number of times initialization of this circuit has failed. This counts
1963 events such as PPP NCP failures. MIB Entry: CircInitFails.";
1964 }
1965
1966 leaf rejected-adj {
1967 type yang:counter32;
1968 description
1969 "Number of times an adjacency has been rejected on this circuit. MIB
1970 Entry: CircRejAdjs.";
1971 }
1972
1973 leaf id-field-len-mismatches {
1974 type yang:counter32;
1975 description
1976 "Number of times an IS-IS control PDU with an ID field length different
1977 from that for this system has been received.
1978 MIB Entry: CircIDFieldLenMismatches.";
1979 }
1980
1981 leaf max-area-address-mismatches {
1982 type yang:counter32;
1983 description
1984 "Number of times an IS-IS control PDU with a max area address field
1985 different from that for this system has been received. MIB Entry:
1986 CircMaxAreaAddrMismatches.";
1987 }
1988
1989 leaf auth-type-fails {
1990 type yang:counter32;
1991 description
1992 "Number of times an IS-IS control PDU with an auth type field different
1993 from that for this system has been received. MIB Entry:
1994 CircAuthTypeFails.";
1995 }
1996
1997 leaf auth-fails {
1998 type yang:counter32;
1999 description
2000 "Number of times an IS-IS control PDU with the correct auth type has
2001 failed to pass authentication validation. MIB Entry: CircAuthFails.";
2002 }
2003
2004 leaf lan-dis-changes {
2005 type yang:counter32;
2006 description
2007 "Number of times the Designated IS has changed on this circuit at this
2008 level. If the circuit is point to point, this count is zero. MIB Entry:
2009 CircLANDesISChanges.";
2010 }
2011
2012 leaf adj-number {
2013 type uint32;
2014 description
2015 "Number of adjacencies on this circuit.
2016 MIB Entry: CircNumAdj.";
2017 }
2018 }
2019
2020 grouping circuit-counters-structural {
2021 description
2022 "This grouping defines circuit counters.";
2023
2024 container state {
2025 config false;
2026 description
2027 "The container defines a list of counters for IS circuit.";
2028
2029 uses circuit-counters-state;
2030 }
2031 }
2032}