module msea-cfm { | |
namespace "http://www.microsemi.com/microsemi-edge-assure/msea-cfm"; | |
prefix "msea-cfm"; //MicroSemi EdgeAssure (msea) | |
import ietf-yang-types { | |
prefix yang; | |
revision-date 2013-07-15; | |
} | |
import ietf-inet-types { | |
prefix inet; | |
revision-date 2013-07-15; | |
} | |
import msea-types { | |
prefix msea; | |
revision-date 2016-02-29; | |
} | |
organization | |
"Microsemi Inc., FTD Division"; | |
contact | |
"Web URL: http://www.microsemi.com/ | |
E-mail: info@microsemi.com | |
Postal: Microsemi Corporation Corporate Headquarters | |
One Enterprise Aliso Viejo, | |
CA 92656 | |
U.S.A. | |
Phone: +1 949 380 6100 | |
Fax: +1 949 215-4996"; | |
description | |
"This YANG module is a fork of the original mef-cfm YANG Module defined in MEF 38 | |
This fork is done specifically to suit the EdgeAssure SFP which has some extra | |
constraints that are not handled by the original YANG. | |
Consideration was given to using 'deviations' in a separate YANG file as an | |
alternative to forking, but due to lack of full support for deviations in | |
Cisco/Tail-f NSO 4.1.1 (Jan 2016) this was not feasible. | |
This YANG is meant to mirror exactly the initial behaviour of the EdgeAssure | |
and present that to Client systems at the interface level (the alternative | |
being to raise exceptions when a constraint is broken). This is mostly | |
implemented through 'must' statements. | |
Copyright 2016 Microsemi Inc. | |
All rights reserved."; | |
revision "2016-02-29" { | |
description | |
"Initial EdgeAssure version forked from mef-cfm 2012-04-16 - Sean Condon, Microsemi"; | |
reference | |
"Service OAM Fault Management YANG Modules (MEF 38), April 2012"; | |
} | |
// | |
// Type definitions related to CFM | |
// | |
typedef lbm-transaction-id-type { | |
type uint32; | |
description | |
"A loopback transaction identifier"; | |
reference | |
"[802.1q] 21.7.3"; | |
} | |
typedef fault-alarm-defect-type { | |
type enumeration { | |
enum remote-rdi { | |
description "Indicates the aggregate health of the remote MEPs."; | |
} | |
enum remote-mac-error { | |
description "Indicates that one or more of the remote MEPs is | |
reporting a failure in its Port Status TLV or | |
Interface Status TLV."; | |
} | |
enum remote-invalid-ccm { | |
description "Indicates that at least one of the Remote MEP | |
state machines is not receiving valid CCMs | |
from its remote MEP."; | |
} | |
enum invalid-ccm { | |
description "Indicates that one or more invalid CCMs has been | |
received and that 3.5 times that CCMs transmission | |
interval has not yet expired."; | |
} | |
enum cross-connect-ccm { | |
description "Indicates that one or more cross connect CCMs has been | |
received and that 3.5 times of at least one of those | |
CCMs transmission interval has not yet expired."; | |
} | |
enum none { | |
description "Indicates that all defects of all types should | |
be ignored."; | |
} | |
} | |
description | |
"An enumerated value indicating the highest priority defect."; | |
reference | |
"[802.1q] 20.33.9"; | |
} | |
typedef fault-alarm-defect-bits-type { | |
type bits { | |
bit remote-rdi { | |
description "Indicates that at least one of the Remote MEP state machines is | |
receiving valid CCMs from its remote MEP that has the RDI bit set."; | |
} | |
bit remote-mac-error { | |
description "One or more of the remote MEPs is reporting a failure | |
in its Port Status TLV or Interface Status"; | |
} | |
bit remote-invalid-ccm { | |
description "At least one of the Remote MEP state machines is not | |
receiving valid CCMs from its remote MEP"; | |
} | |
bit invalid-ccm { | |
description "One or more invalid CCMs has been received"; | |
} | |
bit cross-connect-ccm { | |
description "One or more cross connect CCMs has been received"; | |
} | |
} | |
description | |
"A set of bits indicating the the current defects"; | |
reference | |
"[802.1q] 20.33.9"; | |
} | |
typedef remote-mep-state-type { | |
type enumeration { | |
enum idle { | |
description | |
"Indicates momentary state during reset."; | |
} | |
enum start { | |
description | |
"Indicates the timer has not expired since the state machine was | |
reset, and no valid CCM has yet been received."; | |
} | |
enum failed { | |
description | |
"Indicates The timer has expired, both since the state machine | |
was reset, and since a valid CCM was received."; | |
} | |
enum ok { | |
description | |
"Indicates The timer has not expired since a valid CCM was | |
received."; | |
} | |
} | |
description | |
"An enumerated value indicating the operational state of a Remote | |
MEP state machine for a remote MEP."; | |
reference | |
"[802.1q] 12.14.7.6.3:b | |
IEEE8021-CFM-MIB.Dot1agCfmRemoteMepState"; | |
} | |
typedef ltm-transaction-id-type { | |
type uint32; | |
description | |
"A linktrace transaction identifier"; | |
reference | |
"[802.1q] 21.8.3"; | |
} | |
// | |
// Groupings related to CFM | |
// | |
grouping target-address-group { | |
description | |
"An indication of a destination MEP, either: | |
1) The MEPID of a MEP; or | |
2) An Individual destination MAC address"; | |
reference "[802.1q] 12.14.7.3.2:b"; | |
choice address-type { | |
description "Either a mac address or a MEP id for the target"; | |
case mac-address { | |
leaf mac-address { | |
type yang:mac-address; | |
description | |
"Target MAC address"; | |
} | |
} | |
case mep-id { | |
leaf mep-id { | |
type msea:mep-id-type; | |
description | |
"Target MEP ID"; | |
} | |
} | |
} | |
} | |
grouping maintenance-domain-reference { | |
description | |
"This grouping uniquely identifies a maintenance domain."; | |
leaf maintenance-domain { | |
type leafref { | |
path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:id"; | |
} | |
description | |
"A reference to a specific Maintenance Domain."; | |
} | |
} | |
grouping maintenance-association-reference { | |
description | |
"This grouping uniquely identifies a maintenance association. It consists | |
of a maintence-domain-reference and a maintenance-association leafref"; | |
uses maintenance-domain-reference; | |
leaf maintenance-association { | |
type leafref { | |
path "/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id=current()/../maintenance-domain]/msea-cfm:maintenance-association/msea-cfm:id"; | |
} | |
description | |
"A reference to a specific Maintenance Association."; | |
} | |
} | |
grouping maintenance-association-end-point-reference { | |
description | |
"This grouping uniquely identifies a maintenance association. It consists | |
of a maintence-association-reference and a maintenance-association-end-point | |
leafref"; | |
uses maintenance-association-reference; | |
leaf maintenance-association-end-point { | |
type leafref { | |
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"; | |
} | |
description | |
"A reference to a specific Maintenance association End Point."; | |
} | |
} | |
grouping mep-notification-reference { | |
description "A simple MEP reference that can be used in notifications"; | |
leaf maintenance-domain { | |
type uint8; | |
description | |
"A reference to a specific Maintenance Domain."; | |
} | |
leaf maintenance-association { | |
type uint8; | |
description | |
"A reference to a specific Maintenance Association."; | |
} | |
leaf maintenance-association-end-point { | |
type msea:mep-id-type; | |
description | |
"A reference to a specific Maintenance association End Point."; | |
} | |
} | |
grouping linktrace-parameters-group { | |
description | |
"This is the group of parameters associated with linktrace sessions. It is | |
used for linktrace RPC input as well as linktrace database entries."; | |
container target-address { | |
description | |
"Target MAC address or MEP ID for the Linktrace session."; | |
uses target-address-group; | |
} | |
leaf transmit-ltm-flags { | |
type bits { | |
bit use-fdb-only { | |
description | |
"If set, indicates that only MAC addresses learned in a | |
Bridge’s FDB, and not information saved in the MIP CCM | |
Database, is to be used to determine the Egress Port."; | |
reference "[802.1q] 21.8.1"; | |
} | |
} | |
description | |
"The Flags field for LTMs transmitted by the MEP"; | |
reference | |
"[802.1q] 12.14.7.4.2:b"; | |
} | |
leaf default-ttl { | |
type uint8; | |
default 64; | |
description | |
"An initial value for the LTM TTL field"; | |
reference | |
"[802.1q] 12.14.7.4.2:d"; | |
} | |
} //End of linktrace-parameters-group | |
grouping port-id-tlv-group { | |
description | |
"Data definitions associated with the Port ID TLV"; | |
reference | |
"[802.1AB] 9.5.3"; | |
choice port-id-subtype { | |
leaf interface-alias { | |
type string { | |
length "0..64"; | |
} | |
description | |
"The ifAlias field from the Interfaces Group MIB"; | |
reference | |
"[RFC2863]"; | |
} | |
leaf port-component { | |
type string { | |
length "0..32"; | |
} | |
description | |
"EntPhysicalAlias when entPhysClass has a value of port(10) or | |
backplane(4)"; | |
reference | |
"[RFC2737]"; | |
} | |
leaf mac-address { | |
type yang:mac-address; | |
description | |
"A MAC address"; | |
} | |
leaf network-address { | |
type string; | |
description | |
"network-address is an octet string that identifies a particular network | |
address family and an associated network address that are | |
encoded in network octet order. An IP address, for example, | |
would be encoded with the first octet containing the IANA | |
Address Family Numbers enumeration value for the specific | |
address type and octets 2 through n containing the address | |
value"; | |
reference | |
"[802.1AB] Table 9.2"; | |
} | |
leaf interface-name { | |
type string { | |
length "0..64"; | |
} | |
description | |
"The ifName field from the Interfaces Group MIB"; | |
reference | |
"[RFC2863]"; | |
} | |
leaf agent-circuit-id { | |
type string; | |
description | |
"Agent circuit ID"; | |
reference | |
"[RFC3046]"; | |
} | |
leaf local { | |
type string; | |
description | |
"A locally defined identifier"; | |
reference | |
"[802.1AB] Table 9.3"; | |
} | |
} | |
} //End of port-id-tlv-group | |
grouping sender-id-tlv-group { | |
description | |
"Data definitions associated with the Sender ID TLV"; | |
reference | |
"[802.1q] 21.5.3"; | |
choice chassis-id-subtype { | |
description | |
"The chassis-id-subtype contains the chassis ID entity that is listed in | |
the chassis ID field. This is a combination of the 'Chassis ID Subtype' | |
and 'chsssis ID' fields"; | |
reference | |
"[802.1AB] 9.5.2.2"; | |
leaf chassis-component { | |
type string { | |
length "0..32"; | |
} | |
description | |
"This leaf contains the content of EntPhysicalAlias when entPhysClass has | |
a value of chassis(3)'"; | |
reference | |
"[RFC2737]"; | |
} | |
leaf interface-alias { | |
type string { | |
length "0..64"; | |
} | |
description | |
"The IfAlias field from the Interfaces Group MIB"; | |
reference | |
"[RFC2863]"; | |
} | |
leaf port-component { | |
type string { | |
length "0..32"; | |
} | |
description | |
"The EntPhysicalAlias from the Interfaces Group MIB when entPhysClass has | |
a value of port(10) or backplane(4)"; | |
reference | |
"[RFC2737]"; | |
} | |
leaf mac-address-type { | |
type yang:mac-address; | |
description | |
"An IEEE 802-2001 Ethernet MAC Address"; | |
reference | |
"[802-2001]"; | |
} | |
leaf network-address { | |
type string; | |
description | |
"network-address is an octet string that identifies a particular network | |
address family and an associated network address that are encoded in | |
network octet order. An IP address, for example, would be encoded with | |
the first octet containing the IANA Address Family Numbers enumeration | |
value for the specific address type and octets 2 through n containing | |
the address value"; | |
reference | |
"[802.1AB] Table 9.2"; | |
} | |
leaf interface-name { | |
type string { | |
length "0..64"; | |
} | |
description | |
"IfName"; | |
reference | |
"[RFC2863]"; | |
} | |
leaf local { | |
type string; | |
description | |
"A locally assigned alpha-numeric string."; | |
reference | |
"[802.1AB] Table 9.2"; | |
} | |
} | |
container management-address { | |
description | |
"Data definitions related to the management address fields defined | |
in a Sender ID TLV"; | |
reference | |
"[802.1Q] Section 21.5.3"; | |
choice management-address-choice { | |
case udp-ipv4 { | |
description | |
"Represents an IPv4 UDP transport address consisting of an IPv4 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv4"; | |
leaf udp-ipv4-address { | |
type inet:ipv4-address; | |
} | |
leaf udp-ipv4-port { | |
type inet:port-number; | |
} | |
} | |
case udp-ipv6 { | |
description | |
"Represents an IPv6 UDP transport address consisting of an IPv6 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv6"; | |
leaf udp-ipv6-address { | |
type inet:ipv6-address; | |
} | |
leaf udp-ipv6-port { | |
type inet:port-number; | |
} | |
} | |
case udp-ipv4z { | |
description | |
"Represents a UDP transport address consisting of an IPv4 address, a zone | |
index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv4z"; | |
leaf udp-ipv4z-address { | |
type inet:ipv4-address; | |
} | |
leaf udp-ipv4z-index { | |
type uint32; | |
} | |
leaf udp-ipv4z-port { | |
type inet:port-number; | |
} | |
} | |
case udp-ipv6z { | |
description | |
"Represents a UDP transport address consisting of an IPv6 address, a zone | |
index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpIpv6z"; | |
leaf udp-ipv6z-address { | |
type inet:ipv6-address; | |
} | |
leaf udp-ipv6z-index { | |
type uint32; | |
} | |
leaf udp-ipv6z-port { | |
type inet:port-number; | |
} | |
} | |
case tcp-ipv4 { | |
description | |
"Represents an IPv4 TCP transport address consisting of an IPv4 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv4"; | |
leaf tcp-ipv4-address { | |
type inet:ipv4-address; | |
} | |
leaf tcp-ipv4-port { | |
type inet:port-number; | |
} | |
} | |
case tcp-ipv6 { | |
description | |
"Represents an IPv6 TCP transport address consisting of an IPv6 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv6"; | |
leaf tcp-ipv6-address { | |
type inet:ipv6-address; | |
} | |
leaf tcp-ipv6-port { | |
type inet:port-number; | |
} | |
} | |
case tcp-ipv4z { | |
description | |
"Represents a TCP IPv4 transport address consisting of an IPv4 address, a | |
zone index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv4z"; | |
leaf tcp-ipv4z-address { | |
type inet:ipv4-address; | |
} | |
leaf tcp-ipv4z-index { | |
type uint32; | |
} | |
leaf tcp-ipv4z-port { | |
type inet:port-number; | |
} | |
} | |
case tcp-ipv6z { | |
description | |
"Represents a TCP IPv6 transport address consisting of an IPv6 address, | |
a zone index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpIpv6z"; | |
leaf tcp-ipv6z-address { | |
type inet:ipv6-address; | |
} | |
leaf tcp-ipv6z-index { | |
type uint32; | |
} | |
leaf tcp-ipv6z-port { | |
type inet:port-number; | |
} | |
} | |
case sctp-ipv4 { | |
description | |
"Represents an IPv4 SCTP transport address consisting of an IPv4 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv4"; | |
leaf sctp-ipv4-address { | |
type inet:ipv4-address; | |
} | |
leaf sctp-ipv4-port { | |
type inet:port-number; | |
} | |
} | |
case sctp-ipv6 { | |
description | |
"Represents an IPv6 SCTP transport address consisting of an IPv6 address, | |
and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv6"; | |
leaf sctp-ipv6-address { | |
type inet:ipv6-address; | |
} | |
leaf sctp-ipv6-port { | |
type inet:port-number; | |
} | |
} | |
case sctp-ipv4z { | |
description | |
"Represents an SCTP IPv4 transport address consisting of an IPv4 | |
address, a zone index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv4z"; | |
leaf sctp-ipv4z-address { | |
type inet:ipv4-address; | |
} | |
leaf sctp-ipv4z-index { | |
type uint32; | |
} | |
leaf sctp-ipv4z-port { | |
type inet:port-number; | |
} | |
} | |
case sctp-ipv6z { | |
description | |
"Represents an SCTP IPv6 transport address consisting of an IPv6 | |
address, a zone index and a port number."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpIpv6z"; | |
leaf sctp-ipv6z-address { | |
type inet:ipv6-address; | |
} | |
leaf sctp-ipv6z-index { | |
type uint32; | |
} | |
leaf sctp-ipv6z-port { | |
type inet:port-number; | |
} | |
} | |
case local { | |
leaf local-address { | |
type string { | |
length "1..255"; | |
} | |
description | |
"Represents a POSIX Local IPC transport address."; | |
} | |
} | |
case udp-dns { | |
leaf udp-dns-address { | |
type string { | |
length "1..255"; | |
} | |
description | |
"The UDP transport domain using fully qualified domain names. Represents | |
a DNS domain name followed by a colon ':' (ASCII character | |
0x3A) and a port number in ASCII. The name SHOULD be fully | |
qualified whenever possible."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainUdpDns"; | |
} | |
} | |
case tcp-dns { | |
leaf tcp-dns-address { | |
type string { | |
length "1..255"; | |
} | |
description | |
"The TCP transport domain using fully qualified domain names. Represents | |
a DNS domain name followed by a colon ':' (ASCII character | |
0x3A) and a port number in ASCII. The name SHOULD be fully | |
qualified whenever possible."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainTcpDns"; | |
} | |
} | |
case sctp-dns { | |
leaf sctp-dns-address { | |
type string { | |
length "1..255"; | |
} | |
description | |
"The SCTP transport domain using fully qualified domain names. | |
Represents a DNS domain name followed by a colon ':' (ASCII | |
character 0x3A) and a port number in ASCII. The name SHOULD be | |
fully qualified whenever possible."; | |
reference | |
"[RFC3419] TRANSPORT-ADDRESS-MIB.transportDomainSctpDns"; | |
} | |
} | |
case unidentified { | |
leaf management-domain-binary { | |
type binary; | |
description "The management address domain found in the | |
Sender ID TLV encoded to base 64"; | |
reference | |
"[802.1Q] Section 21.5.3"; | |
} | |
leaf management-address-binary { | |
type binary; | |
description "The management address found in the | |
Sender ID TLV encoded to base 64"; | |
reference | |
"[802.1Q] Section 21.5.3"; | |
} | |
} | |
} | |
} | |
} //End of sender-id-tlv-group | |
grouping linktrace-reply-grouping { | |
description | |
"The attributes of a Linktrace reply."; | |
leaf transaction-id { | |
type ltm-transaction-id-type; | |
description | |
"The LTM Transaction Identifier to which the LTR entries will be | |
attached"; | |
reference | |
"[802.1q] 12.14.7.5.2:b"; | |
} | |
uses linktrace-parameters-group; | |
list reply { | |
key reply-order; | |
description | |
"The list of LTRs associated with a specific Linktrace | |
transaction."; | |
leaf reply-order { | |
type uint32; | |
description | |
"An index to distinguish among multiple LTRs with the same LTR | |
transaction-id field value. reply-order are | |
assigned sequentially from 1, in the order that the | |
Linktrace Initiator received the LTR"; | |
reference "[802.1q] 12.14.7.5.2:c"; | |
} | |
leaf reply-ttl { | |
type uint32; | |
description | |
"The integer Reply TTL field value returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:b"; | |
} | |
leaf forwarded { | |
type boolean; | |
description | |
"A Boolean value stating whether an LTM was forwarded by | |
the responding MP."; | |
reference | |
"[802.1q] 12.14.7.5.3:c"; | |
} | |
leaf terminal-mep { | |
type boolean; | |
description | |
"A Boolean value stating whether the forwarded LTM reached | |
a MEP for its MA."; | |
reference | |
"[802.1q] 12.14.7.5.3:d"; | |
} | |
leaf last-egress-identifier { | |
type binary { | |
length 8; | |
} | |
description | |
"An octet string holding the Last Egress Identifier field | |
returned in the LTR Egress Identifier TLV of the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:e"; | |
} | |
leaf next-egress-identifier { | |
type binary { | |
length 8; | |
} | |
description | |
"An octet string holding the Next Egress Identifier field | |
returned in the LTR Egress Identifier TLV of the LTR"; | |
reference | |
"[802.1q] 12.14.7.5.3:f"; | |
} | |
leaf ltr-relay { | |
type enumeration { | |
enum hit { | |
description "Indicates the LTM reached an MP whose MAC | |
address matches the target MAC address."; | |
} | |
enum filtering-database { | |
description "Indicates the Egress Port was determined by | |
consulting the Filtering Database."; | |
} | |
enum mip-ccm-database { | |
description "Indicates the Egress Port was determined by | |
consulting the MIP CCM Database."; | |
} | |
} | |
description | |
"An enumerated value indicating the value returned in the | |
Relay Action field."; | |
reference | |
"[802.1q] 12.14.7.5.3:g, Table 21-27 | |
IEEE8021-CFM-MIB.Dot1agCfmRelayActionFieldValue"; | |
} | |
uses sender-id-tlv-group; | |
leaf ingress-action { | |
type enumeration { | |
enum ok { | |
description "Indicates the target data frame would be | |
passed through to the MAC Relay Entity."; | |
} | |
enum down { | |
description "Indicates the Bridge Ports MAC Operational | |
parameter is false."; | |
} | |
enum blocked { | |
description "Indicates the target data frame would not | |
be forwarded if received on this Port due | |
to active topology enforement."; | |
} | |
enum vid { | |
description "Indicates the ingress port is not in the | |
member set of the LTMs VID, and ingress | |
filtering is enabled, so the target data | |
frame would be filtered by ingress filtering."; | |
} | |
} | |
description | |
"An enumerated value indicating the value returned in the | |
Ingress Action field. This leaf is not present if no value | |
is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:k, Table 21-30 | |
IEEE8021-CFM-MIB.Dot1agCfmIngressActionFieldValue"; | |
} | |
leaf ingress-mac { | |
type yang:mac-address; | |
description | |
"The MAC address returned in the Ingress MAC Address field. | |
This leaf is not present if no value is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:l"; | |
} | |
container ingress-port-id { | |
uses port-id-tlv-group; | |
description | |
"The Ingress Port ID field and the corresponding port ID value. | |
This leaf is not present if no value is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:m"; | |
} | |
leaf egress-action { | |
type enumeration { | |
enum ok { | |
description "Indicates the targeted data frame would be | |
forwarded."; | |
} | |
enum down { | |
description "Indicates the Egress Port can be identified, | |
but that Bridge Ports MAC Operational | |
parameter is false."; | |
} | |
enum blocked { | |
description "Indicates the Egress Port can be identified, | |
but the data frame would not pass through the | |
the Egress Port due to active topology | |
management, i.e., the Bridge Port is not in the | |
Forwarding state."; | |
} | |
enum vid { | |
description "Indicates the Egress Port can be identified, | |
but the Bridge Port is not in the LTMs VIDs | |
member set, so would be filtered by egress | |
filtering."; | |
} | |
} | |
description | |
"An enumerated value indicating the value returned in the | |
Egress Action field. This leaf is not present if no value | |
is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:o, Table 21-32 | |
IEEE8021-CFM-MIB.Dot1agCfmIngressActionFieldValue"; | |
} | |
leaf egress-mac { | |
type yang:mac-address; | |
description | |
"The MAC address returned in the Egress MAC Address field. | |
This leaf is not present if no value is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:p"; | |
} | |
container egress-port-id { | |
uses port-id-tlv-group; | |
description | |
"The Egress Port ID field and the corresponding port ID value. | |
This leaf is not present if no value is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:p, 12.14.7.5.3:q"; | |
} | |
leaf organization-specific-tlv { | |
type binary { | |
length "0|4 .. 1500"; | |
} | |
description | |
"The OUI and contents of any Organization-Specific TLVs. This | |
leaf is not present if no value is returned in the LTR."; | |
reference | |
"[802.1q] 12.14.7.5.3:s"; | |
} | |
} | |
} //End of linktrace-reply-grouping | |
// | |
// Data definitions related to CFM | |
// | |
container mef-cfm { | |
description "The top level container to group the | |
maintenance-domain(s)"; | |
reference "RFC 6087 Section 4.9 "; | |
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'))" { | |
error-app-tag "msea-cfm-must-01"; | |
error-message "A MEP cannot be deleted while it is still referenced from a Y1564 service config"; | |
// msea:xref-module "y-1564"; | |
} | |
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'))" { | |
error-app-tag "msea-cfm-must-02"; | |
error-message "A MEP cannot be deleted while it is still referenced from an RFC2544 config"; | |
// msea:xref-module "rfc-2544"; | |
} | |
container pm-global { | |
// presence "Global level attributes for PM related measurements can be specified if present"; | |
description "A placeholder for global level Performance Measurement PM related attributes"; | |
} | |
container cfm-role { | |
presence "When present defines the role of this device in a Maintenance Domain"; | |
description "Optional attributes that help to describe this devices role in a CFM configuration"; | |
leaf role { //Microsemi specific configuration attribute | |
description "The role that this device will play in a Maitenance Domain"; | |
type enumeration { | |
enum customer { | |
description "The customer role"; | |
} | |
enum provider{ | |
description "The provider role"; | |
} | |
enum operator { | |
description "The operator role"; | |
} | |
enum physical { | |
description "The physical role"; | |
} | |
} | |
mandatory true; | |
reference "IEEE 802.1Q-2014 Clause 18"; | |
} | |
leaf side { //Microsemi specific configuration attribute | |
description "An optional attribute to indicate which end of the Maintenance Domain "; | |
type enumeration { | |
enum left { | |
description "The device plays its role on the left side of the Maintenance Domain"; | |
} | |
enum right { | |
description "The device plays its role on the right side of the Maintenance Domain"; | |
} | |
} | |
default left; | |
reference "IEEE 802.1Q-2014 Clause 18"; | |
} | |
leaf name { //Microsemi specific configuration attribute | |
description "An identifier relating to the cfm-role that device plays in CFM. | |
This could be the name of a customer or an operator for example"; | |
type string { | |
length "1..40"; | |
pattern "[a-zA-Z0-9\\-_. ,]*"; | |
} | |
mandatory true; | |
reference "IEEE 802.1Q-2014 Clause 18"; | |
} | |
} | |
list maintenance-domain { | |
key id; | |
max-elements 64; | |
description | |
"A Maintenance Domain managed object is required in order to create an MA | |
with a MAID that includes that Maintenance Domain's Name. From | |
this Maintenance Domain managed object, all Maintenance | |
Association managed objects associated with that Maintenance | |
Domain managed object can be accessed, and thus controlled."; | |
reference | |
"[802.1q] 12.14.5"; | |
leaf id { | |
type uint8 { | |
range 1..64; | |
} | |
description | |
"A unique identifier of a Maintenance Domain. Changed to uint8 from string"; | |
reference | |
"[802.1q] 12.14.5"; | |
} | |
choice md-name-and-type-combo { | |
description | |
"The value Maintenance Domain Name depends on name-type. | |
Since the name-type defines the format for name they are | |
combined together here"; | |
mandatory true; | |
case name-none { | |
leaf name-type-none { | |
type empty; | |
description "Indicates that name-type is none. | |
When name-type is 'none' then the | |
MA name can be up to 45 chars, because len | |
of MD is not used"; | |
reference | |
"[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a"; | |
// msea:not-changeable; | |
} | |
} | |
case name-character-string { | |
leaf name { //Keep the old name | |
type msea:identifier45 {length 1..43;} | |
description | |
"When the name-type is 'character-string' then the name must be of | |
type string (restricted to 43 chars - 48 bytes are allowed overall | |
for the MD+MA incl 1 byte for type and 1 byte for len on each. | |
Leaving 1 char for MA name, the max MD name is 43 chars)"; | |
reference | |
"[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a"; | |
must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name = current()]) <= 1" { | |
error-message "The MD 'name' (if specified) must be unique across all character string names of MDs on the device"; | |
error-app-tag "msea-cfm-must-05"; | |
} | |
// msea:not-changeable; | |
} | |
} | |
case name-domain-name { | |
leaf name-domain-name { | |
type union { | |
type inet:ip-address; | |
type inet:domain-name { length 1..43; } | |
} | |
description "When the name-type is 'domain-name' then the name | |
must be of type inet:host"; | |
reference | |
"[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a"; | |
must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name-domain-name = current()]) <= 1" { | |
error-message "The MD 'name-domain-name' (if specified) must be unique across all name-domain-names of MDs on the device"; | |
error-app-tag "msea-cfm-must-06"; | |
} | |
// msea:not-changeable; | |
} | |
} | |
case mac-address-and-uint { | |
leaf name-mac-address-and-uint { | |
type msea:mac-address-and-uint-str; | |
description "When the name-type is 'mac-address-and-uint' | |
then the name must be a colon separated mac | |
address followed by a number between 0 and 65536 | |
e.g. AA:BB:CC:DD:EE:FF:65536 | |
The effective length when encoded is 8 bytes"; | |
reference | |
"[802.1q] 21.6.5.1 (Table 21-19), 12.14.5.3.2:a"; | |
must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:name-mac-address-and-uint = current()]) <= 1" { | |
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"; | |
error-app-tag "msea-cfm-must-07"; | |
} | |
// msea:not-changeable; | |
} | |
} | |
} | |
leaf md-level { | |
type msea:md-level-type; | |
mandatory true; | |
// msea:not-changeable; | |
description | |
"Integer identifying the Maintenance Domain Level (MD Level). Higher | |
numbers correspond to higher Maintenance Domains, those with the | |
greatest physical reach, with the highest values for customers' | |
CFM PDUs. Lower numbers correspond to lower Maintenance | |
Domains, those with more limited physical reach, with the lowest | |
values for CFM PDUs protecting single bridges or physical links. | |
Changed to mandatory"; | |
reference | |
"[802.1q] 12.14.5.1.3:b"; | |
} | |
list maintenance-association { | |
key id; | |
max-elements 64; | |
description | |
"This list represents Maintenance Entity Groups (Y.1731) or | |
Maintenance Associations (802.1ag). MEGs/MAs are sets of | |
MEPs, each configured to the same service inside a common | |
OAM domain."; | |
leaf id { | |
type uint8 { | |
range 1..64; | |
} | |
description | |
"A unique identifier of a Maintenance Association. Changed to uint8 from string"; | |
reference | |
"[802.1q] 12.14.6"; | |
} | |
choice ma-name-and-type-combo { | |
description | |
"The value Maintenance Association Name depends on name-type. | |
Since the name-type defines the format for name, they are | |
combined together here"; | |
mandatory true; | |
case name-character-string { | |
leaf name { | |
type msea:identifier45; | |
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" { | |
error-message "The MA 'name' (if specified) must be unique across all MAs within this MD"; | |
error-app-tag "msea-cfm-must-10"; | |
} | |
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" { | |
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"; | |
error-app-tag "msea-cfm-must-11"; | |
} | |
// msea:not-changeable; | |
description | |
"When the name-type is 'character-string' then the name must be of | |
type string. Length can be 45 when MD name-type is none (as 1 byte | |
is used on each for type, and 1 byte used on MA for len out of an | |
allowed 48 bytes). When MD name-type is not 'none' then the | |
combined length of both is 44 chars)"; | |
reference | |
"[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20"; | |
} | |
} | |
case name-primary-vid { | |
leaf name-primary-vid { | |
type union { | |
type enumeration { | |
enum 0 {description "0 to use the MA's VID";} | |
} | |
type msea:vlan-id-type; | |
} | |
// msea:not-changeable; | |
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" { | |
error-message "The MA 'name-primary-vid' (if specified) must be unique across all MAs within this MD"; | |
error-app-tag "msea-cfm-must-12"; | |
} | |
must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 2 <= 44" { | |
error-message "The MA 'primary-vid' (2 octets) and MD 'name' length together must not exceed 44 bytes."; | |
error-app-tag "msea-cfm-must-13"; | |
} | |
description | |
"When the name-type is 'primary-vid' then the name must be of type | |
vlan-id-type"; | |
reference | |
"[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20"; | |
} | |
} | |
case name-uint16 { | |
leaf name-uint16 { | |
type uint16; | |
// msea:not-changeable; | |
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" { | |
error-message "The MA 'name-uint16' (if specified) must be unique across all MAs within this MD"; | |
error-app-tag "msea-cfm-must-14"; | |
} | |
must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 2 <= 44" { | |
error-message "The MA 'name-uint16' (2 octets) and MD 'name' or 'name'domain-name' length together must not exceed 44 bytes"; | |
error-app-tag "msea-cfm-must-15"; | |
} | |
description | |
"When the name-type is 'uint16' then the name must be 0-65535"; | |
reference | |
"[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20"; | |
} | |
} | |
case name-rfc2685-vpn-id { | |
leaf name-rfc2685-vpn-id { | |
type binary { | |
length 7; | |
} | |
// msea:not-changeable; | |
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" { | |
error-message "The MA 'name-rfc2685-vpn-id' (if specified) must be unique across all MAs within this MD"; | |
error-app-tag "msea-cfm-must-16"; | |
} | |
must "string-length(current()/../../msea-cfm:name) + string-length(current()/../../msea-cfm:name-domain-name) + 7 <= 44" { | |
error-message "The MA 'name-rfc2685-vpn-id' (7 octets) and MD 'name' or 'name'domain-name' length together must not exceed 44 bytes"; | |
error-app-tag "msea-cfm-must-17"; | |
} | |
description | |
"When the name-type is 'rfc2685-vpn-id' then the name | |
must be of 7 bytes encoded as base64"; | |
reference | |
"[802.1q] 12.14.5.3.2:b, 21.6.5.4 Table 21-20"; | |
} | |
} | |
case name-y1731-icc { | |
leaf name-y1731-icc { | |
type yang:yang-identifier { | |
length 8..13; | |
} | |
// msea:not-changeable; | |
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)" { | |
error-message "The MA 'name-y1731-icc' can only be specified if y1731-compliant is present"; | |
error-app-tag "msea-cfm-must-18"; | |
} | |
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" { | |
error-message "The MA 'name-y1731-icc' (if specified) must be unique across all MAs within this MD"; | |
error-app-tag "msea-cfm-must-19"; | |
} | |
must "boolean(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:name-type-none)" { | |
error-message "name-y1731-icc can only be specified when MD name type is name-type-none"; | |
error-app-tag "msea-cfm-must-20"; | |
} | |
description | |
"ICC-based MEG ID Format, thirteen octet field. It consists of two | |
subfields: the ITU Carrier Code (ICC) followed by a unique MEG | |
ID code (UMC). The ITU Carrier Code consists of 1-6 | |
left-justified characters, alphabetic, or leading alphabetic | |
with trailing numeric. The UMC code immediately follows the ICC | |
and shall consist of 7-12 characters, with trailing NULLs, | |
completing the 13-character MEG ID Value. Changed type to yang-identifier"; | |
reference | |
"[Y.1731] Annex A"; | |
} | |
} | |
} | |
container y1731-compliant { | |
presence "When present indicates compliance with Y-1731"; | |
// msea:not-changeable; | |
must "boolean(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain[msea-cfm:id = current()/../../msea-cfm:id]/msea-cfm:name-type-none)" { | |
error-message "Parent MD must have a name-type-none when y1731-compilant is present"; | |
error-app-tag "msea-cfm-must-21"; | |
} | |
description | |
"A boolean flag to indicate whether the MEG ID/MAID for this MEG operates | |
in conformance with 802.1q (if false) or Y.1731 (if true). | |
When set to false: | |
- The format of the MAID (Maintenance Association ID) is controlled | |
by the name-type and name in the maintenance-association instance, | |
and the name-type and name in the maintenance-domain instance. | |
- The meg-id-format and meg-level leafs are ignored. | |
- The level is controlled by the md-level leaf. | |
When set to true: | |
- The MEG shall be in a maintenance-domain where name-type has the value | |
none(1). | |
- The format of the MEG ID is as defined by meg-id-format. | |
- The name-type in the maintenance-association is ignored. | |
- The name leaf contains the MEG ID value unless the meg-id-format | |
is set to 'icc-based' in which case it contains the value of the | |
'icc-name-value' leaf | |
- The md-level leaf is ignored, and the level is controlled | |
by the meg-level leaf."; | |
reference | |
"[MEF31], MEF-SOAM-FM-MIB.mefSoamNetCfgY1731Compliant"; | |
} | |
container component-list { | |
description | |
"A list of components each of which can be managed in a manner | |
essentially equivalent to an 802.1Q bridge. | |
Only one is allowed for Edge Assure, so changed to a container"; | |
reference | |
"[802.1q] IEEE8021-CFM-V2-MIB.ieee8021CfmMaCompTable"; | |
leaf-list vid { | |
type msea:vlan-id-type; | |
// msea:not-changeable; | |
must "current()/../tag-type != 'vlan-none'" { | |
error-message "No VID should be specified when Tag Type is 'vlan-none'"; | |
error-app-tag "msea-cfm-must-25"; | |
} | |
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" { | |
error-message "The 'vid' (VLan ID) in a Maintenance Association must be unique in a Maintenance Domain"; | |
error-app-tag "msea-cfm-must-26"; | |
} | |
max-elements 1; | |
ordered-by user; | |
description | |
"The VID(s) monitored by this MA, or 0, if the MA is not attached to any | |
VID. The first VID returned is the MA's Primary VID"; | |
reference | |
"[802.1q] 12.14.5.3.2:b"; | |
} | |
leaf tag-type { | |
type enumeration { | |
enum vlan-none { | |
description "No tag applied"; | |
} | |
enum vlan-ctag { | |
description "Ctags applied"; | |
} | |
enum vlan-stag { | |
description "Stags applied"; | |
} | |
} | |
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" { | |
error-message "A maximum of 1 MA with tag-type = vlan_none can be specified across all MAs in the device"; | |
error-app-tag "msea-cfm-must-27"; | |
} | |
must "(current() != 'vlan-none' and count(current()/../vid) = 1) or (current() = 'vlan-none' and count(current()/../vid) = 0)" { | |
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"; | |
error-app-tag "msea-cfm-must-28"; | |
} | |
mandatory true; | |
// msea:not-changeable; | |
description "The type of tag to apply to packets in this VLAN"; | |
} | |
} // end of component-list | |
leaf ccm-interval { | |
type enumeration { | |
enum 3.3ms { | |
description "CCMs are sent every 3 1/3 milliseconds (300Hz)."; | |
} | |
enum 10ms { | |
description "CCMs are sent every 10 milliseconds."; | |
} | |
enum 100ms { | |
description "CCMs are sent every 100 milliseconds."; | |
} | |
enum 1s { | |
description "CCMs are sent every 1 second."; | |
} | |
} | |
mandatory true; | |
description | |
"The interval between CCM transmissions to be used by all MEPs in the MA"; | |
reference | |
"[802.1q] 12.14.6.1.3:e | |
IEEE8021-CFM-MIB.Dot1agCfmCcmInterval"; | |
} | |
leaf-list remote-meps { | |
type msea:mep-id-type; | |
max-elements 9; //The local MEP and up to 8 remote meps | |
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" { | |
error-message "The maximum number of remote MEPs on the device across all MDs and MAs must not exceed 64"; | |
error-app-tag "msea-cfm-must-29"; | |
} | |
description | |
"A list of the MEPIDs of the MEPs in the MA. The list | |
consists of the ids of the local MEP (defined below) | |
and up to 8 remote meps. A maximum of 64 remote MEPs | |
can be configured on all MAs on the device"; | |
reference | |
"[802.1q] 12.14.6.1.3:g"; | |
} | |
list maintenance-association-end-point { | |
must "count(/msea-cfm:mef-cfm/msea-cfm:maintenance-domain/msea-cfm:maintenance-association/msea-cfm:maintenance-association-end-point) <= 64" { | |
error-message "The maximum number of MEPs on the whole device must not exceed 64"; | |
error-app-tag "msea-cfm-must-30"; | |
} | |
key "mep-identifier"; | |
max-elements 1; //Only one local MEP is allowed per MA | |
description | |
"The list of Maintenance association End Points in a specific Maintance Association."; | |
leaf mep-identifier { | |
type msea:mep-id-type; | |
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" { | |
error-message "The MEP ID must be listed in the 'remote-meps' list for this MA"; | |
error-app-tag "msea-cfm-must-31"; | |
} | |
description | |
"Integer that is unique among all the MEPs in the same MA. Other | |
definition is: a small integer, unique over a given | |
Maintenance Association, identifying a specific Maintenance | |
association End Point."; | |
reference | |
"[802.1q] 12.14.6.3.2:b"; | |
} | |
leaf interface { | |
type enumeration { | |
enum eth0 { | |
description "Optics/eth0/WAN - commonly the Carrier port."; | |
} | |
enum eth1 { | |
description "Host/eth1/LAN - commonly the System port."; | |
} | |
} | |
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" { | |
error-message "The combination of 'md-level', 'vid', 'direction' and 'interface' must be unique for all MEPs on the system"; | |
error-app-tag "msea-cfm-must-32"; | |
description "Check that this interface is unique for all MEPs in this Maintenance Association. | |
The Maintanance Association already checks that the VID is unique for the Maintenance Domain."; | |
} | |
mandatory true; | |
// msea:not-changeable; | |
description | |
"An interface, either a Bridge Port or an aggregated IEEE 802.3 port | |
within a Bridge Port, to which the MEP is attached. Each interface in | |
the system is uniquely identified by an interface-name. The structure | |
and content of the name is outside the scope of this specification. | |
Added restriction for Edge Assure that the interface name can only be eth0 or eth1"; | |
reference | |
"[802.1q] 12.14.7.1.3:b"; | |
} | |
leaf direction { | |
type enumeration { | |
enum down { | |
description "Indicates when CFM frames are transmitted towards and | |
received from the wire."; | |
} | |
} | |
default down; | |
// msea:not-changeable; | |
description | |
"A value indicating the direction in which the MEP faces on the | |
interface. For EdgeAssure can only be 'down' Changed from | |
mandatory to default = down"; | |
reference | |
"[802.1q] 12.14.7.1.3:c"; | |
} | |
leaf primary-vid { | |
type union { | |
type enumeration { | |
enum 0 {description "0 to use the MA's VID";} | |
} | |
type msea:vlan-id-type; | |
} | |
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" { | |
error-message "PrimaryVID of MEP must be either 0 or from the range of VIDs in component-list of the MA"; | |
error-app-tag "msea-cfm-must-33"; | |
} | |
default 0; | |
description | |
"The Primary VID of the MEP. The value 0 indicates that either the | |
Primary VID is that of the MEP's MA or that the MEP's MA is | |
associated with no VID. Must be either 0 or from the range of VIDs in the | |
component-list of this MA. Changed to default=0 from mandatory"; | |
reference | |
"[802.1q] 12.14.7.1.3:d"; | |
} | |
leaf administrative-state { | |
type boolean; | |
mandatory true; | |
description | |
"The administrative state of the MEP"; | |
reference | |
"[802.1q] 12.14.7.1.3:e"; | |
} | |
leaf mac-address { | |
type yang:mac-address; | |
config false; | |
description | |
"The MAC address of the MEP"; | |
reference | |
"[802.1q] 12.14.7.1.3:i"; | |
} | |
leaf ccm-ltm-priority { | |
type msea:priority-type; | |
mandatory true; | |
description | |
"The priority parameter for CCMs and LTMs transmitted by the MEP."; | |
reference | |
"[802.1q] 12.14.7.1.3:h"; | |
} | |
container continuity-check { | |
description | |
"Data definitions related to the Continuity Check function."; | |
leaf cci-enabled { | |
type boolean; | |
default false; | |
description | |
"Configuration of whether the MEP is or is not to generate CCMs"; | |
reference | |
"[802.1q] 12.14.7.1.3:g"; | |
} | |
leaf fng-state { | |
type enumeration { | |
enum reset { | |
description "No defect has been present since the | |
fng-reset-time timer expired, or since | |
the state machine was last reset."; | |
} | |
enum defect { | |
description "A defect is present, but not for a long enough | |
time to be reported (fng-alarm-time)."; | |
} | |
enum report-defect { | |
description "A momentary state during which the defect is | |
reported by sending a fault-alarm notification, | |
if that action is enabled."; | |
} | |
enum defect-reported { | |
description "A defect is present, and some defect has been | |
reported."; | |
} | |
enum defect-clearing { | |
description "No defect is present, but the fng-reset-time timer has | |
not yet expired."; | |
} | |
} | |
default reset; | |
config false; | |
description | |
"A value indicating the current state of the MEP Fault Notification | |
Generator state machine"; | |
reference | |
"[802.1q] 12.14.7.1.3:f, 20.35 | |
IEEE8021-CFM-MIB.Dot1agCfmFngState"; | |
} | |
leaf lowest-fault-priority-defect { | |
type fault-alarm-defect-type; | |
description | |
"The lowest priority defect that is allowed to generate a Fault | |
Alarm."; | |
default remote-mac-error; | |
reference | |
"[802.1q] 12.14.7.1.3:k"; | |
} | |
leaf highest-priority-defect-found { | |
type fault-alarm-defect-type; | |
config false; | |
description | |
"Value indicating the highest-priority defect that has been | |
present since the MEP Fault Notification Generator state machine | |
was last in the FNG_RESET state The non-existence of this | |
leaf represents that no defect has been present since the | |
last FNG_RESET state"; | |
reference | |
"[802.1q] 12.14.7.1.3:n"; | |
} | |
leaf fng-alarm-time { | |
type yang:timeticks { | |
range 250..1000; | |
} | |
default 250; | |
description | |
"The time that defects must be present before a Fault Alarm is | |
issued in hundredths of seconds"; | |
reference | |
"[802.1q] 12.14.7.1.3:l, 20.33.3"; | |
} | |
leaf fng-reset-time { | |
type yang:timeticks { | |
range 250..1000; | |
} | |
default 1000; | |
description | |
"The time that defects must be absent before resetting a Fault Alarm | |
in hundredths of seconds"; | |
reference | |
"[802.1q] 12.14.7.1.3:m, 20.33.4"; | |
} | |
leaf active-defects { | |
type fault-alarm-defect-bits-type; | |
config false; | |
description | |
"A bit field of potential active defects. The values are the same as the | |
content of the fault-alarm-defect-type (except if it is 'none' then | |
nothing will be listed)."; | |
reference | |
"[802.1q] 12.14.7.1.3:o, p, q, r, s"; | |
} | |
leaf last-error-ccm { | |
type binary { | |
length "1..1522"; | |
} | |
config false; | |
description | |
"The last-received CCM that triggered an invalid-ccm fault"; | |
reference | |
"[802.1q] 12.14.7.1.3:t"; | |
} | |
leaf last-cross-connect-ccm { | |
type binary { | |
length "1..1522"; | |
} | |
config false; | |
description | |
"The last-received CCM that triggered a cross-connect-ccm fault"; | |
reference | |
"[802.1q] 12.14.7.1.3:u"; | |
} | |
leaf ccm-sequence-error-count { | |
type yang:counter32; | |
config false; | |
mandatory true; | |
description | |
"The total number of out-of-sequence CCMs received from all remote | |
MEPs."; | |
reference | |
"[802.1q] 12.14.7.1.3:v"; | |
} | |
leaf sent-ccms { | |
type yang:counter32; | |
config false; | |
mandatory true; | |
description | |
"The total number of CCMs transmitted."; | |
reference | |
"[802.1q] 12.14.7.1.3:w"; | |
} | |
} | |
container loopback { | |
description | |
"Data definitions related to the Loopback function."; | |
//config false; Commented out to let config attribs on mef-soam-pm work 08Dec15 SC Microsemi | |
leaf replies-received { | |
type yang:counter32; | |
config false; | |
mandatory true; | |
description | |
"The total number of valid, in-order LBRs received."; | |
reference | |
"[802.1q] 12.14.7.1.3:y"; | |
} | |
leaf replies-transmitted { | |
type yang:counter32; | |
config false; | |
mandatory true; | |
description | |
"The total number of LBRs transmitted."; | |
reference | |
"[802.1q] 12.14.7.1.3:ad"; | |
} | |
} //End of loopback | |
container remote-mep-database { | |
config false; | |
description | |
"The MEP CCM database"; | |
list remote-mep { | |
key remote-mep-id; | |
description | |
"The list of remote MEPs in the MEP CCM database"; | |
reference | |
"[802.1q] 12.14.7.6"; | |
leaf remote-mep-id { | |
type msea:mep-id-type; | |
description | |
"The MEPID of a remote MEP"; | |
reference | |
"[802.1q] 12.14.7.6.2"; | |
} | |
leaf remote-mep-state { | |
type remote-mep-state-type; | |
description | |
"An enumerated value indicating the operational state of the | |
Remote MEP state machine for this remote MEP."; | |
reference | |
"[802.1q] 12.14.7.6.3:b | |
IEEE8021-CFM-MIB.Dot1agCfmRemoteMepState"; | |
} | |
leaf failed-ok-time { | |
type yang:timeticks; | |
description | |
"The time (SysUpTime, IETF RFC 3418) at which the Remote MEP state | |
machine last entered either the RMEP_FAILED or RMEP_OK | |
state, or 0 if it has not yet entered either of those | |
states"; | |
reference | |
"[802.1q] 12.14.7.6.3:c"; | |
} | |
leaf mac-address { | |
type yang:mac-address; | |
description | |
"The MAC address of the remote MEP."; | |
reference | |
"[802.1q] 12.14.7.6.3:d"; | |
} | |
leaf rdi { | |
type boolean; | |
description | |
"An indication of the state of the RDI bit in the last received CCM, | |
true for RDI = 1, or false for RDI = 0 or if none has been | |
received."; | |
reference | |
"[802.1q] 12.14.7.6.3:e"; | |
} | |
leaf port-status-tlv { | |
type msea:port-status-type; | |
description | |
"The enumerated value from the Port Status TLV from the last | |
CCM received from the remote MEP."; | |
reference | |
"[802.1q] 12.14.7.6.3:f"; | |
} | |
leaf interface-status-tlv { | |
type msea:interface-status-type; | |
description | |
"The enumerated value from the Interface Status TLV from the | |
last CCM received from the remote MEP"; | |
reference | |
"[802.1q] 12.14.7.6.3:g"; | |
} | |
} | |
} //end remote-mep-database | |
container linktrace { | |
config false; | |
description | |
"Data definitions related to the Linktrace function."; | |
leaf unexpected-replies-received { | |
type yang:counter32; | |
description | |
"The total number of unexpected LTRs received."; | |
reference | |
"[802.1q] 12.14.7.1.3:ac"; | |
} | |
container linktrace-database { | |
description | |
"Data definitions related to the Linktrace database for a specific MEP"; | |
list linktrace { | |
key "transaction-id"; | |
description | |
"The list of entries in a Linktrace database."; | |
uses linktrace-reply-grouping; | |
} | |
} | |
} //End linktrace | |
} | |
} | |
} | |
} | |
// | |
// RPCs related to CFM | |
// | |
rpc transmit-loopback { | |
description | |
"Start a loopback session on a specific MEP | |
The counters in the loopback container of the associated MEP will be updated | |
with the result of the loopback session until the configured number of messages | |
have been sent."; | |
// 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 | |
// "[802.1q] 12.14.7.3"; | |
input { | |
uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi | |
container target-address { | |
description | |
"Target MAC address or MEP ID for the Loopback session."; | |
uses target-address-group; | |
} | |
leaf number-of-messages { | |
type uint32 { | |
range "1..1024"; | |
} | |
default 1; | |
description | |
"The number of LBM transmissions in a session."; | |
reference | |
"[802.1q] 12.14.7.3.2:c, [MEF30] R39"; | |
} | |
leaf data-tlv { | |
type binary; | |
description | |
"An arbitrary amount of data to be included in a Data TLV."; | |
reference | |
"[802.1q] 12.14.7.3.d, IEEE8021-CFM-MIB.dot1agCfmMepTransmitLbmDataTlv"; | |
} | |
leaf vlan-priority { | |
type msea:priority-type; | |
description | |
"The priority parameter to be used in the transmitted LBMs"; | |
reference | |
"[802.1q] 12.14.7.3.2:e"; | |
} | |
leaf vlan-drop-eligible { | |
type boolean; | |
default true; | |
description | |
"The drop eligible parameter to be used in the transmitted LBMs"; | |
reference | |
"[802.1q] 12.14.7.3.2:e"; | |
} | |
} | |
} | |
rpc abort-loopback { | |
description | |
"Administratively abort a loopback session in progress on a specific MEP"; | |
// 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 | |
// "[MEF30] 8.2, R28"; | |
input { | |
uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi | |
} | |
} | |
rpc transmit-linktrace { | |
description | |
"Start a linktrace session on a specific remote MEP associated | |
with a local MEP. | |
This RPC will wait 6 seconds for the linktrace replies to be | |
gathered from remote MEP and any intermediate MIPs and will | |
display them in line. The information about the last linktrace | |
transaction will also be visible in the state data beneath the | |
local MEP until the next linktrace is run. Only one | |
instance of linktrace can be run at a time"; | |
// reference | |
// "[802.1q] 12.14.7.4"; | |
input { | |
uses maintenance-association-end-point-reference; //Added 08Dec15 SC Microsemi | |
uses linktrace-parameters-group; | |
} | |
output { | |
anyxml data { | |
description "The complete response from the Linktrace | |
including the individual replies from remote MEPs | |
and any intermediate MIPs"; | |
} | |
} | |
} | |
// | |
// Notifications related to CFM | |
// | |
notification fault-alarm { | |
description | |
"A notification that a specific MEP has a persistent defect condition."; | |
reference | |
"[802.1q] 12.14.7.7"; | |
container alarm { | |
description | |
"Data definitions related to a persistent defect on a specific MEP."; | |
uses mep-notification-reference; | |
leaf remote-mep { | |
type msea:mep-id-type; | |
description "Remote MEP identifier"; | |
} | |
leaf highest-defect { | |
type fault-alarm-defect-type; | |
description "The highest priority defect currently asserted when the alarm occurs on the MEP."; | |
} | |
} | |
} | |
} | |