diff --git a/apps/l3vpn/yangmodel/BUCK b/apps/l3vpn/yangmodel/BUCK
new file mode 100644
index 0000000..386be7b
--- /dev/null
+++ b/apps/l3vpn/yangmodel/BUCK
@@ -0,0 +1,13 @@
+COMPILE_DEPS = [
+  '//lib:CORE_DEPS',
+  '//lib:onos-yang-model',
+]
+
+yang_osgi_jar(
+  deps = COMPILE_DEPS,
+  name = 'onos-apps-l3vpn-yangmodel',
+  srcs = glob(['src/main/**/*.yang']),
+  visibility = [
+    'PUBLIC'
+  ],
+)
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/pom.xml b/apps/l3vpn/yangmodel/pom.xml
new file mode 100644
index 0000000..a2bfbd22
--- /dev/null
+++ b/apps/l3vpn/yangmodel/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onosproject</groupId>
+        <artifactId>onos-app-l3vpn</artifactId>
+        <version>1.10.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-app-l3vpn-yangmodel</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>IETF L3VPN YANG models</description>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.onosproject</groupId>
+                <artifactId>onos-yang-maven-plugin</artifactId>
+                <version>1.11</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>yang2java</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+    <!-- Fix maven plugin version together with fix for buck -->
+</project>
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
new file mode 100755
index 0000000..51a44a3
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
@@ -0,0 +1,454 @@
+  module ietf-inet-types {
+
+    yang-version 1;
+
+    namespace
+      "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+
+    prefix inet;
+
+    organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+    contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+    WG List:  <mailto:netmod@ietf.org>
+
+    WG Chair: David Kessens
+              <mailto:david.kessens@nsn.com>
+
+    WG Chair: Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>
+
+    Editor:   Juergen Schoenwaelder
+              <mailto:j.schoenwaelder@jacobs-university.de>";
+
+    description
+      "This module contains a collection of generally useful derived
+    YANG data types for Internet addresses and related things.
+
+    Copyright (c) 2013 IETF Trust and the persons identified as
+    authors of the code.  All rights reserved.
+
+    Redistribution and use in source and binary forms, with or
+    without modification, is permitted pursuant to, and subject
+    to the license terms contained in, the Simplified BSD License
+    set forth in Section 4.c of the IETF Trust's Legal Provisions
+    Relating to IETF Documents
+    (http://trustee.ietf.org/license-info).
+
+    This version of this YANG module is part of RFC 6991; see
+    the RFC itself for full legal notices.";
+
+    revision "2013-07-15" {
+      description
+        "This revision adds the following new data types:
+      - ip-address-no-zone
+      - ipv4-address-no-zone
+      - ipv6-address-no-zone";
+      reference
+        "RFC 6991: Common YANG Data Types";
+
+    }
+
+    revision "2010-09-24" {
+      description "Initial revision.";
+      reference
+        "RFC 6021: Common YANG Data Types";
+
+    }
+
+
+    typedef ip-version {
+      type enumeration {
+        enum "unknown" {
+          value 0;
+          description
+            "An unknown or unspecified version of the Internet
+          protocol.";
+        }
+        enum "ipv4" {
+          value 1;
+          description
+            "The IPv4 protocol as defined in RFC 791.";
+        }
+        enum "ipv6" {
+          value 2;
+          description
+            "The IPv6 protocol as defined in RFC 2460.";
+        }
+      }
+      description
+        "This value represents the version of the IP protocol.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetVersion textual convention of the SMIv2.";
+      reference
+        "RFC  791: Internet Protocol
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef dscp {
+      type uint8 {
+        range "0..63";
+      }
+      description
+        "The dscp type represents a Differentiated Services Code Point
+      that may be used for marking packets in a traffic stream.
+      In the value set and its semantics, this type is equivalent
+      to the Dscp textual convention of the SMIv2.";
+      reference
+        "RFC 3289: Management Information Base for the Differentiated
+        	  Services Architecture
+         RFC 2474: Definition of the Differentiated Services Field
+        	  (DS Field) in the IPv4 and IPv6 Headers
+         RFC 2780: IANA Allocation Guidelines For Values In
+        	  the Internet Protocol and Related Headers";
+
+    }
+
+    typedef ipv6-flow-label {
+      type uint32 {
+        range "0..1048575";
+      }
+      description
+        "The ipv6-flow-label type represents the flow identifier or Flow
+      Label in an IPv6 packet header that may be used to
+      discriminate traffic flows.
+
+      In the value set and its semantics, this type is equivalent
+      to the IPv6FlowLabel textual convention of the SMIv2.";
+      reference
+        "RFC 3595: Textual Conventions for IPv6 Flow Label
+         RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
+
+    }
+
+    typedef port-number {
+      type uint16 {
+        range "0..65535";
+      }
+      description
+        "The port-number type represents a 16-bit port number of an
+      Internet transport-layer protocol such as UDP, TCP, DCCP, or
+      SCTP.  Port numbers are assigned by IANA.  A current list of
+      all assignments is available from <http://www.iana.org/>.
+
+      Note that the port number value zero is reserved by IANA.  In
+      situations where the value zero does not make sense, it can
+      be excluded by subtyping the port-number type.
+      In the value set and its semantics, this type is equivalent
+      to the InetPortNumber textual convention of the SMIv2.";
+      reference
+        "RFC  768: User Datagram Protocol
+         RFC  793: Transmission Control Protocol
+         RFC 4960: Stream Control Transmission Protocol
+         RFC 4340: Datagram Congestion Control Protocol (DCCP)
+         RFC 4001: Textual Conventions for Internet Network Addresses";
+
+    }
+
+    typedef as-number {
+      type uint32;
+      description
+        "The as-number type represents autonomous system numbers
+      which identify an Autonomous System (AS).  An AS is a set
+      of routers under a single technical administration, using
+      an interior gateway protocol and common metrics to route
+      packets within the AS, and using an exterior gateway
+      protocol to route packets to other ASes.  IANA maintains
+      the AS number space and has delegated large parts to the
+      regional registries.
+
+      Autonomous system numbers were originally limited to 16
+      bits.  BGP extensions have enlarged the autonomous system
+      number space to 32 bits.  This type therefore uses an uint32
+      base type without a range restriction in order to support
+      a larger autonomous system number space.
+
+      In the value set and its semantics, this type is equivalent
+      to the InetAutonomousSystemNumber textual convention of
+      the SMIv2.";
+      reference
+        "RFC 1930: Guidelines for creation, selection, and registration
+        	  of an Autonomous System (AS)
+         RFC 4271: A Border Gateway Protocol 4 (BGP-4)
+         RFC 4001: Textual Conventions for Internet Network Addresses
+         RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
+        	  Number Space";
+
+    }
+
+    typedef ip-address {
+      type union {
+        type ipv4-address;
+        type ipv6-address;
+      }
+      description
+        "The ip-address type represents an IP address and is IP
+      version neutral.  The format of the textual representation
+      implies the IP version.  This type supports scoped addresses
+      by allowing zone identifiers in the address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address {
+      type string {
+        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])(%[\p{N}\p{L}]+)?';
+      }
+      description
+        "The ipv4-address type represents an IPv4 address in
+       dotted-quad notation.  The IPv4 address may include a zone
+       index, separated by a % sign.
+
+       The zone index is used to disambiguate identical address
+       values.  For link-local addresses, the zone index will
+       typically be the interface index number or the name of an
+       interface.  If the zone index is not present, the default
+       zone of the device will be used.
+
+       The canonical format for the zone index is the numerical
+       format";
+    }
+
+    typedef ipv6-address {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(%[\p{N}\p{L}]+)?';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(%.+)?';
+      }
+      description
+        "The ipv6-address type represents an IPv6 address in full,
+      mixed, shortened, and shortened-mixed notation.  The IPv6
+      address may include a zone index, separated by a % sign.
+
+      The zone index is used to disambiguate identical address
+      values.  For link-local addresses, the zone index will
+      typically be the interface index number or the name of an
+      interface.  If the zone index is not present, the default
+      zone of the device will be used.
+
+
+
+      The canonical format of IPv6 addresses uses the textual
+      representation defined in Section 4 of RFC 5952.  The
+      canonical format for the zone index is the numerical
+      format as described in Section 11.2 of RFC 4007.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-address-no-zone {
+      type union {
+        type ipv4-address-no-zone;
+        type ipv6-address-no-zone;
+      }
+      description
+        "The ip-address-no-zone type represents an IP address and is
+      IP version neutral.  The format of the textual representation
+      implies the IP version.  This type does not support scoped
+      addresses since it does not allow zone identifiers in the
+      address format.";
+      reference
+        "RFC 4007: IPv6 Scoped Address Architecture";
+
+    }
+
+    typedef ipv4-address-no-zone {
+      type ipv4-address {
+        pattern '[0-9\.]*';
+      }
+      description
+        "An IPv4 address without a zone index.  This type, derived from
+       ipv4-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+    }
+
+    typedef ipv6-address-no-zone {
+      type ipv6-address {
+        pattern '[0-9a-fA-F:\.]*';
+      }
+      description
+        "An IPv6 address without a zone index.  This type, derived from
+       ipv6-address, may be used in situations where the zone is
+       known from the context and hence no zone index is needed.";
+      reference
+        "RFC 4291: IP Version 6 Addressing Architecture
+         RFC 4007: IPv6 Scoped Address Architecture
+         RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef ip-prefix {
+      type union {
+        type ipv4-prefix;
+        type ipv6-prefix;
+      }
+      description
+        "The ip-prefix type represents an IP prefix and is IP
+      version neutral.  The format of the textual representations
+      implies the IP version.";
+    }
+
+    typedef ipv4-prefix {
+      type string {
+        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-2][0-9])|(3[0-2]))';
+      }
+      description
+        "The ipv4-prefix type represents an IPv4 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 32.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The canonical format of an IPv4 prefix has all bits of
+      the IPv4 address set to zero that are not part of the
+      IPv4 prefix.";
+    }
+
+    typedef ipv6-prefix {
+      type string {
+        pattern
+          '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
+        pattern
+          '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)(/.+)';
+      }
+      description
+        "The ipv6-prefix type represents an IPv6 address prefix.
+      The prefix length is given by the number following the
+      slash character and must be less than or equal to 128.
+
+      A prefix length value of n corresponds to an IP address
+      mask that has n contiguous 1-bits from the most
+      significant bit (MSB) and all other bits set to 0.
+
+      The IPv6 address should have all bits that do not belong
+      to the prefix set to zero.
+
+      The canonical format of an IPv6 prefix has all bits of
+      the IPv6 address set to zero that are not part of the
+      IPv6 prefix.  Furthermore, the IPv6 address is represented
+      as defined in Section 4 of RFC 5952.";
+      reference
+        "RFC 5952: A Recommendation for IPv6 Address Text
+        	  Representation";
+
+    }
+
+    typedef domain-name {
+      type string {
+        length "1..253";
+        pattern
+          '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)|\.';
+      }
+      description
+        "The domain-name type represents a DNS domain name.  The
+      name SHOULD be fully qualified whenever possible.
+
+      Internet domain names are only loosely specified.  Section
+      3.5 of RFC 1034 recommends a syntax (modified in Section
+      2.1 of RFC 1123).  The pattern above is intended to allow
+      for current practice in domain name use, and some possible
+      future expansion.  It is designed to hold various types of
+      domain names, including names used for A or AAAA records
+      (host names) and other records, such as SRV records.  Note
+      that Internet host names have a stricter syntax (described
+      in RFC 952) than the DNS recommendations in RFCs 1034 and
+      1123, and that systems that want to store host names in
+      schema nodes using the domain-name type are recommended to
+      adhere to this stricter standard to ensure interoperability.
+
+      The encoding of DNS names in the DNS protocol is limited
+      to 255 characters.  Since the encoding consists of labels
+      prefixed by a length bytes and there is a trailing NULL
+      byte, only 253 characters can appear in the textual dotted
+      notation.
+
+      The description clause of schema nodes using the domain-name
+      type MUST describe when and how these names are resolved to
+      IP addresses.  Note that the resolution of a domain-name value
+      may require to query multiple DNS records (e.g., A for IPv4
+      and AAAA for IPv6).  The order of the resolution process and
+      which DNS record takes precedence can either be defined
+      explicitly or may depend on the configuration of the
+      resolver.
+
+      Domain-name values use the US-ASCII encoding.  Their canonical
+      format uses lowercase US-ASCII characters.  Internationalized
+      domain names MUST be A-labels as per RFC 5890.";
+      reference
+        "RFC  952: DoD Internet Host Table Specification
+         RFC 1034: Domain Names - Concepts and Facilities
+         RFC 1123: Requirements for Internet Hosts -- Application
+        	  and Support
+         RFC 2782: A DNS RR for specifying the location of services
+        	  (DNS SRV)
+         RFC 5890: Internationalized Domain Names in Applications
+        	  (IDNA): Definitions and Document Framework";
+
+    }
+
+    typedef host {
+      type union {
+        type ip-address;
+        type domain-name;
+      }
+      description
+        "The host type represents either an IP address or a DNS
+      domain name.";
+    }
+
+    typedef uri {
+      type string;
+      description
+        "The uri type represents a Uniform Resource Identifier
+      (URI) as defined by STD 66.
+
+      Objects using the uri type MUST be in US-ASCII encoding,
+      and MUST be normalized as described by RFC 3986 Sections
+      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
+      percent-encoding is removed, and all case-insensitive
+      characters are set to lowercase except for hexadecimal
+      digits, which are normalized to uppercase as described in
+      Section 6.2.2.1.
+
+      The purpose of this normalization is to help provide
+      unique URIs.  Note that this normalization is not
+      sufficient to provide uniqueness.  Two URIs that are
+      textually distinct after this normalization may still be
+      equivalent.
+
+      Objects using the uri type may restrict the schemes that
+      they permit.  For example, 'data:' and 'urn:' schemes
+      might not be appropriate.
+
+      A zero-length URI is not a valid URI.  This can be used to
+      express 'URI absent' where required.
+
+      In the value set and its semantics, this type is equivalent
+      to the Uri SMIv2 textual convention defined in RFC 5017.";
+      reference
+        "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
+         RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
+        	  Group: Uniform Resource Identifiers (URIs), URLs,
+        	  and Uniform Resource Names (URNs): Clarifications
+        	  and Recommendations
+         RFC 5017: MIB Textual Conventions for Uniform Resource
+        	  Identifiers (URIs)";
+
+    }
+  }
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
new file mode 100755
index 0000000..dbd60dc
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
@@ -0,0 +1,2599 @@
+module ietf-l3vpn-svc {
+
+    namespace "urn:ietf:params:xml:ns:yang:ietf-l3vpn-svc";
+
+    prefix l3vpn-svc;
+
+    import ietf-inet-types {
+        prefix inet;
+    }
+
+    import ietf-yang-types {
+        prefix yang;
+    }
+
+    organization
+     "IETF L3SM Working Group";
+
+    contact
+        "WG List:   &lt;mailto:l3sm@ietf.org&gt;
+
+        Editor:
+
+        ";
+
+    description
+        "The YANG module defines a generic service configuration
+        model for Layer 3 VPN common across all of the vendor
+        implementations.";
+
+    revision 2016-07-30 {
+        description
+        "Eliminated warnings";
+        reference
+            "draft-ietf-l3sm-l3vpn-service-yang-11";
+    }
+
+    revision 2016-07-05 {
+        description
+        "Draft text update";
+        reference
+            "draft-ietf-l3sm-l3vpn-service-yang-11";
+    }
+    revision 2016-06-27 {
+        description
+        "
+        * Removed templates
+        * Add site-network-access-type
+        * Add a leaf number-of-dynamic-address in case
+        of pe-dhcp addressing;
+
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-10";
+    }
+    revision 2016-06-10 {
+        description
+         "Add site-vpn-flavor NNI";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-09";
+    }
+    revision 2016-06-09 {
+        description
+         "Traffic protection moved to site level.
+          Decouple operational-requirements in two containers.
+         ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-08";
+    }
+    revision 2016-06-06 {
+        description
+         "Set config false to actual-site-start and stop
+          Add a container before cloud-access list
+          Add a container before authorized-sites list
+          Add a container before denied-sites list
+          Modified access-diversity modeling
+          Replacing type placement diversity by an identity";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-07";
+    }
+    revision 2016-04-19 {
+        description
+         "* remove reference to core routing model :
+            created new address family identities
+          * added features
+          * Modified bearer parameters
+          * Modified union for ipv4/ipv6 addresses to ip-address
+          type
+          * Add BSR parameters for multicast
+          * Add applications matching for QoS classification
+          ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-06";
+    }
+    revision 2016-04-05 {
+        description
+         "
+         * Added linecard diverse for site diversity
+         * Added a new diversity enum in placement-diversity : none
+         * Added state to site location
+
+         ";
+        reference "";
+    }
+    revision 2016-03-11 {
+        description
+        "
+            * Modify VPN policy and creating a vpn-policy-list
+            * Add VPN policy reference and VPN ID reference
+            under site-network-access
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-05";
+    }
+    revision 2016-01-04 {
+        description
+        "
+            * Add extranet-vpn container in vpn-svc
+            * Creating top level containers
+            * Refine groupings
+            * Added site-vpn-flavor
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-03";
+    }
+    revision 2016-01-04 {
+        description
+         "
+            * qos-profile moved to choice
+            * vpn leaf moved to vpn-id in vpn-policy
+            * added ordered-by user to qos classification list
+            * moved traffic protection to access availability
+            * creating a choice in matching filter for VPN policy
+            * added dot1p matching field in flow-definition
+        ";
+        reference "";
+    }
+    revision 2015-12-07 {
+        description
+         "
+            * A site is now a collection of site-accesses.
+            This was introduced to support M to N availability.
+            * Site-availability has been removed, replaced by
+            availability parameters under site-accesses
+            * Added transport-constraints within vpn-svc
+        ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-02";
+    }
+    revision 2015-11-03 {
+        description "
+        * Add ToS support in match-flow
+        * nexthop in cascaded lan as mandatory
+        * customer-specific-info deleted and moved to routing
+        protocols
+        * customer-lan-connection modified : need prefix and CE address
+        * add choice in managing PE-CE addressing
+        * Simplifying traffic protection
+        ";
+        reference "";
+    }
+    revision 2015-09-10 {
+        description "
+        * Refine groupings for vpn-svc
+        * Removed name in vpn-svc
+        * id in vpn-svc moved to string
+        * Rename id in vpn-svc to vpn-id
+        * Changed key of vpn-svc list to vpn-id
+        * Add DSCP support in flow definition
+        ";
+        reference "";
+    }
+    revision 2015-08-07 {
+        description
+         "
+          Multicast :
+            * Removed ACL from security
+            * Add FW for site and cloud access
+         ";
+        reference "";
+    }
+    revision 2015-08-05 {
+        description
+         "
+          Multicast :
+          * Removed anycast-rp identity as discovery mechanism
+          * Added rp-group mappings for multicast
+          * Added flag for provider managed RP.
+         ";
+        reference "";
+    }
+    revision 2015-08-03 {
+        description
+         " * Creating multiple reusable groupings
+           * Added mpls leaf in vpn-svc for carrier's carrier case
+           * Modify identity single to single-site
+           * Modify site-type to site-role and also child identities.
+           * Creating OAM container under site and moved BFD in.
+           * Creating flow-definition grouping to be reused
+           in ACL, QoS ...
+           * Simplified VPN policy.
+           * Adding multicast static group to RP mappings.
+           * Removed native-vpn and site-role from global site
+           cfg, now managed within the VPN policy.
+           * Creating a separate list for site templates.
+         ";
+        reference "draft-ietf-l3sm-l3vpn-service-yang-01";
+    }
+    revision 2015-07-02 {
+        reference "draft-ietf-l3sm-l3vpn-service-yang-00";
+    }
+    revision 2015-04-24 {
+        description "
+        * Add encryption parameters
+        * Adding holdtime for BFD.
+        * Add postal address in location
+        ";
+        reference "draft-lstd-l3sm-l3vpn-service-yang-00";
+    }
+    revision 2015-02-05 {
+        description "Initial revision.";
+        reference "draft-l3vpn-service-yang-00";
+    }
+
+    /* Features */
+
+    feature cloud-access {
+        description
+         "Allow VPN to connect to a Cloud Service
+         provider.";
+    }
+    feature multicast {
+        description
+        "Enables multicast capabilities in a VPN";
+    }
+    feature ipv4 {
+        description
+        "Enables IPv4 support in a VPN";
+    }
+    feature ipv6 {
+        description
+        "Enables IPv6 support in a VPN";
+    }
+    feature carrierscarrier {
+        description
+        "Enables support of carrier's carrier";
+    }
+    feature traffic-engineering {
+        description
+        "Enables support of transport constraint.";
+    }
+    feature traffic-engineering-multicast {
+        description
+        "Enables support of transport constraint
+        for multicast.";
+    }
+    feature extranet-vpn {
+        description
+        "Enables support of extranet VPNs";
+    }
+    feature site-diversity {
+        description
+        "Enables support of site diversity constraints";
+    }
+    feature encryption {
+        description
+        "Enables support of encryption";
+    }
+    feature qos {
+        description
+        "Enables support of Class of Services";
+    }
+    feature qos-custom {
+        description
+        "Enables support of custom qos profile";
+    }
+    feature rtg-bgp {
+        description
+        "Enables support of BGP routing protocol.";
+    }
+    feature rtg-rip {
+        description
+        "Enables support of RIP routing protocol.";
+    }
+    feature rtg-ospf {
+        description
+        "Enables support of OSPF routing protocol.";
+    }
+    feature rtg-ospf-sham-link {
+        description
+        "Enables support of OSPF sham-links.";
+    }
+    feature rtg-vrrp {
+        description
+        "Enables support of VRRP routing protocol.";
+    }
+    feature fast-reroute {
+        description
+        "Enables support of Fast Reroute.";
+    }
+    feature bfd {
+        description
+        "Enables support of BFD.";
+    }
+    feature always-on {
+        description
+        "Enables support for always-on access
+        constraint.";
+    }
+    feature requested-type {
+        description
+        "Enables support for requested-type access
+        constraint.";
+    }
+    feature bearer-reference {
+        description
+        "Enables support for bearer-reference access
+        constraint.";
+    }
+
+    /* Typedefs */
+
+    typedef svc-id {
+        type string;
+        description
+         "Defining a type of service component
+         identificators.";
+    }
+
+    typedef template-id {
+        type string;
+        description
+         "Defining a type of service template
+         identificators.";
+    }
+
+    /* Identities */
+
+    identity site-network-access-type {
+        description
+         "Base identity for site-network-access type";
+    }
+    identity point-to-point {
+        base site-network-access-type;
+        description
+        "Identity for point-to-point connection";
+    }
+    identity multipoint {
+        base site-network-access-type;
+        description
+        "Identity for multipoint connection
+        Example : ethernet broadcast segment";
+    }
+    identity placement-diversity {
+        description
+         "Base identity for site placement
+         constraints";
+    }
+    identity pe-diverse {
+        base placement-diversity;
+        description
+        "Identity for PE diversity";
+    }
+    identity pop-diverse {
+        base placement-diversity;
+        description
+        "Identity for POP diversity";
+    }
+    identity linecard-diverse {
+        base placement-diversity;
+        description
+        "Identity for linecard diversity";
+    }
+    identity same-pe {
+        base placement-diversity;
+        description
+        "Identity for having sites connected
+        on the same PE";
+    }
+    identity same-bearer {
+        base placement-diversity;
+        description
+        "Identity for having sites connected
+        using the same bearer";
+    }
+    identity customer-application {
+        description
+         "Base identity for customer application";
+    }
+    identity web {
+        base customer-application;
+        description
+         "Identity for web application (e.g. HTTP,HTTPS)";
+    }
+    identity mail {
+        base customer-application;
+        description
+         "Identity for mail applications";
+    }
+    identity file-transfer {
+        base customer-application;
+        description
+         "Identity for file transfer applications (
+         e.g. FTP, SFTP, ...)";
+    }
+    identity database {
+        base customer-application;
+        description
+         "Identity for database applications";
+    }
+    identity social {
+        base customer-application;
+        description
+         "Identity for social network applications";
+    }
+    identity games {
+        base customer-application;
+        description
+         "Identity for gaming applications";
+    }
+    identity p2p {
+        base customer-application;
+        description
+         "Identity for peer to peer applications";
+    }
+    identity network-management {
+        base customer-application;
+        description
+         "Identity for management applications (e.g. telnet
+            syslog, snmp ...)";
+    }
+    identity voice {
+        base customer-application;
+        description
+         "Identity for voice applications";
+    }
+    identity video {
+        base customer-application;
+        description
+         "Identity for video conference applications";
+    }
+    identity address-family {
+        description
+         "Base identity for an address family.";
+    }
+    identity ipv4 {
+        base address-family;
+        description
+        "Identity for IPv4 address family.";
+    }
+    identity ipv6 {
+        base address-family;
+        description
+        "Identity for IPv6 address family.";
+    }
+    identity site-vpn-flavor {
+        description
+        "Base identity for the site VPN service flavor.";
+    }
+    identity site-vpn-flavor-single {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when the site belongs to only one VPN.";
+    }
+    identity site-vpn-flavor-multi {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when a logical connection of a site
+        belongs to multiple VPNs.";
+    }
+    identity site-vpn-flavor-sub {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used when a site has multiple logical connections.
+        Each of the connection may belong to different
+        multiple VPNs.";
+    }
+    identity site-vpn-flavor-nni {
+        base site-vpn-flavor;
+        description
+        "Base identity for the site VPN service flavor.
+        Used to describe a NNI option A connection.";
+    }
+    identity transport-constraint {
+        description
+         "Base identity for transport constraint.";
+    }
+    identity tc-latency {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on latency.";
+    }
+    identity tc-jitter {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on jitter.";
+    }
+    identity tc-bandwidth {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on bandwidth.";
+    }
+    identity tc-path-diversity {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on path diversity.";
+    }
+    identity tc-site-diversity {
+        base transport-constraint;
+        description
+         "Base identity for transport constraint
+         based on site diversity.";
+    }
+    identity management {
+        description
+         "Base identity for site management scheme.";
+    }
+    identity co-managed {
+        base management;
+        description
+         "Base identity for comanaged site.";
+    }
+    identity customer-managed {
+        base management;
+        description
+         "Base identity for customer managed site.";
+    }
+    identity provider-managed {
+        base management;
+        description
+         "Base identity for provider managed site.";
+    }
+    identity address-allocation-type {
+        description
+         "Base identity for address-allocation-type
+         for PE-CE link.";
+    }
+    identity pe-dhcp {
+        base address-allocation-type;
+        description
+         "PE router provides DHCP service to CE.";
+    }
+    identity static-address {
+        base address-allocation-type;
+        description
+         "PE-CE addressing is static.";
+    }
+    identity slaac {
+        base address-allocation-type;
+        description
+         "Use IPv6 SLAAC.";
+    }
+    identity site-role {
+        description
+         "Base identity for site type.";
+    }
+    identity any-to-any-role {
+        base site-role;
+        description
+         "Site in a any to any IPVPN.";
+    }
+    identity spoke-role {
+        base site-role;
+        description
+         "Spoke Site in a Hub & Spoke IPVPN.";
+    }
+    identity hub-role {
+        base site-role;
+        description
+         "Hub Site in a Hub & Spoke IPVPN.";
+    }
+    identity vpn-topology {
+        description
+         "Base identity for VPN topology.";
+    }
+    identity any-to-any {
+        base vpn-topology;
+        description
+         "Identity for any to any VPN topology.";
+    }
+    identity hub-spoke {
+        base vpn-topology;
+        description
+         "Identity for Hub'n'Spoke VPN topology.";
+    }
+    identity hub-spoke-disjoint {
+        base vpn-topology;
+        description
+         "Identity for Hub'n'Spoke VPN topology
+          where Hubs cannot talk between each other.";
+    }
+    identity multicast-tree-type {
+        description
+         "Base identity for multicast tree type.";
+    }
+    identity ssm-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for SSM tree type.";
+    }
+    identity asm-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for ASM tree type.";
+    }
+    identity bidir-tree-type {
+        base multicast-tree-type;
+        description
+         "Identity for BiDir tree type.";
+    }
+    identity multicast-rp-discovery-type {
+        description
+         "Base identity for rp discovery type.";
+    }
+    identity auto-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for auto-rp discovery type.";
+    }
+    identity static-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for static type.";
+    }
+    identity bsr-rp {
+        base multicast-rp-discovery-type;
+        description
+         "Base identity for BDR discovery type.";
+    }
+    identity routing-protocol-type {
+        description
+         "Base identity for routing-protocol type.";
+    }
+    identity ospf {
+        base routing-protocol-type;
+        description
+         "Identity for OSPF protocol type.";
+    }
+    identity bgp {
+        base routing-protocol-type;
+        description
+         "Identity for BGP protocol type.";
+    }
+    identity static {
+        base routing-protocol-type;
+        description
+         "Identity for static routing protocol type.";
+    }
+    identity rip {
+        base routing-protocol-type;
+        description
+         "Identity for RIP protocol type.";
+    }
+    identity rip-ng {
+        base routing-protocol-type;
+        description
+         "Identity for RIPng protocol type.";
+    }
+    identity vrrp {
+        base routing-protocol-type;
+        description
+         "Identity for VRRP protocol type.
+         This is to be used when LAn are directly connected
+         to provider Edge routers.";
+    }
+    identity direct {
+        base routing-protocol-type;
+        description
+         "Identity for direct protocol type.
+        .";
+    }
+    identity protocol-type {
+        description
+         "Base identity for protocol field type.";
+    }
+    identity tcp {
+        base protocol-type;
+        description
+         "TCP protocol type.";
+    }
+    identity udp {
+        base protocol-type;
+        description
+         "UDP protocol type.";
+    }
+    identity icmp {
+        base protocol-type;
+        description
+         "icmp protocol type.";
+    }
+    identity icmp6 {
+        base protocol-type;
+        description
+         "icmp v6 protocol type.";
+    }
+    identity gre {
+        base protocol-type;
+        description
+         "GRE protocol type.";
+    }
+    identity ipip {
+        base protocol-type;
+        description
+         "IPinIP protocol type.";
+    }
+    identity hop-by-hop {
+        base protocol-type;
+        description
+         "Hop by Hop IPv6 header type.";
+    }
+    identity routing {
+        base protocol-type;
+        description
+         "Routing IPv6 header type.";
+    }
+    identity esp {
+        base protocol-type;
+        description
+         "ESP header type.";
+    }
+    identity ah {
+        base protocol-type;
+        description
+         "AH header type.";
+    }
+
+    /* Groupings */
+
+    grouping vpn-service-cloud-access {
+        container cloud-accesses {
+        list cloud-access {
+            if-feature cloud-access;
+            key cloud-identifier;
+
+            leaf cloud-identifier {
+                type string;
+                description
+                 "Identification of cloud service. Local
+                 admin meaning.";
+            }
+            container authorized-sites {
+                list authorized-site {
+                    key site-id;
+
+                    leaf site-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/site-id";
+                        }
+                        description
+                         "Site ID.";
+                    }
+                    description
+                     "List of authorized sites.";
+                }
+                description
+                "Configuration of authorized sites";
+            }
+            container denied-sites {
+                list denied-site {
+                    key site-id;
+
+                    leaf site-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/site-id";
+                        }
+                        description
+                         "Site ID.";
+                    }
+                    description
+                     "List of denied sites.";
+                }
+                description
+                "Configuration of denied sites";
+            }
+            leaf nat-enabled {
+                type boolean;
+                description
+                 "Control if NAT is required or not.";
+            }
+            leaf customer-nat-address {
+                type inet:ipv4-address;
+                description
+                 "NAT address to be used in case of public
+                 or shared cloud.
+                 This is to be used in case customer is providing
+                 the public address.";
+            }
+            description
+             "Cloud access configuration.";
+        }
+            description
+             "Container for cloud access configurations";
+        }
+        description
+         "grouping for vpn cloud definition";
+    }
+
+    grouping multicast-rp-group-cfg {
+        choice group-format {
+            case startend {
+                leaf group-start {
+                    type inet:ip-address;
+                    description
+                     "First group address.";
+                }
+                leaf group-end {
+                    type inet:ip-address;
+                    description
+                     "Last group address.";
+                }
+            }
+            case singleaddress {
+                leaf group-address {
+                    type inet:ip-address;
+                    description
+                     "Group address";
+                }
+            }
+            description
+             "Choice for group format.";
+        }
+        description
+         "Definition of groups for
+         RP to group mapping.";
+    }
+
+    grouping vpn-service-multicast {
+        container multicast {
+            if-feature multicast;
+            leaf enabled {
+                type boolean;
+                default false;
+                description
+                 "Enable multicast.";
+            }
+            container customer-tree-flavors {
+                list tree-flavor {
+                    key type;
+
+                    leaf type {
+                        type identityref {
+                            base multicast-tree-type;
+                        }
+                        description
+                         "Type of tree to be used.";
+                    }
+                    description
+                     "List of tree flavors.";
+                }
+                description
+                 "Type of trees used by customer.";
+            }
+            container rp {
+                container rp-group-mappings {
+                    list rp-group-mapping {
+                        key "id";
+
+                        leaf id {
+                            type uint16;
+                            description
+                             "Unique identifier for the mapping.";
+                        }
+                        container provider-managed {
+                            leaf enabled {
+                                type boolean;
+                                default false;
+                                description
+                                 "Set to true, if the RP must be a
+                                 provider
+                                 managed node.
+                                 Set to false, if it is a customer
+                                 managed node.";
+                            }
+
+                            leaf rp-redundancy {
+                                when "../enabled = 'true'" {
+                                    description
+                                     "Relevant when RP
+                                     is provider managed.";
+                                }
+                                type boolean;
+                                default false;
+                                description
+                                 "If true, redundancy
+                                 mechanism for RP is required.";
+                            }
+                            leaf optimal-traffic-delivery {
+                                when "../enabled = 'true'" {
+                                    description
+                                     "Relevant when RP
+                                     is provider managed.";
+                                }
+                                type boolean;
+                                default false;
+                                description
+                                 "If true, SP must ensure
+                                 that traffic uses an optimal path.";
+                            }
+                            description
+                             "Parameters for provider managed RP.";
+                        }
+
+                        leaf rp-address {
+                            when "../provider-managed/enabled='false'" {
+                                description
+                                 "Relevant when RP
+                                 is provider managed.";
+                            }
+                            type inet:ip-address;
+                            description
+                            "Defines the address of the
+                            RendezvousPoint.
+                            Used if RP is customer managed.";
+                        }
+
+                        container groups {
+                            list group {
+                                key id;
+
+                                leaf id {
+                                    type uint16;
+                                    description
+                                     "Identifier for the group.";
+                                }
+                                uses multicast-rp-group-cfg;
+                                description
+                                "List of groups.";
+                            }
+                            description
+                             "Multicast groups associated with RP.";
+                        }
+
+                        description
+                         "List of RP to group mappings.";
+                    }
+                    description
+                    "RP to group mappings.";
+                }
+                container rp-discovery {
+                    leaf rp-discovery-type {
+                        type identityref {
+                            base multicast-rp-discovery-type;
+                        }
+                        default static-rp;
+                        description
+                         "Type of RP discovery used.";
+                    }
+                    container bsr-candidates {
+                        when "../rp-discovery-type='bsr-rp'" {
+                            description
+                             "Only applicable if discovery type
+                             is BSR-RP";
+                        }
+                        list bsr-candidate {
+                            key address;
+
+                            leaf address {
+                                type inet:ip-address;
+                                description
+                                 "Address of BSR candidate";
+                            }
+
+                            description
+                             "List of customer BSR candidates";
+                        }
+                        description
+                         "Customer BSR candidates address";
+                    }
+                    description
+                     "RP discovery parameters";
+                }
+
+                description
+                 "RendezvousPoint parameters.";
+            }
+            description
+                "Multicast global parameters for the VPN service.";
+        }
+        description
+         "grouping for multicast vpn definition";
+    }
+
+    grouping vpn-service-mpls {
+        leaf carrierscarrier {
+            if-feature carrierscarrier;
+            type boolean;
+            default false;
+            description
+             "The VPN is using Carrier's Carrier,
+             and so MPLS is required.";
+        }
+        description
+         "grouping for mpls CsC definition";
+    }
+
+    grouping customer-location-info {
+        container location {
+                leaf address {
+                    type string;
+                    description
+                    "Address (number and street)
+                    of the site.";
+
+                }
+                leaf zip-code {
+                    type string;
+                    description
+                    "ZIP code of the site.";
+                }
+                leaf state {
+                    type string;
+                    description
+                    "State of the site.
+                    This leaf can also be used
+                    to describe a region
+                    for country who does not have
+                    states.
+                    ";
+                }
+                leaf city {
+                    type string;
+                    description
+                     "City of the site.";
+                }
+                leaf country-code {
+                    type string;
+                    description
+                     "Country of the site.";
+                }
+                description
+                    "Location of the site.";
+        }
+        description
+         "This grouping defines customer location
+          parameters";
+    }
+
+    grouping site-diversity {
+        container site-diversity {
+                if-feature site-diversity;
+
+                container groups {
+                    list group {
+                        key group-id;
+
+                        leaf group-id {
+                            type string;
+                            description
+                             "Group-id the site
+                             is belonging to";
+                        }
+                        description
+                        "List of group-id";
+                    }
+                    description
+                     "Groups the site
+                     is belonging to.
+                     All site network accesses will
+                     inherit those group values.";
+                }
+                description
+                     "Diversity constraint type.";
+            }
+        description
+         "This grouping defines site diversity
+          parameters";
+    }
+
+    grouping access-diversity {
+        container access-diversity {
+                if-feature site-diversity;
+                container groups {
+                    list group {
+                        key group-id;
+
+                        leaf group-id {
+                            type string;
+                            description
+                             "Group-id the site network access
+                             is belonging to";
+                        }
+                        description
+                        "List of group-id";
+                    }
+                    description
+                     "Groups the site network access
+                     is belonging to";
+                }
+                container constraints {
+                    list constraint {
+                        key constraint-type;
+
+                        leaf constraint-type {
+                            type identityref {
+                                base placement-diversity;
+                            }
+                            description
+                             "Diversity constraint type.";
+                        }
+                        container target {
+                            choice target-flavor {
+                                case id {
+                                    list group {
+                                        key group-id;
+
+                                        leaf group-id {
+                                            type string;
+                                            description
+                                             "The constraint will apply
+                                             against this particular
+                                             group-id";
+                                        }
+                                        description
+                                         "List of groups";
+                                    }
+                                }
+                                case all-accesses {
+                                    leaf all-other-accesses {
+                                        type empty;
+                                        description
+                                         "The constraint will apply
+                                         against all other site network
+                                         access
+                                         of this site";
+                                    }
+                                }
+                                case all-groups {
+                                    leaf all-other-groups {
+                                        type empty;
+                                        description
+                                         "The constraint will apply
+                                         against all other groups the
+                                         customer
+                                         is managing";
+                                    }
+                                }
+                                description
+                                 "Choice for the group definition";
+                            }
+                            description
+                             "The constraint will apply against
+                             this list of groups";
+                        }
+                        description
+                         "List of constraints";
+                    }
+                    description
+                     "Constraints for placing this site
+                     network access";
+                }
+
+                description
+                     "Diversity parameters.";
+            }
+        description
+         "This grouping defines access diversity
+          parameters";
+    }
+
+    grouping operational-requirements {
+          leaf requested-site-start {
+               type yang:date-and-time;
+               description
+                "Optional leaf indicating requested date
+                and time
+                when the service at a particular site is
+                expected
+                to start";
+           }
+
+           leaf requested-site-stop {
+               type yang:date-and-time;
+               description
+                "Optional leaf indicating requested date
+                and time
+                when the service at a particular site is
+                expected
+                to stop";
+           }
+        description
+         "This grouping defines some operational parameters
+          parameters";
+    }
+
+    grouping operational-requirements-ops {
+           leaf actual-site-start {
+               type yang:date-and-time;
+               config false;
+               description
+                "Optional leaf indicating actual date
+                and time
+                when the service at a particular site
+                actually
+                started";
+           }
+           leaf actual-site-stop {
+               type yang:date-and-time;
+               config false;
+               description
+                "Optional leaf indicating actual date
+                and time
+                when the service at a particular site
+                actually
+                stopped";
+           }
+        description
+         "This grouping defines some operational parameters
+          parameters";
+    }
+
+    grouping flow-definition {
+        container match-flow {
+            leaf dscp {
+                type uint8 {
+                    range "0 .. 63";
+                }
+                description
+                 "DSCP value.";
+            }
+            leaf tos {
+                type uint8 {
+                    range "0 .. 254";
+                }
+                description
+                 "TOS value.";
+            }
+            leaf dot1p {
+                type uint8 {
+                    range "0 .. 7";
+                }
+                description
+                "802.1p matching.";
+            }
+            leaf ipv4-src-prefix {
+                type inet:ipv4-prefix;
+                description
+                 "Match on IPv4 src address.";
+            }
+            leaf ipv6-src-prefix {
+                type inet:ipv6-prefix;
+                description
+                 "Match on IPv6 src address.";
+            }
+            leaf ipv4-dst-prefix {
+                type inet:ipv4-prefix;
+                description
+                 "Match on IPv4 dst address.";
+            }
+            leaf ipv6-dst-prefix {
+                type inet:ipv6-prefix;
+                description
+                 "Match on IPv6 dst address.";
+            }
+            leaf l4-src-port {
+                type uint16;
+                description
+                 "Match on layer 4 src port.";
+            }
+            leaf l4-dst-port {
+                type uint16;
+                description
+                 "Match on layer 4 dst port.";
+            }
+            leaf protocol-field {
+                type union {
+                    type uint8;
+                    type identityref {
+                        base protocol-type;
+                    }
+                }
+                description
+                 "Match on IPv4 protocol or
+                  Ipv6 Next Header
+                 field.";
+            }
+
+            description
+             "Describe flow matching
+             criterions.";
+        }
+        description
+         "Flow definition based on criteria.";
+    }
+
+    grouping site-service-basic {
+        leaf svc-input-bandwidth {
+               type uint32;
+               units bps;
+               description
+                "From the PE perspective, the service input
+                bandwidth of the connection.";
+        }
+        leaf svc-output-bandwidth {
+           type uint32;
+           units bps;
+           description
+            "From the PE perspective, the service output
+            bandwidth of the connection.";
+        }
+        leaf svc-mtu {
+            type uint16;
+            units bytes;
+            description
+             "MTU at service level.
+             If the service is IP,
+             it refers to the IP MTU.";
+        }
+        description
+         "Defines basic service parameters for a site.";
+    }
+
+    grouping site-protection {
+        container traffic-protection {
+            if-feature fast-reroute;
+            leaf enabled {
+                type boolean;
+                description
+                 "Enables
+                 traffic protection of access link.";
+            }
+
+            description
+             "Fast reroute service parameters
+             for the site.";
+        }
+        description
+         "Defines protection service parameters for a site.";
+    }
+
+    grouping site-service-mpls {
+        container carrierscarrier {
+            if-feature carrierscarrier;
+            leaf signalling-type {
+                type enumeration {
+                    enum "ldp" {
+                        description
+                            "Use LDP as signalling
+                            protocol between PE and CE.";
+                    }
+                    enum "bgp" {
+                        description
+                            "Use BGP 3107 as signalling
+                            protocol between PE and CE.
+                            In this case, bgp must be also
+                            configured
+                            as routing-protocol.
+                            ";
+                    }
+                }
+                description
+                 "MPLS signalling type.";
+            }
+            description
+             "This container is used when customer provides
+             MPLS based services.
+             This is used in case of Carrier's
+             Carrier.";
+        }
+        description
+         "Defines MPLS service parameters for a site.";
+    }
+
+    grouping site-service-qos-profile {
+        container qos {
+            if-feature qos;
+            container qos-classification-policy {
+                list rule {
+                    key id;
+                    ordered-by user;
+
+                    leaf id {
+                        type uint16;
+                        description
+                         "ID of the rule.";
+                    }
+
+                    choice match-type {
+                        case match-flow {
+                            uses flow-definition;
+                        }
+                        case match-application {
+                            leaf match-application {
+                                type identityref {
+                                    base customer-application;
+                                }
+                                description
+                                 "Defines the application
+                                 to match.";
+                            }
+                        }
+                        description
+                         "Choice for classification";
+                    }
+
+                    leaf target-class-id {
+                        type string;
+                        description
+                         "Identification of the
+                         class of service.
+                         This identifier is internal to
+                         the administration.";
+                    }
+
+                    description
+                     "List of marking rules.";
+                }
+                description
+                 "Need to express marking rules ...";
+            }
+            container qos-profile {
+
+                choice qos-profile {
+                    description
+                     "Choice for QoS profile.
+                     Can be standard profile or custom.";
+                    case standard {
+                        leaf profile {
+                            type string;
+                            description
+                             "QoS profile to be used";
+                        }
+                    }
+                    case custom {
+                        container classes {
+                            if-feature qos-custom;
+                            list 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.";
+                            }
+                            description
+                                 "Container for
+                                 list of class of services.";
+                        }
+
+                    }
+
+                }
+                description
+                "Qos profile configuration.";
+            }
+            description
+             "QoS configuration.";
+        }
+        description
+         "This grouping defines QoS parameters
+         for a site";
+
+    }
+
+    grouping site-security-authentication {
+        container authentication {
+            description
+             "Authentication parameters";
+        }
+        description
+         "This grouping defines authentication
+         parameters
+         for a site";
+    }
+
+    grouping site-security-encryption {
+        container encryption {
+            if-feature encryption;
+            leaf enabled {
+                type boolean;
+                description
+                 "If true, access encryption is required.";
+            }
+            leaf layer {
+                type enumeration {
+                    enum layer2 {
+                        description
+                         "Encryption will occur at layer2.";
+                    }
+                    enum layer3 {
+                        description
+                         "IPSec is requested.";
+                    }
+                }
+                description
+                 "Layer on which encryption is applied.";
+            }
+            container encryption-profile {
+                choice profile {
+                    case provider-profile {
+                        leaf profile-name {
+                            type string;
+                            description
+                             "Name of the SP profile
+                             to be applied.";
+                        }
+                    }
+                    case customer-profile {
+                        leaf algorithm {
+                            type string;
+                            description
+                             "Encryption algorithm to
+                             be used.";
+                        }
+                        choice key-type {
+                            case psk {
+                                leaf preshared-key {
+                                    type string;
+                                    description
+                                     "Key coming from
+                                     customer.";
+                                }
+                            }
+                            case pki {
+
+                            }
+                            description
+                             "Type of keys to be used.";
+                        }
+                    }
+                    description
+                     "Choice of profile.";
+                }
+                description
+                 "Profile of encryption to be applied.";
+            }
+            description
+             "Encryption parameters.";
+        }
+        description
+         "This grouping defines encryption parameters
+         for a site";
+    }
+
+    grouping site-attachment-bearer {
+        container bearer {
+            container requested-type {
+                if-feature requested-type;
+                leaf requested-type {
+                    type string;
+                    description
+                     "Type of requested bearer Ethernet, DSL,
+                     Wireless ...
+                     Operator specific.";
+                }
+                leaf strict {
+                    type boolean;
+                    default false;
+                    description
+                     "define if the requested-type is a preference
+                     or a strict requirement.";
+                }
+                description
+                 "Container for requested type.";
+            }
+            leaf always-on {
+                if-feature always-on;
+                type boolean;
+                default true;
+                description
+                "Request for an always on access type.
+                This means no Dial access type for
+                example.";
+            }
+            leaf bearer-reference {
+                if-feature bearer-reference;
+                type string;
+                description
+                 "This is an internal reference for the
+                 service provider.
+                 Used ";
+            }
+            description
+             "Bearer specific parameters.
+             To be augmented.";
+        }
+        description
+         "Defines physical properties of
+         a site attachment.";
+    }
+
+    grouping site-routing {
+        container routing-protocols {
+            list routing-protocol {
+                key type;
+
+                leaf type {
+                    type identityref {
+                        base routing-protocol-type;
+                    }
+                    description
+                     "Type of routing protocol.";
+                }
+
+
+                container ospf {
+                    when "../type = 'ospf'" {
+                        description
+                         "Only applies
+                         when protocol is OSPF.";
+                    }
+                    if-feature rtg-ospf;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    leaf area-address {
+                        type yang:dotted-quad;
+                        description
+                         "Area address.";
+                    }
+                    leaf metric {
+                        type uint16;
+                        description
+                         "Metric of PE-CE link.";
+                    }
+                    container sham-links {
+                        if-feature rtg-ospf-sham-link;
+                        list sham-link {
+                            key target-site;
+
+                            leaf target-site {
+                                type svc-id;
+                                description
+                                 "Target site for the sham link
+                                  connection.
+                                  The site is referred through it's ID.";
+                            }
+                            leaf metric {
+                                type uint16;
+                                description
+                                 "Metric of the sham link.";
+                            }
+                            description
+                             "Creates a shamlink with another
+                             site";
+                        }
+                        description
+                         "List of Sham links";
+                    }
+                    description
+                     "OSPF specific configuration.";
+                }
+
+                container bgp {
+
+                    when "../type = 'bgp'" {
+                        description
+                         "Only applies when
+                         protocol is BGP.";
+                    }
+                    if-feature rtg-bgp;
+                    leaf autonomous-system {
+                        type uint32;
+                        description
+                         "AS number.";
+                    }
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    description
+                     "BGP specific configuration.";
+                }
+                container static {
+                    when "../type = 'static'" {
+                        description
+                         "Only applies when protocol
+                         is static.";
+                    }
+
+                    container cascaded-lan-prefixes {
+                        list ipv4-lan-prefixes {
+                            if-feature ipv4;
+                            key "lan next-hop";
+
+                            leaf lan {
+                                type inet:ipv4-prefix;
+                                description
+                                 "Lan prefixes.";
+                            }
+                            leaf lan-tag {
+                                type string;
+                                description
+                                 "Internal tag to be used in vpn
+                                 policies.";
+                            }
+                            leaf next-hop {
+                                type inet:ipv4-address;
+                                description
+                                 "Nexthop address to use at customer
+                                 side.";
+                            }
+                            description "
+                                List of LAN prefixes for
+                                the site.
+                                ";
+                        }
+                        list ipv6-lan-prefixes {
+                            if-feature ipv6;
+                            key "lan next-hop";
+
+                            leaf lan {
+                                type inet:ipv6-prefix;
+                                description
+                                 "Lan prefixes.";
+                            }
+                            leaf lan-tag {
+                                type string;
+                                description
+                                 "Internal tag to be used
+                                 in vpn policies.";
+                            }
+                            leaf next-hop {
+                                type inet:ipv6-address;
+                                description
+                                 "Nexthop address to use at
+                                 customer side.";
+                            }
+                            description "
+                                List of LAN prefixes for the site.
+                                ";
+                        }
+                        description
+                            "LAN prefixes from the customer.";
+                    }
+                    description
+                     "Static routing
+                     specific configuration.";
+                }
+                container rip {
+
+                    when "../type = 'rip'" {
+                        description
+                         "Only applies when
+                         protocol is RIP.";
+                    }
+                    if-feature rtg-rip;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be
+                         activated.";
+                    }
+
+                    description
+                     "RIP routing specific
+                     configuration.";
+                }
+
+
+                container vrrp {
+
+                    when "../type = 'vrrp'" {
+                        description
+                         "Only applies when
+                         protocol is VRRP.";
+                    }
+                    if-feature rtg-vrrp;
+                    leaf-list address-family {
+                        type identityref {
+                            base address-family;
+                        }
+                        description
+                         "Address family to be activated.";
+                    }
+                    description
+                     "VRRP routing specific configuration.";
+                }
+
+
+                description
+                 "List of routing protocols used
+                 on the site.
+                 Need to be augmented.";
+            }
+            description
+             "Defines routing protocols.";
+        }
+        description
+         "Grouping for routing protocols.";
+    }
+
+    grouping site-attachment-ip-connection {
+        container ip-connection {
+            container ipv4 {
+                if-feature ipv4;
+                leaf address-allocation-type {
+                    type identityref {
+                        base address-allocation-type;
+                    }
+
+                    default "static-address";
+                    description
+                     "Defines how addresses are allocated.
+                     ";
+                }
+
+                leaf number-of-dynamic-address {
+                    when
+                    "../address-allocation-type = 'pe-dhcp'"
+                     {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    type uint8;
+                    default 1;
+                    description
+                     "Describes the number of IP addresses the
+                     customer requires";
+                }
+                container addresses {
+                    when
+                    "../address-allocation-type = 'static-address'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    leaf provider-address {
+                        type inet:ipv4-address;
+                        description
+                         "Provider side address.";
+                    }
+                    leaf customer-address {
+                        type inet:ipv4-address;
+                        description
+                         "Customer side address.";
+                    }
+                    leaf mask {
+                        type uint8 {
+                            range "0..32";
+                        }
+                        description
+                         "Subnet mask expressed
+                         in bits";
+                    }
+                    description
+                     "Describes IP addresses used";
+                }
+                description
+                 "IPv4 specific parameters";
+
+            }
+            container ipv6 {
+                if-feature ipv6;
+                leaf address-allocation-type {
+                    type identityref {
+                        base address-allocation-type;
+                    }
+                    default "static-address";
+                    description
+                     "Defines how addresses are allocated.
+                     ";
+                }
+                leaf number-of-dynamic-address {
+                    when
+                    "../address-allocation-type = 'pe-dhcp'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    type uint8;
+                    default 1;
+                    description
+                     "Describes the number of IP addresses the
+                     customer requires";
+                }
+                container addresses {
+                    when
+                    "../address-allocation-type = 'static-address'" {
+                        description
+                         "Only applies when
+                         protocol allocation type is static";
+                    }
+                    leaf provider-address {
+                        type inet:ipv6-address;
+                        description
+                         "Provider side address.";
+                    }
+                    leaf customer-address {
+                        type inet:ipv6-address;
+                        description
+                         "Customer side address.";
+                    }
+                    leaf mask {
+                        type uint8 {
+                            range "0..128";
+
+                        }
+                        description
+                         "Subnet mask expressed
+                         in bits";
+                    }
+                    description
+                     "Describes IP addresses used";
+                }
+
+                description
+                 "IPv6 specific parameters";
+
+            }
+            container oam {
+                container bfd {
+                    if-feature bfd;
+                    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.";
+                            }
+                        }
+                        description
+                         "Choice for holdtime flavor.";
+                    }
+                    description
+                     "Container for BFD.";
+                }
+                description
+                 "Define the OAM used on the connection.";
+            }
+            description
+             "Defines connection parameters.";
+        }
+        description
+         "This grouping defines IP connection parameters.";
+    }
+
+    grouping site-service-multicast {
+        container multicast {
+            if-feature multicast;
+            leaf multicast-site-type {
+                type enumeration {
+                    enum receiver-only {
+                        description
+                         "The site has only receivers.";
+                    }
+                    enum source-only {
+                        description
+                         "The site has only sources.";
+                    }
+                    enum source-receiver {
+                        description
+                         "The site has both
+                         sources & receivers.";
+                    }
+                }
+                default "source-receiver";
+                description
+                 "Type of multicast site.";
+            }
+            container multicast-transport-protocol {
+                leaf ipv4 {
+                    if-feature ipv4;
+                    type boolean;
+                    default true;
+                    description
+                        "Enables ipv4 multicast transport";
+                }
+                leaf ipv6 {
+                    if-feature ipv6;
+                    type boolean;
+                    default false;
+                    description
+                        "Enables ipv6 multicast transport";
+                }
+                description
+                 "Defines protocol to transport multicast.";
+            }
+            leaf protocol-type {
+                type enumeration {
+                    enum host {
+                        description
+                         "
+                         Hosts are directly connected
+                         to the provider network.
+                         Host protocols like IGMP, MLD
+                         are required.
+                         ";
+                    }
+                    enum router {
+                        description
+                         "
+                         Hosts are behind a customer router.
+                         PIM will be implemented.
+                         ";
+                    }
+                    enum both {
+                        description
+                         "Some Hosts are behind a customer
+                         router and some others are directly
+                         connected to the provider network.
+                         Both host and routing protocols must be
+                         used. Typically IGMP and PIM will be
+                         implemented.
+                         ";
+                    }
+                }
+                default "both";
+                description
+                 "Multicast protocol type to be used
+                 with the customer site.";
+            }
+
+            description
+             "Multicast parameters for the site.";
+        }
+        description
+          "Multicast parameters for the site.";
+    }
+
+    grouping site-management {
+        container management {
+            leaf type {
+                type identityref {
+                    base management;
+                }
+                description
+                "Management type of the connection.";
+            }
+            leaf management-transport {
+                type identityref {
+                    base address-family;
+                }
+                description
+                 "Transport protocol used for management.";
+            }
+            leaf address {
+                type inet:ip-address;
+                description
+                 "Management address";
+            }
+
+            description
+             "Management configuration";
+        }
+        description
+          "Management parameters for the site.";
+    }
+
+    grouping site-vpn-flavor-profile {
+        leaf site-vpn-flavor {
+            type identityref {
+                base site-vpn-flavor;
+            }
+            default site-vpn-flavor-single;
+            description
+             "Defines if the site
+            is a single VPN site, or multiVPN or ...";
+        }
+        description
+         "Grouping for site-vpn-flavor.";
+    }
+
+    grouping site-vpn-policy {
+        container vpn-policy-list {
+            list vpn-policy {
+                key vpn-policy-id;
+
+                leaf vpn-policy-id {
+                    type svc-id;
+                    description
+                     "Unique identifier for
+                     the VPN policy.";
+                }
+
+                list entries {
+                    key id;
+
+                    leaf id {
+                            type svc-id;
+                            description
+                             "Unique identifier for
+                              the policy entry.";
+                    }
+                    container filter {
+                        choice lan {
+                            case lan-prefix {
+                                container lan-prefixes {
+                                    list ipv4-lan-prefixes {
+                                        if-feature ipv4;
+                                        key lan;
+
+                                        leaf lan {
+                                            type inet:ipv4-prefix;
+                                            description
+                                             "Lan prefixes.";
+                                        }
+                                        description "
+                                            List of LAN prefixes
+                                            for the site.
+                                            ";
+                                    }
+                                    list ipv6-lan-prefixes {
+                                        if-feature ipv6;
+                                        key lan;
+
+                                        leaf lan {
+                                            type inet:ipv6-prefix;
+                                            description
+                                             "Lan prefixes.";
+                                        }
+                                        description "
+                                            List of LAN prefixes
+                                            for the site.
+                                            ";
+                                    }
+                                    description
+                                     "LAN prefixes from the customer.";
+                                }
+                            }
+                            case lan-tag {
+                                leaf-list lan-tag {
+                                    type string;
+                                    description
+                                     "List of lan-tags to be matched.";
+                                }
+                            }
+                            description
+                             "Choice for LAN matching type";
+                        }
+                        description
+                         "If used, it permit to split site LANs
+                         among multiple VPNs.
+                         If no filter used, all the LANs will be
+                         part of the same VPNs with the same
+                         role.";
+                    }
+                    container vpn {
+                        leaf vpn-id {
+                            type leafref {
+                                path "/l3vpn-svc/vpn-services/vpn-svc/vpn-id";
+                            }
+                            mandatory true;
+                            description
+                             "Reference to an IPVPN.";
+                        }
+                        leaf site-role {
+                            type identityref {
+                                base site-role;
+                            }
+                            mandatory true;
+                            description
+                             "Role of the site in the IPVPN.";
+                        }
+                        description
+                         "List of VPNs the LAN is associated to.";
+                    }
+                    description
+                     "List of entries for export policy.";
+                }
+                description
+                 "List of VPN policies.";
+            }
+            description
+                 "VPN policy.";
+        }
+        description
+          "VPN policy parameters for the site.";
+    }
+
+    grouping site-maximum-routes {
+        container maximum-routes {
+            list address-family {
+                key af;
+
+                leaf af {
+                    type identityref {
+                        base address-family;
+                    }
+                    description
+                     "Address-family.";
+                }
+                leaf maximum-routes {
+                    type uint32;
+                    description
+                     "Maximum prefixes the VRF can
+                     accept for this
+                     address-family.";
+                }
+                description
+                 "List of address families.";
+            }
+
+            description
+             "Define maximum-routes for the VRF.";
+        }
+        description
+        "Define maximum-routes for the site.";
+    }
+
+    grouping site-security {
+        container security {
+            uses site-security-authentication;
+            uses site-security-encryption;
+
+            description
+             "Site specific security parameters.";
+        }
+        description
+         "Grouping for security parameters.";
+    }
+
+    grouping site-service {
+        container service {
+            uses site-service-basic;
+            uses site-service-qos-profile;
+            uses site-service-mpls;
+            uses site-service-multicast;
+
+            description
+             "Service parameters on the attachement.";
+        }
+        description
+         "Grouping for service parameters.";
+    }
+
+    grouping transport-constraint-profile {
+        list constraint-list {
+            key constraint-type;
+
+            leaf constraint-type {
+                type identityref {
+                    base transport-constraint;
+                }
+                description
+                 "Constraint type to be applied.";
+            }
+            leaf constraint-opaque-value {
+                type string;
+                description
+                "Opaque value that can be used to
+                specify constraint parameters.";
+            }
+            description
+             "List of constraints";
+        }
+        description
+         "Grouping for transport constraint.";
+    }
+
+    grouping transport-constraints {
+        container transport-constraints {
+            if-feature traffic-engineering;
+            container unicast-transport-constraints {
+                list constraint {
+                    key constraint-id;
+
+                    leaf constraint-id {
+                        type svc-id;
+                        description
+                         "Defines an ID for the constraint
+                         rule.";
+                    }
+
+                    leaf site1 {
+                        type svc-id;
+                        description
+                         "The ID refers to one site end.";
+                    }
+                    leaf site2 {
+                        type svc-id;
+                        description
+                         "The ID refers to the other
+                         site end.";
+                    }
+                    uses transport-constraint-profile;
+                    description
+                     "List of constraints.
+                     Constraints are bidirectional.";
+                }
+                description
+                 "Unicast transport constraints.";
+            }
+            container multicast-transport-constraints {
+                if-feature traffic-engineering-multicast;
+                list constraint {
+                    key constraint-id;
+
+                    leaf constraint-id {
+                        type svc-id;
+                        description
+                         "Defines an ID for the constraint
+                         rule.";
+                    }
+
+                    leaf src-site {
+                        type svc-id;
+                        description
+                         "The ID refers to source site.";
+                    }
+                    leaf dst-site {
+                        type svc-id;
+                        description
+                         "The ID refers to the receiver
+                         site.";
+                    }
+                    uses transport-constraint-profile;
+                    description
+                     "List of constraints.
+                     Constraints are unidirectional.";
+                }
+                description
+                 "Multicast transport constraints.";
+            }
+            description
+                 "transport constraints.";
+        }
+        description
+         "Grouping for transport constraints
+         description.";
+    }
+
+    grouping vpn-extranet {
+        container extranet-vpns {
+            if-feature extranet-vpn;
+            list extranet-vpn {
+                key vpn-id;
+
+                leaf vpn-id {
+                    type svc-id;
+                    description
+                        "Identifies the target VPN";
+                }
+                leaf local-sites-role {
+                    type identityref {
+                        base site-role;
+                    }
+                    description
+                     "This describes the role of the
+                     local sites in the target VPN topology.";
+                }
+                description
+                 "List of extranet VPNs the local
+                 VPN is attached to.";
+            }
+            description
+             "Container for extranet vpn cfg.";
+        }
+        description
+            "grouping for extranet VPN configuration.
+            Extranet provides a way to interconnect all sites
+            from two VPNs in a easy way.";
+    }
+
+    grouping site-attachment-availability {
+        container availability {
+            leaf access-priority {
+                type uint32;
+                default 1;
+                description
+                 "Defines the priority for the access.
+                 The highest the priority value is,
+                 the highest the
+                 preference of the access is.";
+            }
+            description
+             "Availability parameters
+             (used for multihoming)";
+        }
+        description
+         "Defines site availability parameters.";
+    }
+
+    grouping access-vpn-policy {
+        container vpn-attachment {
+            choice attachment-flavor {
+                case vpn-policy-id {
+                    leaf vpn-policy-id {
+                        type leafref {
+                            path "/l3vpn-svc/sites/site/"+
+                            "vpn-policy-list/vpn-policy/"+
+                            "vpn-policy-id";
+                        }
+                        description
+                         "Reference to a VPN policy.";
+                    }
+                }
+                case vpn-id {
+                    leaf vpn-id {
+                        type leafref {
+                            path "/l3vpn-svc/vpn-services"+
+                            "/vpn-svc/vpn-id";
+                        }
+                        description
+                            "Reference to a VPN.";
+                    }
+                    leaf site-role {
+                        type identityref {
+                                base site-role;
+                            }
+                        mandatory true;
+                        description
+                         "Role of the site in the IPVPN.";
+                    }
+                }
+                mandatory true;
+                description
+                 "Choice for VPN attachment flavor.";
+            }
+            description
+             "Defines VPN attachment of a site.";
+        }
+        description
+         "Defines the VPN attachment rules
+         for a site logical access.";
+    }
+
+    grouping vpn-svc-cfg {
+        leaf vpn-id {
+                type svc-id;
+                description
+                "VPN identifier. Local administration meaning.";
+            }
+        leaf customer-name {
+            type string;
+            description
+             "Name of the customer.";
+        }
+        leaf topology {
+            type identityref {
+                base vpn-topology;
+            }
+            default "any-to-any";
+            description
+             "VPN topology.";
+        }
+
+        uses vpn-service-cloud-access;
+        uses vpn-service-multicast;
+        uses vpn-service-mpls;
+        uses transport-constraints;
+        uses vpn-extranet;
+
+        description
+         "grouping for vpn-svc configuration.";
+    }
+
+    grouping site-top-level-cfg {
+        uses operational-requirements;
+        uses customer-location-info;
+        uses site-diversity;
+        uses site-management;
+        uses site-vpn-policy;
+        uses site-vpn-flavor-profile;
+        uses site-maximum-routes;
+        uses site-security;
+        uses site-service;
+        uses site-protection;
+        uses site-routing;
+
+        description
+         "Grouping for site top level cfg.";
+    }
+
+    grouping site-network-access-top-level-cfg {
+        leaf site-network-access-type {
+            type identityref {
+                base site-network-access-type;
+            }
+            default "point-to-point";
+            description
+            "Describes the type of connection, e.g. :
+            point-to-point or multipoint";
+        }
+        uses access-diversity;
+        uses site-attachment-bearer;
+        uses site-attachment-ip-connection;
+        uses site-security;
+        uses site-service;
+        uses site-routing;
+        uses site-attachment-availability;
+        uses access-vpn-policy;
+
+        description
+         "Grouping for site network access
+         top level cfg.";
+    }
+
+    /* Main blocks */
+
+    container l3vpn-svc {
+        container vpn-services {
+            list vpn-svc {
+                key vpn-id;
+
+                uses vpn-svc-cfg;
+
+                description "
+                    List of VPN services.
+
+                ";
+            }
+            description
+             "top level container
+             for the VPN services.";
+        }
+
+        container sites {
+            list site {
+                key site-id;
+
+                leaf site-id {
+                    type svc-id;
+                    description
+                        "Identifier of the site.";
+                }
+
+                uses site-top-level-cfg;
+                uses operational-requirements-ops;
+
+                container site-network-accesses {
+                    list site-network-access {
+                        key site-network-access-id;
+
+                        leaf site-network-access-id {
+                            type svc-id;
+                            description
+                             "Identifier for the access";
+                        }
+                        uses site-network-access-top-level-cfg;
+
+                        description
+                         "List of accesses for a site.";
+                    }
+                    description
+                     "List of accesses for a site.";
+                }
+
+                description "List of sites.";
+            }
+            description
+             "Container for sites";
+        }
+
+        description
+         "Main container for L3VPN service configuration.";
+    }
+}
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang
new file mode 100755
index 0000000..3f87464
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang
@@ -0,0 +1,473 @@
+module ietf-yang-types {
+
+     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+     prefix "yang";
+
+     organization
+      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
+
+     contact
+      "WG Web:   <http://tools.ietf.org/wg/netmod/>
+       WG List:  <mailto:netmod@ietf.org>
+
+       WG Chair: David Kessens
+                 <mailto:david.kessens@nsn.com>
+
+       WG Chair: Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>
+
+       Editor:   Juergen Schoenwaelder
+                 <mailto:j.schoenwaelder@jacobs-university.de>";
+
+     description
+      "This module contains a collection of generally useful derived
+       YANG data types.
+
+       Copyright (c) 2013 IETF Trust and the persons identified as
+       authors of the code.  All rights reserved.
+
+       Redistribution and use in source and binary forms, with or
+       without modification, is permitted pursuant to, and subject
+       to the license terms contained in, the Simplified BSD License
+       set forth in Section 4.c of the IETF Trust's Legal Provisions
+       Relating to IETF Documents
+       (http://trustee.ietf.org/license-info).
+
+       This version of this YANG module is part of RFC 6991; see
+       the RFC itself for full legal notices.";
+
+     revision 2013-07-15 {
+       description
+        "This revision adds the following new data types:
+         - yang-identifier
+         - hex-string
+         - uuid
+         - dotted-quad";
+       reference
+        "RFC 6991: Common YANG Data Types";
+     }
+
+     revision 2010-09-24 {
+       description
+        "Initial revision.";
+       reference
+        "RFC 6021: Common YANG Data Types";
+     }
+
+     /*** collection of counter and gauge types ***/
+
+     typedef counter32 {
+       type uint32;
+       description
+        "The counter32 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter32 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter32 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter32.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter32 {
+       type yang:counter32;
+       default "0";
+       description
+        "The zero-based-counter32 type represents a counter32
+         that has the defined 'initial' value zero.
+
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^32-1 (4294967295 decimal), when it
+         wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+         In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter32 textual convention of the SMIv2.";
+       reference
+         "RFC 4502: Remote Network Monitoring Management Information
+                    Base Version 2";
+     }
+
+     typedef counter64 {
+       type uint64;
+       description
+        "The counter64 type represents a non-negative integer
+         that monotonically increases until it reaches a
+         maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Counters have no defined 'initial' value, and thus, a
+         single value of a counter has (in general) no information
+         content.  Discontinuities in the monotonically increasing
+         value normally occur at re-initialization of the
+         management system, and at other times as specified in the
+         description of a schema node using this type.  If such
+         other times can occur, for example, the creation of
+         a schema node of type counter64 at times other than
+         re-initialization, then a corresponding schema node
+         should be defined, with an appropriate type, to indicate
+         the last discontinuity.
+
+         The counter64 type should not be used for configuration
+         schema nodes.  A default statement SHOULD NOT be used in
+         combination with the type counter64.
+
+         In the value set and its semantics, this type is equivalent
+         to the Counter64 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef zero-based-counter64 {
+       type yang:counter64;
+       default "0";
+       description
+        "The zero-based-counter64 type represents a counter64 that
+         has the defined 'initial' value zero.
+         A schema node of this type will be set to zero (0) on creation
+         and will thereafter increase monotonically until it reaches
+         a maximum value of 2^64-1 (18446744073709551615 decimal),
+         when it wraps around and starts increasing again from zero.
+
+         Provided that an application discovers a new schema node
+         of this type within the minimum time to wrap, it can use the
+         'initial' value as a delta.  It is important for a management
+         station to be aware of this minimum time and the actual time
+         between polls, and to discard data if the actual time is too
+         long or there is no defined minimum time.
+
+         In the value set and its semantics, this type is equivalent
+         to the ZeroBasedCounter64 textual convention of the SMIv2.";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     typedef gauge32 {
+       type uint32;
+       description
+        "The gauge32 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^32-1 (4294967295 decimal), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge32 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge32 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the Gauge32 type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef gauge64 {
+       type uint64;
+       description
+        "The gauge64 type represents a non-negative integer, which
+         may increase or decrease, but shall never exceed a maximum
+         value, nor fall below a minimum value.  The maximum value
+         cannot be greater than 2^64-1 (18446744073709551615), and
+         the minimum value cannot be smaller than 0.  The value of
+         a gauge64 has its maximum value whenever the information
+         being modeled is greater than or equal to its maximum
+         value, and has its minimum value whenever the information
+         being modeled is smaller than or equal to its minimum value.
+         If the information being modeled subsequently decreases
+         below (increases above) the maximum (minimum) value, the
+         gauge64 also decreases (increases).
+
+         In the value set and its semantics, this type is equivalent
+         to the CounterBasedGauge64 SMIv2 textual convention defined
+         in RFC 2856";
+       reference
+        "RFC 2856: Textual Conventions for Additional High Capacity
+                   Data Types";
+     }
+
+     /*** collection of identifier-related types ***/
+
+     typedef object-identifier {
+       type string {
+         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+               + '(\.(0|([1-9]\d*)))*';
+       }
+       description
+        "The object-identifier type represents administratively
+         assigned names in a registration-hierarchical-name tree.
+
+         Values of this type are denoted as a sequence of numerical
+         non-negative sub-identifier values.  Each sub-identifier
+         value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
+         are separated by single dots and without any intermediate
+         whitespace.
+
+         The ASN.1 standard restricts the value space of the first
+         sub-identifier to 0, 1, or 2.  Furthermore, the value space
+         of the second sub-identifier is restricted to the range
+         0 to 39 if the first sub-identifier is 0 or 1.  Finally,
+         the ASN.1 standard requires that an object identifier
+         has always at least two sub-identifiers.  The pattern
+         captures these restrictions.
+
+         Although the number of sub-identifiers is not limited,
+         module designers should realize that there may be
+         implementations that stick with the SMIv2 limit of 128
+         sub-identifiers.
+
+         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
+         since it is not restricted to 128 sub-identifiers.  Hence,
+         this type SHOULD NOT be used to represent the SMIv2 OBJECT
+         IDENTIFIER type; the object-identifier-128 type SHOULD be
+         used instead.";
+       reference
+        "ISO9834-1: Information technology -- Open Systems
+         Interconnection -- Procedures for the operation of OSI
+         Registration Authorities: General procedures and top
+         arcs of the ASN.1 Object Identifier tree";
+     }
+
+     typedef object-identifier-128 {
+       type object-identifier {
+         pattern '\d*(\.\d*){1,127}';
+       }
+       description
+        "This type represents object-identifiers restricted to 128
+         sub-identifiers.
+
+         In the value set and its semantics, this type is equivalent
+         to the OBJECT IDENTIFIER type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef yang-identifier {
+       type string {
+         length "1..max";
+         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
+         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
+       }
+       description
+         "A YANG identifier string as defined by the 'identifier'
+          rule in Section 12 of RFC 6020.  An identifier must
+          start with an alphabetic character or an underscore
+          followed by an arbitrary sequence of alphabetic or
+          numeric characters, underscores, hyphens, or dots.
+
+          A YANG identifier MUST NOT start with any possible
+          combination of the lowercase or uppercase character
+          sequence 'xml'.";
+       reference
+         "RFC 6020: YANG - A Data Modeling Language for the Network
+                    Configuration Protocol (NETCONF)";
+     }
+
+     /*** collection of types related to date and time***/
+
+     typedef date-and-time {
+       type string {
+         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+               + '(Z|[\+\-]\d{2}:\d{2})';
+       }
+       description
+        "The date-and-time type is a profile of the ISO 8601
+         standard for representation of dates and times using the
+         Gregorian calendar.  The profile is defined by the
+         date-time production in Section 5.6 of RFC 3339.
+
+         The date-and-time type is compatible with the dateTime XML
+         schema type with the following notable exceptions:
+
+         (a) The date-and-time type does not allow negative years.
+
+         (b) The date-and-time time-offset -00:00 indicates an unknown
+             time zone (see RFC 3339) while -00:00 and +00:00 and Z
+             all represent the same time zone in dateTime.
+
+         (c) The canonical format (see below) of data-and-time values
+             differs from the canonical format used by the dateTime XML
+             schema type, which requires all times to be in UTC using
+             the time-offset 'Z'.
+
+         This type is not equivalent to the DateAndTime textual
+         convention of the SMIv2 since RFC 3339 uses a different
+         separator between full-date and full-time and provides
+         higher resolution of time-secfrac.
+
+         The canonical format for date-and-time values with a known time
+         zone uses a numeric time zone offset that is calculated using
+         the device's configured known offset to UTC time.  A change of
+         the device's offset to UTC time will cause date-and-time values
+         to change accordingly.  Such changes might happen periodically
+         in case a server follows automatically daylight saving time
+         (DST) time zone offset changes.  The canonical format for
+         date-and-time values with an unknown time zone (usually
+         referring to the notion of local time) uses the time-offset
+         -00:00.";
+       reference
+        "RFC 3339: Date and Time on the Internet: Timestamps
+         RFC 2579: Textual Conventions for SMIv2
+         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+     }
+
+     typedef timeticks {
+       type uint32;
+       description
+        "The timeticks type represents a non-negative integer that
+         represents the time, modulo 2^32 (4294967296 decimal), in
+         hundredths of a second between two epochs.  When a schema
+         node is defined that uses this type, the description of
+         the schema node identifies both of the reference epochs.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeTicks type of the SMIv2.";
+       reference
+        "RFC 2578: Structure of Management Information Version 2
+                   (SMIv2)";
+     }
+
+     typedef timestamp {
+       type yang:timeticks;
+       description
+        "The timestamp type represents the value of an associated
+         timeticks schema node at which a specific occurrence
+         happened.  The specific occurrence must be defined in the
+         description of any schema node defined using this type.  When
+         the specific occurrence occurred prior to the last time the
+         associated timeticks attribute was zero, then the timestamp
+         value is zero.  Note that this requires all timestamp values
+         to be reset to zero when the value of the associated timeticks
+         attribute reaches 497+ days and wraps around to zero.
+
+         The associated timeticks schema node must be specified
+         in the description of any schema node using this type.
+
+         In the value set and its semantics, this type is equivalent
+         to the TimeStamp textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of generic address types ***/
+
+     typedef phys-address {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+
+       description
+        "Represents media- or physical-level addresses represented
+         as a sequence octets, each octet represented by two hexadecimal
+         numbers.  Octets are separated by colons.  The canonical
+         representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the PhysAddress textual convention of the SMIv2.";
+       reference
+        "RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     typedef mac-address {
+       type string {
+         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
+       }
+       description
+        "The mac-address type represents an IEEE 802 MAC address.
+         The canonical representation uses lowercase characters.
+
+         In the value set and its semantics, this type is equivalent
+         to the MacAddress textual convention of the SMIv2.";
+       reference
+        "IEEE 802: IEEE Standard for Local and Metropolitan Area
+                   Networks: Overview and Architecture
+         RFC 2579: Textual Conventions for SMIv2";
+     }
+
+     /*** collection of XML-specific types ***/
+
+     typedef xpath1.0 {
+       type string;
+       description
+        "This type represents an XPATH 1.0 expression.
+
+         When a schema node is defined that uses this type, the
+         description of the schema node MUST specify the XPath
+         context in which the XPath expression is evaluated.";
+       reference
+        "XPATH: XML Path Language (XPath) Version 1.0";
+     }
+
+     /*** collection of string types ***/
+
+     typedef hex-string {
+       type string {
+         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
+       }
+
+       description
+        "A hexadecimal string with octets represented as hex digits
+         separated by colons.  The canonical representation uses
+         lowercase characters.";
+     }
+
+     typedef uuid {
+       type string {
+         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
+       }
+       description
+        "A Universally Unique IDentifier in the string representation
+         defined in RFC 4122.  The canonical representation uses
+         lowercase characters.
+
+         The following is an example of a UUID in string representation:
+         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
+         ";
+       reference
+        "RFC 4122: A Universally Unique IDentifier (UUID) URN
+                   Namespace";
+     }
+
+     typedef dotted-quad {
+       type string {
+         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])';
+       }
+       description
+         "An unsigned 32-bit number expressed in the dotted-quad
+          notation, i.e., four octets written as decimal numbers
+          and separated with the '.' (full stop) character.";
+     }
+   }
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang b/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
new file mode 100644
index 0000000..e3fecb6
--- /dev/null
+++ b/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
@@ -0,0 +1,362 @@
+module l3vpn-svc-ext {
+    yang-version 1;
+    namespace "urn:ietf:params:xml:ns:yang:l3vpn:svc:ext";
+    prefix "l3vpn-svc-ext";
+
+    import 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" {
+        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" {
+        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;
+    }
+}
\ No newline at end of file
