blob: 104900899ac07f1888bda5dd14e5ab8140471ac8 [file] [log] [blame]
Sean Condonfae8e662016-12-15 10:25:13 +00001module msea-cfm {
2
3 namespace "http://www.microsemi.com/microsemi-edge-assure/msea-cfm";
4 prefix "msea-cfm"; //MicroSemi EdgeAssure (msea)
5
6 import ietf-yang-types {
7 prefix yang;
8 revision-date 2013-07-15;
9 }
10 import ietf-inet-types {
11 prefix inet;
12 revision-date 2013-07-15;
13 }
14 import msea-types {
15 prefix msea;
16 revision-date 2016-02-29;
17 }
18
19 organization
20 "Microsemi Inc., FTD Division";
21
22 contact
23 "Web URL: http://www.microsemi.com/
24 E-mail: info@microsemi.com
25 Postal: Microsemi Corporation Corporate Headquarters
26 One Enterprise Aliso Viejo,
27 CA 92656
28 U.S.A.
29 Phone: +1 949 380 6100
30 Fax: +1 949 215-4996";
31
32 description
33 "This YANG module is a fork of the original mef-cfm YANG Module defined in MEF 38
34 This fork is done specifically to suit the EdgeAssure SFP which has some extra
35 constraints that are not handled by the original YANG.
36
37 Consideration was given to using 'deviations' in a separate YANG file as an
38 alternative to forking, but due to lack of full support for deviations in
39 Cisco/Tail-f NSO 4.1.1 (Jan 2016) this was not feasible.
40
41 This YANG is meant to mirror exactly the initial behaviour of the EdgeAssure
42 and present that to Client systems at the interface level (the alternative
43 being to raise exceptions when a constraint is broken). This is mostly
44 implemented through 'must' statements.
45
46 Copyright 2016 Microsemi Inc.
47 All rights reserved.";
48
49 revision "2016-02-29" {
50 description
51 "Initial EdgeAssure version forked from mef-cfm 2012-04-16 - Sean Condon, Microsemi";
52 reference
53 "Service OAM Fault Management YANG Modules (MEF 38), April 2012";
54 }
55
56 //
57 // Type definitions related to CFM
58 //
59
60 typedef lbm-transaction-id-type {
61 type uint32;
62
63 description
64 "A loopback transaction identifier";
65 reference
66 "[802.1q] 21.7.3";
67 }
68
69 typedef fault-alarm-defect-type {
70 type enumeration {
71 enum remote-rdi {
72 description "Indicates the aggregate health of the remote MEPs.";
73 }
74 enum remote-mac-error {
75 description "Indicates that one or more of the remote MEPs is
76 reporting a failure in its Port Status TLV or
77 Interface Status TLV.";
78 }
79 enum remote-invalid-ccm {
80 description "Indicates that at least one of the Remote MEP
81 state machines is not receiving valid CCMs
82 from its remote MEP.";
83 }
84 enum invalid-ccm {
85 description "Indicates that one or more invalid CCMs has been
86 received and that 3.5 times that CCMs transmission
87 interval has not yet expired.";
88 }
89 enum cross-connect-ccm {
90 description "Indicates that one or more cross connect CCMs has been
91 received and that 3.5 times of at least one of those
92 CCMs transmission interval has not yet expired.";
93 }
94 enum none {
95 description "Indicates that all defects of all types should
96 be ignored.";
97 }
98 }
99
100 description
101 "An enumerated value indicating the highest priority defect.";
102 reference
103 "[802.1q] 20.33.9";
104 }
105
106 typedef fault-alarm-defect-bits-type {
107 type bits {
108 bit remote-rdi {
109 description "Indicates that at least one of the Remote MEP state machines is
110 receiving valid CCMs from its remote MEP that has the RDI bit set.";
111 }
112 bit remote-mac-error {
113 description "One or more of the remote MEPs is reporting a failure
114 in its Port Status TLV or Interface Status";
115 }
116 bit remote-invalid-ccm {
117 description "At least one of the Remote MEP state machines is not
118 receiving valid CCMs from its remote MEP";
119 }
120 bit invalid-ccm {
121 description "One or more invalid CCMs has been received";
122 }
123 bit cross-connect-ccm {
124 description "One or more cross connect CCMs has been received";
125 }
126 }
127
128 description
129 "A set of bits indicating the the current defects";
130 reference
131 "[802.1q] 20.33.9";
132 }
133
134 typedef remote-mep-state-type {
135 type enumeration {
136 enum idle {
137 description
138 "Indicates momentary state during reset.";
139 }
140 enum start {
141 description
142 "Indicates the timer has not expired since the state machine was
143 reset, and no valid CCM has yet been received.";
144 }
145 enum failed {
146 description
147 "Indicates The timer has expired, both since the state machine
148 was reset, and since a valid CCM was received.";
149 }
150 enum ok {
151 description
152 "Indicates The timer has not expired since a valid CCM was
153 received.";
154 }
155 }
156 description
157 "An enumerated value indicating the operational state of a Remote
158 MEP state machine for a remote MEP.";
159 reference
160 "[802.1q] 12.14.7.6.3:b
161 IEEE8021-CFM-MIB.Dot1agCfmRemoteMepState";
162 }
163
164 typedef ltm-transaction-id-type {
165 type uint32;
166
167 description
168 "A linktrace transaction identifier";
169 reference
170 "[802.1q] 21.8.3";
171 }
172
173 //
174 // Groupings related to CFM
175 //
176
177 grouping target-address-group {
178 description
179 "An indication of a destination MEP, either:
180 1) The MEPID of a MEP; or
181 2) An Individual destination MAC address";
182
183 reference "[802.1q] 12.14.7.3.2:b";
184
185 choice address-type {
186 description "Either a mac address or a MEP id for the target";
187 case mac-address {
188 leaf mac-address {
189 type yang:mac-address;
190 description
191 "Target MAC address";
192 }
193 }
194 case mep-id {
195 leaf mep-id {
196 type msea:mep-id-type;
197 description
198 "Target MEP ID";
199 }
200 }
201 }
202 }
203
204 grouping maintenance-domain-reference {
205 description
206 "This grouping uniquely identifies a maintenance domain.";
207
208 leaf maintenance-domain {
209 type leafref {
210 path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:id";
211 }
212 description
213 "A reference to a specific Maintenance Domain.";
214 }
215 }
216
217 grouping maintenance-association-reference {
218 description
219 "This grouping uniquely identifies a maintenance association. It consists
220 of a maintence-domain-reference and a maintenance-association leafref";
221
222 uses maintenance-domain-reference;
223
224 leaf maintenance-association {
225 type leafref {
226 path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association/msea-cfm:id";
227 }
228 description
229 "A reference to a specific Maintenance Association.";
230 }
231 }
232
233 grouping maintenance-association-end-point-reference {
234 description
235 "This grouping uniquely identifies a maintenance association. It consists
236 of a maintence-association-reference and a maintenance-association-end-point
237 leafref";
238
239 uses maintenance-association-reference;
240
241 leaf maintenance-association-end-point {
242 type leafref {
243 path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association[msea-cfm:id=current()/../maintenance-association]/msea-cfm:maintenance-association-end-point/msea-cfm:mep-identifier";
244 }
245 description
246 "A reference to a specific Maintenance association End Point.";
247 }
248 }
249
250 grouping mep-notification-reference {
251
252 description "A simple MEP reference that can be used in notifications";
253 leaf maintenance-domain {
254 type uint8;
255 description
256 "A reference to a specific Maintenance Domain.";
257 }
258
259 leaf maintenance-association {
260 type uint8;
261 description
262 "A reference to a specific Maintenance Association.";
263 }
264
265 leaf maintenance-association-end-point {
266 type msea:mep-id-type;
267 description
268 "A reference to a specific Maintenance association End Point.";
269 }
270
271 }
272
273 grouping linktrace-parameters-group {
274 description
275 "This is the group of parameters associated with linktrace sessions. It is
276 used for linktrace RPC input as well as linktrace database entries.";
277
278 container target-address {
279 description
280 "Target MAC address or MEP ID for the Linktrace session.";
281 uses target-address-group;
282 }
283
284 leaf transmit-ltm-flags {
285 type bits {
286 bit use-fdb-only {
287 description
288 "If set, indicates that only MAC addresses learned in a
289 Bridge’s FDB, and not information saved in the MIP CCM
290 Database, is to be used to determine the Egress Port.";
291 reference "[802.1q] 21.8.1";
292 }
293 }
294
295 description
296 "The Flags field for LTMs transmitted by the MEP";
297 reference
298 "[802.1q] 12.14.7.4.2:b";
299 }
300
301 leaf default-ttl {
302 type uint8;
303 default 64;
304
305 description
306 "An initial value for the LTM TTL field";
307 reference
308 "[802.1q] 12.14.7.4.2:d";
309 }
310 } //End of linktrace-parameters-group
311
312
313 grouping port-id-tlv-group {
314 description
315 "Data definitions associated with the Port ID TLV";
316
317 reference
318 "[802.1AB] 9.5.3";
319
320 choice port-id-subtype {
321 leaf interface-alias {
322 type string {
323 length "0..64";
324 }
325 description
326 "The ifAlias field from the Interfaces Group MIB";
327 reference
328 "[RFC2863]";
329 }
330
331 leaf port-component {
332 type string {
333 length "0..32";
334 }
335 description
336 "EntPhysicalAlias when entPhysClass has a value of port(10) or
337 backplane(4)";
338 reference
339 "[RFC2737]";
340 }
341 leaf mac-address {
342 type yang:mac-address;
343 description
344 "A MAC address";
345 }
346 leaf network-address {
347 type string;
348 description
349 "network-address is an octet string that identifies a particular network
350 address family and an associated network address that are
351 encoded in network octet order. An IP address, for example,
352 would be encoded with the first octet containing the IANA
353 Address Family Numbers enumeration value for the specific
354 address type and octets 2 through n containing the address
355 value";
356 reference
357 "[802.1AB] Table 9.2";
358 }
359
360 leaf interface-name {
361 type string {
362 length "0..64";
363 }
364 description
365 "The ifName field from the Interfaces Group MIB";
366 reference
367 "[RFC2863]";
368 }
369 leaf agent-circuit-id {
370 type string;
371 description
372 "Agent circuit ID";
373 reference
374 "[RFC3046]";
375 }
376 leaf local {
377 type string;
378 description
379 "A locally defined identifier";
380 reference
381 "[802.1AB] Table 9.3";
382 }
383 }
384 } //End of port-id-tlv-group
385
386
387 grouping sender-id-tlv-group {
388 description
389 "Data definitions associated with the Sender ID TLV";
390
391 reference
392 "[802.1q] 21.5.3";
393
394 choice chassis-id-subtype {
395 description
396 "The chassis-id-subtype contains the chassis ID entity that is listed in
397 the chassis ID field. This is a combination of the 'Chassis ID Subtype'
398 and 'chsssis ID' fields";
399
400 reference
401 "[802.1AB] 9.5.2.2";
402
403 leaf chassis-component {
404 type string {
405 length "0..32";
406 }
407 description
408 "This leaf contains the content of EntPhysicalAlias when entPhysClass has
409 a value of chassis(3)'";
410 reference
411 "[RFC2737]";
412 }
413
414 leaf interface-alias {
415 type string {
416 length "0..64";
417 }
418 description
419 "The IfAlias field from the Interfaces Group MIB";
420 reference
421 "[RFC2863]";
422 }
423
424 leaf port-component {
425 type string {
426 length "0..32";
427 }
428 description
429 "The EntPhysicalAlias from the Interfaces Group MIB when entPhysClass has
430 a value of port(10) or backplane(4)";
431 reference
432 "[RFC2737]";
433 }
434
435 leaf mac-address-type {
436 type yang:mac-address;
437
438 description
439 "An IEEE 802-2001 Ethernet MAC Address";
440 reference
441 "[802-2001]";
442 }
443
444 leaf network-address {
445 type string;
446 description
447 "network-address is an octet string that identifies a particular network
448 address family and an associated network address that are encoded in
449 network octet order. An IP address, for example, would be encoded with
450 the first octet containing the IANA Address Family Numbers enumeration
451 value for the specific address type and octets 2 through n containing
452 the address value";
453 reference
454 "[802.1AB] Table 9.2";
455 }
456
457 leaf interface-name {
458 type string {
459 length "0..64";
460 }
461 description
462 "IfName";
463 reference
464 "[RFC2863]";
465 }
466
467 leaf local {
468 type string;
469 description
470 "A locally assigned alpha-numeric string.";
471 reference
472 "[802.1AB] Table 9.2";
473 }
474 }
475
476 container management-address {
477 description
478 "Data definitions related to the management address fields defined
479 in a Sender ID TLV";
480 reference
481 "[802.1Q] Section 21.5.3";
482 choice management-address-choice {
483 case udp-ipv4 {
484 description
485 "Represents an IPv4 UDP transport address consisting of an IPv4 address,
486 and a port number.";
487 reference
488 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv4";
489 leaf udp-ipv4-address {
490 type inet:ipv4-address;
491 }
492 leaf udp-ipv4-port {
493 type inet:port-number;
494 }
495 }
496
497 case udp-ipv6 {
498 description
499 "Represents an IPv6 UDP transport address consisting of an IPv6 address,
500 and a port number.";
501 reference
502 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv6";
503 leaf udp-ipv6-address {
504 type inet:ipv6-address;
505 }
506 leaf udp-ipv6-port {
507 type inet:port-number;
508 }
509 }
510
511 case udp-ipv4z {
512 description
513 "Represents a UDP transport address consisting of an IPv4 address, a zone
514 index and a port number.";
515 reference
516 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv4z";
517 leaf udp-ipv4z-address {
518 type inet:ipv4-address;
519 }
520 leaf udp-ipv4z-index {
521 type uint32;
522 }
523 leaf udp-ipv4z-port {
524 type inet:port-number;
525 }
526 }
527
528 case udp-ipv6z {
529 description
530 "Represents a UDP transport address consisting of an IPv6 address, a zone
531 index and a port number.";
532 reference
533 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv6z";
534 leaf udp-ipv6z-address {
535 type inet:ipv6-address;
536 }
537 leaf udp-ipv6z-index {
538 type uint32;
539 }
540 leaf udp-ipv6z-port {
541 type inet:port-number;
542 }
543 }
544
545 case tcp-ipv4 {
546 description
547 "Represents an IPv4 TCP transport address consisting of an IPv4 address,
548 and a port number.";
549 reference
550 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv4";
551 leaf tcp-ipv4-address {
552 type inet:ipv4-address;
553 }
554 leaf tcp-ipv4-port {
555 type inet:port-number;
556 }
557 }
558
559 case tcp-ipv6 {
560 description
561 "Represents an IPv6 TCP transport address consisting of an IPv6 address,
562 and a port number.";
563 reference
564 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv6";
565 leaf tcp-ipv6-address {
566 type inet:ipv6-address;
567 }
568 leaf tcp-ipv6-port {
569 type inet:port-number;
570 }
571 }
572
573 case tcp-ipv4z {
574 description
575 "Represents a TCP IPv4 transport address consisting of an IPv4 address, a
576 zone index and a port number.";
577 reference
578 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv4z";
579 leaf tcp-ipv4z-address {
580 type inet:ipv4-address;
581 }
582 leaf tcp-ipv4z-index {
583 type uint32;
584 }
585 leaf tcp-ipv4z-port {
586 type inet:port-number;
587 }
588 }
589
590 case tcp-ipv6z {
591 description
592 "Represents a TCP IPv6 transport address consisting of an IPv6 address,
593 a zone index and a port number.";
594 reference
595 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv6z";
596 leaf tcp-ipv6z-address {
597 type inet:ipv6-address;
598 }
599 leaf tcp-ipv6z-index {
600 type uint32;
601 }
602 leaf tcp-ipv6z-port {
603 type inet:port-number;
604 }
605 }
606
607 case sctp-ipv4 {
608 description
609 "Represents an IPv4 SCTP transport address consisting of an IPv4 address,
610 and a port number.";
611 reference
612 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv4";
613 leaf sctp-ipv4-address {
614 type inet:ipv4-address;
615 }
616 leaf sctp-ipv4-port {
617 type inet:port-number;
618 }
619 }
620
621 case sctp-ipv6 {
622 description
623 "Represents an IPv6 SCTP transport address consisting of an IPv6 address,
624 and a port number.";
625 reference
626 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv6";
627 leaf sctp-ipv6-address {
628 type inet:ipv6-address;
629 }
630 leaf sctp-ipv6-port {
631 type inet:port-number;
632 }
633 }
634
635 case sctp-ipv4z {
636 description
637 "Represents an SCTP IPv4 transport address consisting of an IPv4
638 address, a zone index and a port number.";
639 reference
640 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv4z";
641 leaf sctp-ipv4z-address {
642 type inet:ipv4-address;
643 }
644 leaf sctp-ipv4z-index {
645 type uint32;
646 }
647 leaf sctp-ipv4z-port {
648 type inet:port-number;
649 }
650 }
651
652 case sctp-ipv6z {
653 description
654 "Represents an SCTP IPv6 transport address consisting of an IPv6
655 address, a zone index and a port number.";
656 reference
657 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv6z";
658 leaf sctp-ipv6z-address {
659 type inet:ipv6-address;
660 }
661 leaf sctp-ipv6z-index {
662 type uint32;
663 }
664 leaf sctp-ipv6z-port {
665 type inet:port-number;
666 }
667 }
668
669 case local {
670 leaf local-address {
671 type string {
672 length "1..255";
673 }
674 description
675 "Represents a POSIX Local IPC transport address.";
676 }
677 }
678
679 case udp-dns {
680 leaf udp-dns-address {
681 type string {
682 length "1..255";
683 }
684 description
685 "The UDP transport domain using fully qualified domain names. Represents
686 a DNS domain name followed by a colon ':' (ASCII character
687 0x3A) and a port number in ASCII. The name SHOULD be fully
688 qualified whenever possible.";
689 reference
690 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpDns";
691 }
692 }
693 case tcp-dns {
694 leaf tcp-dns-address {
695 type string {
696 length "1..255";
697 }
698 description
699 "The TCP transport domain using fully qualified domain names. Represents
700 a DNS domain name followed by a colon ':' (ASCII character
701 0x3A) and a port number in ASCII. The name SHOULD be fully
702 qualified whenever possible.";
703 reference
704 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpDns";
705 }
706 }
707 case sctp-dns {
708 leaf sctp-dns-address {
709 type string {
710 length "1..255";
711 }
712 description
713 "The SCTP transport domain using fully qualified domain names.
714 Represents a DNS domain name followed by a colon ':' (ASCII
715 character 0x3A) and a port number in ASCII. The name SHOULD be
716 fully qualified whenever possible.";
717 reference
718 "[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpDns";
719 }
720 }
721 case unidentified {
722 leaf management-domain-binary {
723 type binary;
724 description "The management address domain found in the
725 Sender ID TLV encoded to base 64";
726 reference
727 "[802.1Q] Section 21.5.3";
728 }
729
730 leaf management-address-binary {
731 type binary;
732 description "The management address found in the
733 Sender ID TLV encoded to base 64";
734 reference
735 "[802.1Q] Section 21.5.3";
736 }
737 }
738 }
739 }
740 } //End of sender-id-tlv-group
741
742
743 grouping linktrace-reply-grouping {
744
745 description
746 "The attributes of a Linktrace reply.";
747
748 leaf transaction-id {
749 type ltm-transaction-id-type;
750
751 description
752 "The LTM Transaction Identifier to which the LTR entries will be
753 attached";
754 reference
755 "[802.1q] 12.14.7.5.2:b";
756 }
757
758 uses linktrace-parameters-group;
759
760 list reply {
761 key reply-order;
762
763 description
764 "The list of LTRs associated with a specific Linktrace
765 transaction.";
766 leaf reply-order {
767 type uint32;
768
769 description
770 "An index to distinguish among multiple LTRs with the same LTR
771 transaction-id field value. reply-order are
772 assigned sequentially from 1, in the order that the
773 Linktrace Initiator received the LTR";
774 reference "[802.1q] 12.14.7.5.2:c";
775 }
776
777 leaf reply-ttl {
778 type uint32;
779
780 description
781 "The integer Reply TTL field value returned in the LTR.";
782 reference
783 "[802.1q] 12.14.7.5.3:b";
784 }
785
786 leaf forwarded {
787 type boolean;
788
789 description
790 "A Boolean value stating whether an LTM was forwarded by
791 the responding MP.";
792 reference
793 "[802.1q] 12.14.7.5.3:c";
794 }
795
796 leaf terminal-mep {
797 type boolean;
798
799 description
800 "A Boolean value stating whether the forwarded LTM reached
801 a MEP for its MA.";
802 reference
803 "[802.1q] 12.14.7.5.3:d";
804 }
805
806 leaf last-egress-identifier {
807 type binary {
808 length 8;
809 }
810
811 description
812 "An octet string holding the Last Egress Identifier field
813 returned in the LTR Egress Identifier TLV of the LTR.";
814 reference
815 "[802.1q] 12.14.7.5.3:e";
816 }
817
818 leaf next-egress-identifier {
819 type binary {
820 length 8;
821 }
822
823 description
824 "An octet string holding the Next Egress Identifier field
825 returned in the LTR Egress Identifier TLV of the LTR";
826 reference
827 "[802.1q] 12.14.7.5.3:f";
828 }
829
830 leaf ltr-relay {
831 type enumeration {
832 enum hit {
833 description "Indicates the LTM reached an MP whose MAC
834 address matches the target MAC address.";
835 }
836 enum filtering-database {
837 description "Indicates the Egress Port was determined by
838 consulting the Filtering Database.";
839 }
840 enum mip-ccm-database {
841 description "Indicates the Egress Port was determined by
842 consulting the MIP CCM Database.";
843 }
844 }
845
846 description
847 "An enumerated value indicating the value returned in the
848 Relay Action field.";
849 reference
850 "[802.1q] 12.14.7.5.3:g, Table 21-27
851 IEEE8021-CFM-MIB.Dot1agCfmRelayActionFieldValue";
852 }
853
854 uses sender-id-tlv-group;
855
856 leaf ingress-action {
857 type enumeration {
858 enum ok {
859 description "Indicates the target data frame would be
860 passed through to the MAC Relay Entity.";
861 }
862 enum down {
863 description "Indicates the Bridge Ports MAC Operational
864 parameter is false.";
865 }
866 enum blocked {
867 description "Indicates the target data frame would not
868 be forwarded if received on this Port due
869 to active topology enforement.";
870 }
871 enum vid {
872 description "Indicates the ingress port is not in the
873 member set of the LTMs VID, and ingress
874 filtering is enabled, so the target data
875 frame would be filtered by ingress filtering.";
876 }
877 }
878
879 description
880 "An enumerated value indicating the value returned in the
881 Ingress Action field. This leaf is not present if no value
882 is returned in the LTR.";
883 reference
884 "[802.1q] 12.14.7.5.3:k, Table 21-30
885 IEEE8021-CFM-MIB.Dot1agCfmIngressActionFieldValue";
886 }
887
888 leaf ingress-mac {
889 type yang:mac-address;
890
891 description
892 "The MAC address returned in the Ingress MAC Address field.
893 This leaf is not present if no value is returned in the LTR.";
894 reference
895 "[802.1q] 12.14.7.5.3:l";
896 }
897
898 container ingress-port-id {
899 uses port-id-tlv-group;
900
901 description
902 "The Ingress Port ID field and the corresponding port ID value.
903 This leaf is not present if no value is returned in the LTR.";
904 reference
905 "[802.1q] 12.14.7.5.3:m";
906 }
907
908 leaf egress-action {
909 type enumeration {
910 enum ok {
911 description "Indicates the targeted data frame would be
912 forwarded.";
913 }
914 enum down {
915 description "Indicates the Egress Port can be identified,
916 but that Bridge Ports MAC Operational
917 parameter is false.";
918 }
919 enum blocked {
920 description "Indicates the Egress Port can be identified,
921 but the data frame would not pass through the
922 the Egress Port due to active topology
923 management, i.e., the Bridge Port is not in the
924 Forwarding state.";
925 }
926 enum vid {
927 description "Indicates the Egress Port can be identified,
928 but the Bridge Port is not in the LTMs VIDs
929 member set, so would be filtered by egress
930 filtering.";
931 }
932 }
933
934 description
935 "An enumerated value indicating the value returned in the
936 Egress Action field. This leaf is not present if no value
937 is returned in the LTR.";
938 reference
939 "[802.1q] 12.14.7.5.3:o, Table 21-32
940 IEEE8021-CFM-MIB.Dot1agCfmIngressActionFieldValue";
941 }
942
943 leaf egress-mac {
944 type yang:mac-address;
945
946 description
947 "The MAC address returned in the Egress MAC Address field.
948 This leaf is not present if no value is returned in the LTR.";
949 reference
950 "[802.1q] 12.14.7.5.3:p";
951 }
952
953 container egress-port-id {
954 uses port-id-tlv-group;
955
956 description
957 "The Egress Port ID field and the corresponding port ID value.
958 This leaf is not present if no value is returned in the LTR.";
959 reference
960 "[802.1q] 12.14.7.5.3:p, 12.14.7.5.3:q";
961 }
962
963 leaf organization-specific-tlv {
964 type binary {
965 length "0|4 .. 1500";
966 }
967 description
968 "The OUI and contents of any Organization-Specific TLVs. This
969 leaf is not present if no value is returned in the LTR.";
970 reference
971 "[802.1q] 12.14.7.5.3:s";
972 }
973 }
974 } //End of linktrace-reply-grouping
975
976
977 //
978 // Data definitions related to CFM
979 //
980
981 container mef-cfm {
982 description "The top level container to group the
983 maintenance-domain(s)";
984
985 reference "RFC 6087 Section 4.9 ";
986
987 must "not(contains('/y1564:y1564-test/y1564:service-config/y1564:mep-config/y1564:maintenance-domain | /y1564:y1564-test/y1564:service-config/y1564:mep-config/y1564:maintenance-association | /y1564:y1564-test/y1564:service-config/y1564:mep-config/y1564:maintenance-association-end-point | /y1564:y1564-test/y1564:service-config/y1564:mep-config/y1564:remote-mep-id','msea-internal-optional'))" {
988 error-app-tag "msea-cfm-must-01";
989 error-message "A MEP cannot be deleted while it is still referenced from a Y1564 service config";
990// msea:xref-module "y-1564";
991 }
992
993 must "not(contains('/rfc2544:rfc2544-test/rfc2544:mep-config/rfc2544:maintenance-domain | /rfc2544:rfc2544-test/rfc2544:mep-config/rfc2544:maintenance-association | /rfc2544:rfc2544-test/rfc2544:mep-config/rfc2544:maintenance-association-end-point | /rfc2544:rfc2544-test/rfc2544:mep-config/rfc2544:remote-mep-id','msea-internal-optional'))" {
994 error-app-tag "msea-cfm-must-02";
995 error-message "A MEP cannot be deleted while it is still referenced from an RFC2544 config";
996// msea:xref-module "rfc-2544";
997 }
998
999 container pm-global {
1000// presence "Global level attributes for PM related measurements can be specified if present";
1001 description "A placeholder for global level Performance Measurement PM related attributes";
1002 }
1003
1004 container cfm-role {
1005 presence "When present defines the role of this device in a Maintenance Domain";
1006 description "Optional attributes that help to describe this devices role in a CFM configuration";
1007
1008 leaf role { //Microsemi specific configuration attribute
1009 description "The role that this device will play in a Maitenance Domain";
1010 type enumeration {
1011 enum customer {
1012 description "The customer role";
1013 }
1014 enum provider{
1015 description "The provider role";
1016 }
1017 enum operator {
1018 description "The operator role";
1019 }
1020 enum physical {
1021 description "The physical role";
1022 }
1023 }
1024 mandatory true;
1025 reference "IEEE 802.1Q-2014 Clause 18";
1026 }
1027
1028 leaf side { //Microsemi specific configuration attribute
1029 description "An optional attribute to indicate which end of the Maintenance Domain ";
1030 type enumeration {
1031 enum left {
1032 description "The device plays its role on the left side of the Maintenance Domain";
1033 }
1034 enum right {
1035 description "The device plays its role on the right side of the Maintenance Domain";
1036 }
1037 }
1038 default left;
1039 reference "IEEE 802.1Q-2014 Clause 18";
1040 }
1041
1042 leaf name { //Microsemi specific configuration attribute
1043 description "An identifier relating to the cfm-role that device plays in CFM.
1044 This could be the name of a customer or an operator for example";
1045 type string {
1046 length "1..40";
1047 pattern "[a-zA-Z0-9\\-_. ,]*";
1048 }
1049 mandatory true;
1050 reference "IEEE 802.1Q-2014 Clause 18";
1051 }
1052 }
1053
1054
1055 list maintenance-domain {
1056 key id;
1057
1058 max-elements 64;
1059
1060 description
1061 "A Maintenance Domain managed object is required in order to create an MA
1062 with a MAID that includes that Maintenance Domain's Name. From
1063 this Maintenance Domain managed object, all Maintenance
1064 Association managed objects associated with that Maintenance
1065 Domain managed object can be accessed, and thus controlled.";
1066 reference
1067 "[802.1q] 12.14.5";
1068
1069 leaf id {
1070 type uint8 {
1071 range 1..64;
1072 }
1073 description
1074 "A unique identifier of a Maintenance Domain. Changed to uint8 from string";
1075 reference
1076 "[802.1q] 12.14.5";
1077 }
1078
1079 choice md-name-and-type-combo {
1080 description
1081 "The value Maintenance Domain Name depends on name-type.
1082 Since the name-type defines the format for name they are
1083 combined together here";
1084
1085 mandatory true;
1086
1087 case name-none {
1088 leaf name-type-none {
1089 type empty;
1090 description "Indicates that name-type is none.
1091 When name-type is 'none' then the
1092 MA name can be up to 45 chars, because len
1093 of MD is not used";
1094 reference
1095 "[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a";
1096// msea:not-changeable;
1097 }
1098 }
1099
1100
1101 case name-character-string {
1102 leaf name { //Keep the old name
1103 type msea:identifier45 {length 1..43;}
1104
1105 description
1106 "When the name-type is 'character-string' then the name must be of
1107 type string (restricted to 43 chars - 48 bytes are allowed overall
1108 for the MD+MA incl 1 byte for type and 1 byte for len on each.
1109 Leaving 1 char for MA name, the max MD name is 43 chars)";
1110 reference
1111 "[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a";
1112
1113 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name = current()]) <= 1" {
1114 error-message "The MD 'name' (if specified) must be unique across all character string names of MDs on the device";
1115 error-app-tag "msea-cfm-must-05";
1116 }
1117
1118// msea:not-changeable;
1119 }
1120 }
1121
1122 case name-domain-name {
1123 leaf name-domain-name {
1124 type union {
1125 type inet:ip-address;
1126 type inet:domain-name { length 1..43; }
1127 }
1128
1129 description "When the name-type is 'domain-name' then the name
1130 must be of type inet:host";
1131 reference
1132 "[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a";
1133
1134 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name-domain-name = current()]) <= 1" {
1135 error-message "The MD 'name-domain-name' (if specified) must be unique across all name-domain-names of MDs on the device";
1136 error-app-tag "msea-cfm-must-06";
1137 }
1138// msea:not-changeable;
1139 }
1140 }
1141
1142 case mac-address-and-uint {
1143 leaf name-mac-address-and-uint {
1144 type msea:mac-address-and-uint-str;
1145 description "When the name-type is 'mac-address-and-uint'
1146 then the name must be a colon separated mac
1147 address followed by a number between 0 and 65536
1148 e.g. AA:BB:CC:DD:EE:FF:65536
1149 The effective length when encoded is 8 bytes";
1150 reference
1151 "[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a";
1152 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name-mac-address-and-uint = current()]) <= 1" {
1153 error-message "The MD 'name-mac-address-and-uint' (if specified) must be unique across all name-mac-address-and-uints of MDs on the device";
1154 error-app-tag "msea-cfm-must-07";
1155 }
1156// msea:not-changeable;
1157 }
1158 }
1159 }
1160
1161 leaf md-level {
1162 type msea:md-level-type;
1163 mandatory true;
1164
1165// msea:not-changeable;
1166
1167 description
1168 "Integer identifying the Maintenance Domain Level (MD Level). Higher
1169 numbers correspond to higher Maintenance Domains, those with the
1170 greatest physical reach, with the highest values for customers'
1171 CFM PDUs. Lower numbers correspond to lower Maintenance
1172 Domains, those with more limited physical reach, with the lowest
1173 values for CFM PDUs protecting single bridges or physical links.
1174 Changed to mandatory";
1175
1176 reference
1177 "[802.1q] 12.14.5.1.3:b";
1178 }
1179
1180 list maintenance-association {
1181 key id;
1182 max-elements 64;
1183
1184 description
1185 "This list represents Maintenance Entity Groups (Y.1731) or
1186 Maintenance Associations (802.1ag). MEGs/MAs are sets of
1187 MEPs, each configured to the same service inside a common
1188 OAM domain.";
1189
1190 leaf id {
1191 type uint8 {
1192 range 1..64;
1193 }
1194 description
1195 "A unique identifier of a Maintenance Association. Changed to uint8 from string";
1196 reference
1197 "[802.1q] 12.14.6";
1198 }
1199
1200 choice ma-name-and-type-combo {
1201 description
1202 "The value Maintenance Association Name depends on name-type.
1203 Since the name-type defines the format for name, they are
1204 combined together here";
1205
1206 mandatory true;
1207
1208 case name-character-string {
1209 leaf name {
1210 type msea:identifier45;
1211
1212 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:name = current()]) <= 1" {
1213 error-message "The MA 'name' (if specified) must be unique across all MAs within this MD";
1214 error-app-tag "msea-cfm-must-10";
1215 }
1216
1217 must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 8 * boolean(current()/../../msea-cfm:name-mac-address-and-uint) -1 * boolean(current()/../../msea-cfm:name-type-none) + string-length(current()) <= 44" {
1218 error-message "The MA 'name' and MD 'name' length together must not exceed 44 chars when MD is not name-type-none or 45 chars for MA name when MD is name-type-none";
1219 error-app-tag "msea-cfm-must-11";
1220 }
1221
1222// msea:not-changeable;
1223
1224 description
1225 "When the name-type is 'character-string' then the name must be of
1226 type string. Length can be 45 when MD name-type is none (as 1 byte
1227 is used on each for type, and 1 byte used on MA for len out of an
1228 allowed 48 bytes). When MD name-type is not 'none' then the
1229 combined length of both is 44 chars)";
1230 reference
1231 "[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20";
1232 }
1233 }
1234
1235 case name-primary-vid {
1236 leaf name-primary-vid {
1237 type union {
1238 type enumeration {
1239 enum 0 {description "0 to use the MA's VID";}
1240 }
1241 type msea:vlan-id-type;
1242 }
1243// msea:not-changeable;
1244
1245 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:name-primary-vid = current()]) <= 1" {
1246 error-message "The MA 'name-primary-vid' (if specified) must be unique across all MAs within this MD";
1247 error-app-tag "msea-cfm-must-12";
1248 }
1249
1250 must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 2 <= 44" {
1251 error-message "The MA 'primary-vid' (2 octets) and MD 'name' length together must not exceed 44 bytes.";
1252 error-app-tag "msea-cfm-must-13";
1253 }
1254
1255 description
1256 "When the name-type is 'primary-vid' then the name must be of type
1257 vlan-id-type";
1258 reference
1259 "[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20";
1260 }
1261 }
1262
1263 case name-uint16 {
1264 leaf name-uint16 {
1265 type uint16;
1266// msea:not-changeable;
1267
1268 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:name-uint16 = current()]) <= 1" {
1269 error-message "The MA 'name-uint16' (if specified) must be unique across all MAs within this MD";
1270 error-app-tag "msea-cfm-must-14";
1271 }
1272
1273 must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 2 <= 44" {
1274 error-message "The MA 'name-uint16' (2 octets) and MD 'name' or 'name'domain-name' length together must not exceed 44 bytes";
1275 error-app-tag "msea-cfm-must-15";
1276 }
1277
1278 description
1279 "When the name-type is 'uint16' then the name must be 0-65535";
1280 reference
1281 "[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20";
1282 }
1283 }
1284
1285 case name-rfc2685-vpn-id {
1286 leaf name-rfc2685-vpn-id {
1287 type binary {
1288 length 7;
1289 }
1290// msea:not-changeable;
1291
1292 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:name-rfc2685-vpn-id = current()]) <= 1" {
1293 error-message "The MA 'name-rfc2685-vpn-id' (if specified) must be unique across all MAs within this MD";
1294 error-app-tag "msea-cfm-must-16";
1295 }
1296
1297 must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 7 <= 44" {
1298 error-message "The MA 'name-rfc2685-vpn-id' (7 octets) and MD 'name' or 'name'domain-name' length together must not exceed 44 bytes";
1299 error-app-tag "msea-cfm-must-17";
1300 }
1301
1302
1303 description
1304 "When the name-type is 'rfc2685-vpn-id' then the name
1305 must be of 7 bytes encoded as base64";
1306 reference
1307 "[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20";
1308 }
1309 }
1310
1311 case name-y1731-icc {
1312 leaf name-y1731-icc {
1313 type yang:yang-identifier {
1314 length 8..13;
1315 }
1316
1317// msea:not-changeable;
1318
1319 must "boolean(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association/msea-cfm:y1731-compliant)" {
1320 error-message "The MA 'name-y1731-icc' can only be specified if y1731-compliant is present";
1321 error-app-tag "msea-cfm-must-18";
1322 }
1323
1324 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:name-y1731-icc = current()]) <= 1" {
1325 error-message "The MA 'name-y1731-icc' (if specified) must be unique across all MAs within this MD";
1326 error-app-tag "msea-cfm-must-19";
1327 }
1328
1329 must "boolean(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:name-type-none)" {
1330 error-message "name-y1731-icc can only be specified when MD name type is name-type-none";
1331 error-app-tag "msea-cfm-must-20";
1332 }
1333
1334 description
1335 "ICC-based MEG ID Format, thirteen octet field. It consists of two
1336 subfields: the ITU Carrier Code (ICC) followed by a unique MEG
1337 ID code (UMC). The ITU Carrier Code consists of 1-6
1338 left-justified characters, alphabetic, or leading alphabetic
1339 with trailing numeric. The UMC code immediately follows the ICC
1340 and shall consist of 7-12 characters, with trailing NULLs,
1341 completing the 13-character MEG ID Value. Changed type to yang-identifier";
1342 reference
1343 "[Y.1731] Annex A";
1344 }
1345 }
1346
1347 }
1348
1349 container y1731-compliant {
1350 presence "When present indicates compliance with Y-1731";
1351// msea:not-changeable;
1352
1353 must "boolean(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:name-type-none)" {
1354 error-message "Parent MD must have a name-type-none when y1731-compilant is present";
1355 error-app-tag "msea-cfm-must-21";
1356 }
1357
1358 description
1359 "A boolean flag to indicate whether the MEG ID/MAID for this MEG operates
1360 in conformance with 802.1q (if false) or Y.1731 (if true).
1361 When set to false:
1362 - The format of the MAID (Maintenance Association ID) is controlled
1363 by the name-type and name in the maintenance-association instance,
1364 and the name-type and name in the maintenance-domain instance.
1365 - The meg-id-format and meg-level leafs are ignored.
1366 - The level is controlled by the md-level leaf.
1367 When set to true:
1368 - The MEG shall be in a maintenance-domain where name-type has the value
1369 none(1).
1370 - The format of the MEG ID is as defined by meg-id-format.
1371 - The name-type in the maintenance-association is ignored.
1372 - The name leaf contains the MEG ID value unless the meg-id-format
1373 is set to 'icc-based' in which case it contains the value of the
1374 'icc-name-value' leaf
1375 - The md-level leaf is ignored, and the level is controlled
1376 by the meg-level leaf.";
1377 reference
1378 "[MEF31], MEF-SOAM-FM-MIB.mefSoamNetCfgY1731Compliant";
1379 }
1380
1381 container component-list {
1382
1383 description
1384 "A list of components each of which can be managed in a manner
1385 essentially equivalent to an 802.1Q bridge.
1386 Only one is allowed for Edge Assure, so changed to a container";
1387 reference
1388 "[802.1q] IEEE8021-CFM-V2-MIB.ieee8021CfmMaCompTable";
1389
1390 leaf-list vid {
1391 type msea:vlan-id-type;
1392// msea:not-changeable;
1393
1394 must "current()/../tag-type != 'vlan-none'" {
1395 error-message "No VID should be specified when Tag Type is 'vlan-none'";
1396 error-app-tag "msea-cfm-must-25";
1397 }
1398
1399 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../../id]/msea-cfm:maintenance-association/msea-cfm:component-list[msea-cfm:vid = current()]) <= 1" {
1400 error-message "The 'vid' (VLan ID) in a Maintenance Association must be unique in a Maintenance Domain";
1401 error-app-tag "msea-cfm-must-26";
1402 }
1403
1404 max-elements 1;
1405 ordered-by user;
1406
1407 description
1408 "The VID(s) monitored by this MA, or 0, if the MA is not attached to any
1409 VID. The first VID returned is the MA's Primary VID";
1410 reference
1411 "[802.1q] 12.14.5.3.2:b";
1412 }
1413
1414 leaf tag-type {
1415 type enumeration {
1416 enum vlan-none {
1417 description "No tag applied";
1418 }
1419 enum vlan-ctag {
1420 description "Ctags applied";
1421 }
1422 enum vlan-stag {
1423 description "Stags applied";
1424 }
1425 }
1426 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:component-list[msea-cfm:tag-type = 'vlan-none']) <= 1" {
1427 error-message "A maximum of 1 MA with tag-type = vlan_none can be specified across all MAs in the device";
1428 error-app-tag "msea-cfm-must-27";
1429 }
1430
1431 must "(current() != 'vlan-none' and count(current()/../vid) = 1) or (current() = 'vlan-none' and count(current()/../vid) = 0)" {
1432 error-message "A 'vid' must exist when tag-type is vlan-ctag or vlan-stag and must not exist when tag-type is vlan-none";
1433 error-app-tag "msea-cfm-must-28";
1434 }
1435
1436 mandatory true;
1437// msea:not-changeable;
1438 description "The type of tag to apply to packets in this VLAN";
1439 }
1440
1441 } // end of component-list
1442
1443 leaf ccm-interval {
1444 type enumeration {
1445 enum 3.3ms {
1446 description "CCMs are sent every 3 1/3 milliseconds (300Hz).";
1447 }
1448 enum 10ms {
1449 description "CCMs are sent every 10 milliseconds.";
1450 }
1451 enum 100ms {
1452 description "CCMs are sent every 100 milliseconds.";
1453 }
1454 enum 1s {
1455 description "CCMs are sent every 1 second.";
1456 }
1457 }
1458 mandatory true;
1459
1460 description
1461 "The interval between CCM transmissions to be used by all MEPs in the MA";
1462 reference
1463 "[802.1q] 12.14.6.1.3:e
1464 IEEE8021-CFM-MIB.Dot1agCfmCcmInterval";
1465 }
1466
1467 leaf-list remote-meps {
1468 type msea:mep-id-type;
1469 max-elements 9; //The local MEP and up to 8 remote meps
1470
1471 must "(count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:remote-meps) - count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association)) <= 64" {
1472 error-message "The maximum number of remote MEPs on the device across all MDs and MAs must not exceed 64";
1473 error-app-tag "msea-cfm-must-29";
1474 }
1475
1476 description
1477 "A list of the MEPIDs of the MEPs in the MA. The list
1478 consists of the ids of the local MEP (defined below)
1479 and up to 8 remote meps. A maximum of 64 remote MEPs
1480 can be configured on all MAs on the device";
1481 reference
1482 "[802.1q] 12.14.6.1.3:g";
1483 }
1484
1485 list maintenance-association-end-point {
1486 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point) <= 64" {
1487 error-message "The maximum number of MEPs on the whole device must not exceed 64";
1488 error-app-tag "msea-cfm-must-30";
1489 }
1490
1491 key "mep-identifier";
1492
1493 max-elements 1; //Only one local MEP is allowed per MA
1494
1495 description
1496 "The list of Maintenance association End Points in a specific Maintance Association.";
1497
1498 leaf mep-identifier {
1499 type msea:mep-id-type;
1500
1501 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../../msea-cfm:id]/msea-cfm:maintenance-association[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:remote-meps[text() = current()]) = 1" {
1502 error-message "The MEP ID must be listed in the 'remote-meps' list for this MA";
1503 error-app-tag "msea-cfm-must-31";
1504 }
1505
1506 description
1507 "Integer that is unique among all the MEPs in the same MA. Other
1508 definition is: a small integer, unique over a given
1509 Maintenance Association, identifying a specific Maintenance
1510 association End Point.";
1511 reference
1512 "[802.1q] 12.14.6.3.2:b";
1513 }
1514
1515 leaf interface {
1516 type enumeration {
1517 enum eth0 {
1518 description "Optics/eth0/WAN - commonly the Carrier port.";
1519 }
1520 enum eth1 {
1521 description "Host/eth1/LAN - commonly the System port.";
1522 }
1523 }
1524
1525 must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:md-level = current()/../../../md-level]/msea-cfm:maintenance-association[msea-cfm:component-list/msea-cfm:vid = current()/../../component-list/vid]/msea-cfm:maintenance-association-end-point[msea-cfm:interface = current()]) <= 1" {
1526 error-message "The combination of 'md-level', 'vid', 'direction' and 'interface' must be unique for all MEPs on the system";
1527 error-app-tag "msea-cfm-must-32";
1528 description "Check that this interface is unique for all MEPs in this Maintenance Association.
1529 The Maintanance Association already checks that the VID is unique for the Maintenance Domain.";
1530 }
1531
1532 mandatory true;
1533// msea:not-changeable;
1534
1535 description
1536 "An interface, either a Bridge Port or an aggregated IEEE 802.3 port
1537 within a Bridge Port, to which the MEP is attached. Each interface in
1538 the system is uniquely identified by an interface-name. The structure
1539 and content of the name is outside the scope of this specification.
1540
1541 Added restriction for Edge Assure that the interface name can only be eth0 or eth1";
1542 reference
1543 "[802.1q] 12.14.7.1.3:b";
1544 }
1545
1546 leaf direction {
1547 type enumeration {
1548 enum down {
1549 description "Indicates when CFM frames are transmitted towards and
1550 received from the wire.";
1551 }
1552 }
1553 default down;
1554// msea:not-changeable;
1555
1556 description
1557 "A value indicating the direction in which the MEP faces on the
1558 interface. For EdgeAssure can only be 'down' Changed from
1559 mandatory to default = down";
1560
1561 reference
1562 "[802.1q] 12.14.7.1.3:c";
1563 }
1564
1565 leaf primary-vid {
1566 type union {
1567 type enumeration {
1568 enum 0 {description "0 to use the MA's VID";}
1569 }
1570 type msea:vlan-id-type;
1571 }
1572
1573 must "current() = 0 or count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../../id]/msea-cfm:maintenance-association[msea-cfm:id = current()/../../id]/msea-cfm:component-list/msea-cfm:vid[text() = current()]) = 1" {
1574 error-message "PrimaryVID of MEP must be either 0 or from the range of VIDs in component-list of the MA";
1575 error-app-tag "msea-cfm-must-33";
1576 }
1577
1578 default 0;
1579
1580 description
1581 "The Primary VID of the MEP. The value 0 indicates that either the
1582 Primary VID is that of the MEP's MA or that the MEP's MA is
1583 associated with no VID. Must be either 0 or from the range of VIDs in the
1584 component-list of this MA. Changed to default=0 from mandatory";
1585 reference
1586 "[802.1q] 12.14.7.1.3:d";
1587 }
1588
1589 leaf administrative-state {
1590 type boolean;
1591 mandatory true;
1592
1593 description
1594 "The administrative state of the MEP";
1595 reference
1596 "[802.1q] 12.14.7.1.3:e";
1597 }
1598
1599 leaf mac-address {
1600 type yang:mac-address;
1601 config false;
1602
1603 description
1604 "The MAC address of the MEP";
1605 reference
1606 "[802.1q] 12.14.7.1.3:i";
1607 }
1608
1609 leaf ccm-ltm-priority {
1610 type msea:priority-type;
1611 mandatory true;
1612
1613 description
1614 "The priority parameter for CCMs and LTMs transmitted by the MEP.";
1615 reference
1616 "[802.1q] 12.14.7.1.3:h";
1617 }
1618
1619 container continuity-check {
1620 description
1621 "Data definitions related to the Continuity Check function.";
1622
1623 leaf cci-enabled {
1624 type boolean;
1625 default false;
1626
1627 description
1628 "Configuration of whether the MEP is or is not to generate CCMs";
1629 reference
1630 "[802.1q] 12.14.7.1.3:g";
1631 }
1632
1633 leaf fng-state {
1634 type enumeration {
1635 enum reset {
1636 description "No defect has been present since the
1637 fng-reset-time timer expired, or since
1638 the state machine was last reset.";
1639 }
1640 enum defect {
1641 description "A defect is present, but not for a long enough
1642 time to be reported (fng-alarm-time).";
1643 }
1644 enum report-defect {
1645 description "A momentary state during which the defect is
1646 reported by sending a fault-alarm notification,
1647 if that action is enabled.";
1648 }
1649 enum defect-reported {
1650 description "A defect is present, and some defect has been
1651 reported.";
1652 }
1653 enum defect-clearing {
1654 description "No defect is present, but the fng-reset-time timer has
1655 not yet expired.";
1656 }
1657 }
1658 default reset;
1659 config false;
1660
1661 description
1662 "A value indicating the current state of the MEP Fault Notification
1663 Generator state machine";
1664 reference
1665 "[802.1q] 12.14.7.1.3:f, 20.35
1666 IEEE8021-CFM-MIB.Dot1agCfmFngState";
1667 }
1668
1669 leaf lowest-fault-priority-defect {
1670 type fault-alarm-defect-type;
1671
1672 description
1673 "The lowest priority defect that is allowed to generate a Fault
1674 Alarm.";
1675
1676 default remote-mac-error;
1677
1678 reference
1679 "[802.1q] 12.14.7.1.3:k";
1680 }
1681
1682 leaf highest-priority-defect-found {
1683 type fault-alarm-defect-type;
1684 config false;
1685
1686 description
1687 "Value indicating the highest-priority defect that has been
1688 present since the MEP Fault Notification Generator state machine
1689 was last in the FNG_RESET state The non-existence of this
1690 leaf represents that no defect has been present since the
1691 last FNG_RESET state";
1692 reference
1693 "[802.1q] 12.14.7.1.3:n";
1694 }
1695
1696 leaf fng-alarm-time {
1697 type yang:timeticks {
1698 range 250..1000;
1699 }
1700 default 250;
1701
1702 description
1703 "The time that defects must be present before a Fault Alarm is
1704 issued in hundredths of seconds";
1705 reference
1706 "[802.1q] 12.14.7.1.3:l, 20.33.3";
1707 }
1708
1709 leaf fng-reset-time {
1710 type yang:timeticks {
1711 range 250..1000;
1712 }
1713 default 1000;
1714
1715 description
1716 "The time that defects must be absent before resetting a Fault Alarm
1717 in hundredths of seconds";
1718 reference
1719 "[802.1q] 12.14.7.1.3:m, 20.33.4";
1720 }
1721
1722 leaf active-defects {
1723 type fault-alarm-defect-bits-type;
1724 config false;
1725
1726 description
1727 "A bit field of potential active defects. The values are the same as the
1728 content of the fault-alarm-defect-type (except if it is 'none' then
1729 nothing will be listed).";
1730 reference
1731 "[802.1q] 12.14.7.1.3:o, p, q, r, s";
1732 }
1733
1734 leaf last-error-ccm {
1735 type binary {
1736 length "1..1522";
1737 }
1738 config false;
1739
1740 description
1741 "The last-received CCM that triggered an invalid-ccm fault";
1742 reference
1743 "[802.1q] 12.14.7.1.3:t";
1744 }
1745
1746 leaf last-cross-connect-ccm {
1747 type binary {
1748 length "1..1522";
1749 }
1750 config false;
1751
1752 description
1753 "The last-received CCM that triggered a cross-connect-ccm fault";
1754 reference
1755 "[802.1q] 12.14.7.1.3:u";
1756 }
1757
1758 leaf ccm-sequence-error-count {
1759 type yang:counter32;
1760 config false;
1761 mandatory true;
1762
1763 description
1764 "The total number of out-of-sequence CCMs received from all remote
1765 MEPs.";
1766 reference
1767 "[802.1q] 12.14.7.1.3:v";
1768 }
1769
1770 leaf sent-ccms {
1771 type yang:counter32;
1772 config false;
1773 mandatory true;
1774
1775 description
1776 "The total number of CCMs transmitted.";
1777 reference
1778 "[802.1q] 12.14.7.1.3:w";
1779 }
1780 }
1781
1782 container loopback {
1783 description
1784 "Data definitions related to the Loopback function.";
1785
1786 //config false; Commented out to let config attribs on mef-soam-pm work 08Dec15 SC Microsemi
1787
1788 leaf replies-received {
1789 type yang:counter32;
1790 config false;
1791 mandatory true;
1792
1793 description
1794 "The total number of valid, in-order LBRs received.";
1795 reference
1796 "[802.1q] 12.14.7.1.3:y";
1797 }
1798
1799 leaf replies-transmitted {
1800 type yang:counter32;
1801 config false;
1802 mandatory true;
1803
1804 description
1805 "The total number of LBRs transmitted.";
1806 reference
1807 "[802.1q] 12.14.7.1.3:ad";
1808 }
1809 } //End of loopback
1810
1811 container remote-mep-database {
1812 config false;
1813 description
1814 "The MEP CCM database";
1815
1816 list remote-mep {
1817 key remote-mep-id;
1818 description
1819 "The list of remote MEPs in the MEP CCM database";
1820 reference
1821 "[802.1q] 12.14.7.6";
1822
1823 leaf remote-mep-id {
1824 type msea:mep-id-type;
1825
1826 description
1827 "The MEPID of a remote MEP";
1828 reference
1829 "[802.1q] 12.14.7.6.2";
1830 }
1831
1832 leaf remote-mep-state {
1833 type remote-mep-state-type;
1834
1835 description
1836 "An enumerated value indicating the operational state of the
1837 Remote MEP state machine for this remote MEP.";
1838 reference
1839 "[802.1q] 12.14.7.6.3:b
1840 IEEE8021-CFM-MIB.Dot1agCfmRemoteMepState";
1841 }
1842
1843 leaf failed-ok-time {
1844 type yang:timeticks;
1845
1846 description
1847 "The time (SysUpTime, IETF RFC 3418) at which the Remote MEP state
1848 machine last entered either the RMEP_FAILED or RMEP_OK
1849 state, or 0 if it has not yet entered either of those
1850 states";
1851 reference
1852 "[802.1q] 12.14.7.6.3:c";
1853 }
1854
1855 leaf mac-address {
1856 type yang:mac-address;
1857
1858 description
1859 "The MAC address of the remote MEP.";
1860 reference
1861 "[802.1q] 12.14.7.6.3:d";
1862 }
1863
1864 leaf rdi {
1865 type boolean;
1866
1867 description
1868 "An indication of the state of the RDI bit in the last received CCM,
1869 true for RDI = 1, or false for RDI = 0 or if none has been
1870 received.";
1871 reference
1872 "[802.1q] 12.14.7.6.3:e";
1873 }
1874
1875 leaf port-status-tlv {
1876 type msea:port-status-type;
1877
1878 description
1879 "The enumerated value from the Port Status TLV from the last
1880 CCM received from the remote MEP.";
1881 reference
1882 "[802.1q] 12.14.7.6.3:f";
1883 }
1884
1885 leaf interface-status-tlv {
1886 type msea:interface-status-type;
1887
1888 description
1889 "The enumerated value from the Interface Status TLV from the
1890 last CCM received from the remote MEP";
1891 reference
1892 "[802.1q] 12.14.7.6.3:g";
1893 }
1894 }
1895 } //end remote-mep-database
1896
1897
1898 container linktrace {
1899 config false;
1900 description
1901 "Data definitions related to the Linktrace function.";
1902
1903 leaf unexpected-replies-received {
1904 type yang:counter32;
1905
1906 description
1907 "The total number of unexpected LTRs received.";
1908 reference
1909 "[802.1q] 12.14.7.1.3:ac";
1910 }
1911
1912 container linktrace-database {
1913 description
1914 "Data definitions related to the Linktrace database for a specific MEP";
1915
1916 list linktrace {
1917 key "transaction-id";
1918
1919 description
1920 "The list of entries in a Linktrace database.";
1921
1922 uses linktrace-reply-grouping;
1923 }
1924 }
1925 } //End linktrace
1926 }
1927 }
1928 }
1929 }
1930 //
1931 // RPCs related to CFM
1932 //
1933
1934 rpc transmit-loopback {
1935 description
1936 "Start a loopback session on a specific MEP
1937
1938 The counters in the loopback container of the associated MEP will be updated
1939 with the result of the loopback session until the configured number of messages
1940 have been sent.";
1941// reference --Removed as Tail-f NSO 4.1 can't handle references on RPCs. Also cannot remove using a deviate statement since reference is not a valid deviate sub-statement
1942// "[802.1q] 12.14.7.3";
1943
1944 input {
1945 uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi
1946
1947 container target-address {
1948 description
1949 "Target MAC address or MEP ID for the Loopback session.";
1950 uses target-address-group;
1951 }
1952
1953 leaf number-of-messages {
1954 type uint32 {
1955 range "1..1024";
1956 }
1957 default 1;
1958
1959 description
1960 "The number of LBM transmissions in a session.";
1961 reference
1962 "[802.1q] 12.14.7.3.2:c, [MEF30] R39";
1963 }
1964
1965 leaf data-tlv {
1966 type binary;
1967
1968 description
1969 "An arbitrary amount of data to be included in a Data TLV.";
1970 reference
1971 "[802.1q] 12.14.7.3.d, IEEE8021-CFM-MIB.dot1agCfmMepTransmitLbmDataTlv";
1972 }
1973
1974 leaf vlan-priority {
1975 type msea:priority-type;
1976
1977 description
1978 "The priority parameter to be used in the transmitted LBMs";
1979 reference
1980 "[802.1q] 12.14.7.3.2:e";
1981 }
1982
1983 leaf vlan-drop-eligible {
1984 type boolean;
1985 default true;
1986
1987 description
1988 "The drop eligible parameter to be used in the transmitted LBMs";
1989 reference
1990 "[802.1q] 12.14.7.3.2:e";
1991 }
1992 }
1993 }
1994
1995 rpc abort-loopback {
1996 description
1997 "Administratively abort a loopback session in progress on a specific MEP";
1998// reference --Removed as Tail-f NSO 4.1 can't handle references on RPCs. Also cannot remove using a deviate statement since reference is not a valid deviate sub-statement
1999// "[MEF30] 8.2, R28";
2000
2001 input {
2002 uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi
2003
2004 }
2005 }
2006
2007 rpc transmit-linktrace {
2008 description
2009 "Start a linktrace session on a specific remote MEP associated
2010 with a local MEP.
2011
2012 This RPC will wait 6 seconds for the linktrace replies to be
2013 gathered from remote MEP and any intermediate MIPs and will
2014 display them in line. The information about the last linktrace
2015 transaction will also be visible in the state data beneath the
2016 local MEP until the next linktrace is run. Only one
2017 instance of linktrace can be run at a time";
2018 // reference
2019 // "[802.1q] 12.14.7.4";
2020
2021 input {
2022 uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi
2023
2024 uses linktrace-parameters-group;
2025 }
2026
2027 output {
2028 anyxml data {
2029 description "The complete response from the Linktrace
2030 including the individual replies from remote MEPs
2031 and any intermediate MIPs";
2032 }
2033 }
2034 }
2035
2036
2037 //
2038 // Notifications related to CFM
2039 //
2040
2041 notification fault-alarm {
2042 description
2043 "A notification that a specific MEP has a persistent defect condition.";
2044 reference
2045 "[802.1q] 12.14.7.7";
2046
2047 container alarm {
2048 description
2049 "Data definitions related to a persistent defect on a specific MEP.";
2050
2051 uses mep-notification-reference;
2052
2053 leaf remote-mep {
2054 type msea:mep-id-type;
2055 description "Remote MEP identifier";
2056 }
2057
2058 leaf highest-defect {
2059 type fault-alarm-defect-type;
2060 description "The highest priority defect currently asserted when the alarm occurs on the MEP.";
2061 }
2062 }
2063 }
2064}
2065