module l3vpn-svc-ext {
    yang-version 1;
    namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext";
    prefix "l3vpn-svc-ext";

    import yrt-ietf-inet-types { prefix inet;  }
    import ietf-l3vpn-svc { prefix l3vpn;  }

    revision 2016-07-30 {
        description
        "Eliminated warnings";
    }

    revision "2016-07-20" {
        description "Initial revision of extended l3vpn yang model";
    }

    typedef short-as-number {
        type inet:as-number {
            range 0..65535;
        }
    }

    typedef route-distinguisher {
        reference "https://tools.ietf.org/html/rfc4364#section-4.2";
        type union {
            type rd-ipv4;
            type rd-as;
            type rd-as2;
        }
    }

    typedef rd-ipv4 {
        type string {
            /* IPv4 : 2B number */
            pattern '((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
                + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))'
                + ':'
                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
        }
    }

    typedef rd-as {
        type string {
            /* 2B AS : 4B number */
            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])'
                + ':'
                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
                + '42949672[0-8][0-9]|429496729[0-5])';
        }
    }

    typedef rd-as2 {
        type string {
            /* 4B AS : 2B number */
            pattern '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '[1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|[1-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '4[0-1][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|42[0-8][0-9][0-9][0-9][0-9][0-9][0-9][0-9]|'
                + '429[0-3][0-9][0-9][0-9][0-9][0-9][0-9]|4294[0-8][0-9][0-9][0-9][0-9][0-9]|'
                + '42949[0-5][0-9][0-9][0-9][0-9]|429496[0-6][0-9][0-9][0-9]|4294967[0-1][0-9][0-9]|'
                + '42949672[0-8][0-9]|429496729[0-5])'
                + ':'
                + '([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|'
                + '[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]|'
                + '65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5])';
        }
    }

    identity tc-demanded-tunnel {
        base l3vpn:transport-constraint;
        description "on-demand tunnel.";
    }

    grouping class-profile {
        list qos-class {
            key class-id;
            leaf class-id {
                type string;
                description
                 "Identification of the
                 class of service.
                 This identifier is internal to
                 the administration.";
            }
            leaf rate-limit {
                type uint8;
                units percent;
                description
                 "To be used if class must
                 be rate
                 limited. Expressed as
                 percentage of the svc-bw.";
            }
            leaf priority-level {
                type uint8;
                description
                 "Defines the level of the
                 class in
                 term of priority queueing.
                 The higher the level is the
                 higher
                 is the priority.";
            }
            leaf guaranteed-bw-percent {
                type uint8;
                units percent;
                description
                 "To be used to define the
                 guaranteed
                 BW in percent of the svc-bw
                 available at the priority-level.";
            }
            description
             "List of class of services.";
        }
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:service/l3vpn:qos/l3vpn:qos-profile/l3vpn:qos-profile" {
        case custom-unicom {
            container inbound-classes {
                uses class-profile;
            }
            container outbound-classes {
                uses class-profile;
            }
        }
    }

    grouping bearer-attachment-grouping {
        container bearer-attachment {
            leaf pe-name {
                type string;
            }
            leaf pe-mgmt-ip {
                type inet:ipv4-address;
            }
            description "attached PE";
        }
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer" { //used
        uses bearer-attachment-grouping;
    }

    grouping requested-type-grouping {
        container requested-type-profile {
            choice requested-type-choice {
                case dot1q-case {
                    container dot1q {
                        leaf physical-if {
                            description "physical interface name.";
                            type string;
                        }
                        leaf vlan-id {
                            type uint16 {
                                range "1..4096";
                            }
                        }
                    }
                }
                case physical-case {
                    container physical {
                        leaf physical-if {
                            description "physical interface name.";
                            type string;
                        }
                    }
                }
            }
            leaf circuit-id {
                description "circuit description for PE-CE port.";
                type string;
            }
        }
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:bearer/l3vpn:requested-type" { //used
        uses requested-type-grouping;
    }

    grouping bfd-grouping {
        leaf bfd-enabled {
            type boolean;
            description
             "BFD activation";
        }
        choice holdtime {
            case profile {
                leaf profile-name {
                    type string;
                    description
                     "Service provider well
                     known profile.";
                }
                description
                 "Service provider well
                 known profile.";
            }
            case fixed {
                leaf fixed-value {
                    type uint32;
                    units msec;
                    description
                     "Expected holdtime
                     expressed
                     in msec.";
                }
            }
            case dynamic {
                container dynamic-value {
                    leaf interval {
                        type uint16;
                        units msec;
                        default 500;
                    }
                    leaf multiplier {
                        type uint16;
                        default 3;
                    }
                    description
                     "interval * multiplier is
                     timeout value.";
                }
            }
        }
    }

    grouping bgp-profile {
        leaf as-override {
            type boolean;
            default false;
        }
        container soo {
            leaf soo-enabled {
                type boolean;
            }
            leaf soo-value {
                type string;
            }
        }
        container password {
            leaf password-enabled {
                type boolean;
            }
            leaf password-value {
                type string;
            }
        }
        container bgp-timer {
            leaf keep-alive {
                type uint16;
                default 60;
                units "seconds";
            }
            leaf hold-time {
                type uint16;
                default 180;
                units "seconds";
            }
        }
        container bfd {
            uses bfd-grouping;
        }
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:routing-protocols/l3vpn:routing-protocol/l3vpn:bgp" {
        uses bgp-profile;
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:vpn-services/l3vpn:vpn-svc/l3vpn:transport-constraints/l3vpn:unicast-transport-constraints/l3vpn:constraint/l3vpn:constraint-list" {
        leaf constraint-opaque-value2 {
            type string;
            description
             "Opaque value that can be used to
             specify constraint parameters.";
        }
    }

    grouping route-ipv4-extended-community {
        reference "http://tools.ietf.org/html/rfc4360";
        leaf global-administrator {
            type inet:ipv4-address;
        }
        leaf local-administrator {
            type uint16;
        }
    }

    grouping extended-community {
        choice extended-community {
            reference "http://tools.ietf.org/html/rfc4360#section-4";
            default route-target-extended-community-case;
            case route-target-extended-community-case {
                container route-target-extended-community {
                    leaf global-administrator {
                        type short-as-number;
                    }
                    leaf local-administrator {
                        type uint32;
                    }
                }
            }
            case route-target-ipv4-case {
                container route-target-ipv4 {
                    uses route-ipv4-extended-community;
                }
            }
            case route-target-extended-community-case2 {
                container route-target-extended-community2 {
                    leaf global-administrator {
                        type uint32;
                    }
                    leaf local-administrator {
                        type uint16;
                    }
                }
            }
        }
    }

    grouping rdrt-profile {
        choice site-role {
            case custom-case {
                container custom {
                    list import-rt {
                        key imrt-id;
                        leaf imrt-id {
                          type string;
                        }
                        uses extended-community;
                    }
                    list export-rt {
                        key exrt-id;
                        leaf exrt-id {
                          type string;
                        }
                        uses extended-community;
                    }
                    leaf rd {
                        type route-distinguisher;
                    }
                }
            }
        }
    }

    augment "/l3vpn:l3vpn-svc/l3vpn:sites/l3vpn:site/l3vpn:site-network-accesses/l3vpn:site-network-access/l3vpn:vpn-attachment" {
        uses rdrt-profile;
    }
}