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.";
            }
        }
    }
}

