Changed vpnmanager directory structure
[vpnservice.git] / vpnmanager-api / src / main / yang / l3vpn.yang
diff --git a/vpnmanager-api/src/main/yang/l3vpn.yang b/vpnmanager-api/src/main/yang/l3vpn.yang
deleted file mode 100644 (file)
index 534b774..0000000
+++ /dev/null
@@ -1,887 +0,0 @@
-module l3vpn {
-  namespace "urn:huawei:params:xml:ns:yang:l3vpn";
-// replace with IANA namespace when assigned
-  prefix "l3vpn";
-
-  import bgp {
-    prefix bgp;
-    //draft-zhdankin-netmod-bgp-cfg
-  }
-  import ietf-interfaces {
-    prefix if;
-    //rfc7223-YANG Interface Management
-  }
-
-  import ietf-inet-types {
-    prefix inet;
-    //RFC6991
-  }
-
-  import ietf-yang-types {
-    prefix yang;
-    //RFC6991
-  }
-
-  description
-    "This YANG module defines the generic configuration data for L3VPN service.
-
-     Terms and Acronyms
-
-     BGP (bgp): Border Gateway Protocol
-     IPv4 (ipv4):Internet Protocol Version 4
-     IPv6 (ipv6): Internet Protocol Version 6
-
-    ";
-
-  revision 2014-08-15 {
-    description
-      "Initial revision.";
-      reference "RFC4271, RFC4364, RFC4760";
-  }
-
-  grouping augment-bgp-af-vpn-config {
-    description
-      "A set of configuration parameters that is applicable to both BGP-VPNv4
-      and BGP-VPNv6 address family.";
-
-    leaf apply-label-per-nexthop {
-      description
-        "The apply-label per-nexthop command enables the ASBR to allocate
-         labels for IPv4 VPN routes or IPv6 VPN routes based on the next hop.";
-
-
-
-      config "true";
-      type boolean;
-      default "false";
-    }
-
-    leaf upeEnable {
-      description
-        "Specify peer as UPE.";
-
-      config "true";
-      type boolean;
-      default "false";
-    }
-
-  }
-
-
-  grouping bgp-af-vpn-instance-config {
-
-    container router-id {
-      description
-        "The router-id command configures router ID for BGP VPN instance IPv4
-        or IPv6 address family.
-        By default, no router ID is configured for BGP VPN instance IPv4 or
-        IPv6 address family, and the BGP router ID is used as the router ID.";
-
-      leaf enable {
-        type boolean;
-      }
-
-      choice config-type {
-        case static {
-          leaf ip-address {
-            description
-              "Specifies the router ID of a BGP VPN instance IPv4 address
-               family. The router ID is expressed in the IPv4 address format.
-               ";
-
-            config "true";
-            type inet:ip-address;
-          }
-        }
-        case auto-select {
-          leaf enable-auto-select {
-            description
-              "Configures automatic route ID selection for the current BGP VPN
-               instance address family.";
-
-
-            config "true";
-            type boolean;
-          }
-        }
-      }
-    }
-
-    leaf auto-frr {
-      description
-        "The auto-frr command enables BGP Auto FRR.";
-
-      config "true";
-      type boolean;
-      default "false";
-    }
-
-    container bgpPeers {
-      list bgpPeer {
-      key "peerAddr";
-      max-elements "unbounded";
-      min-elements "0";
-        description
-          "BGP Peer configure class";
-
-        leaf peerAddr {
-          description
-            "The nerighbor address";
-            config "true";
-            type inet:ip-address;
-            mandatory true;
-        }
-
-          leaf groupName {
-            description "peerGroupName";
-            config "true";
-            type string {
-              length "1..47";
-            }
-          }
-          leaf remoteAs {
-            description "Specifies the AS number of the peer.";
-            config "true";
-            type string {
-              length "1..11";
-            }
-          }
-
-          leaf description {
-
-            description
-              "specifies the description. The description is a string of letters
-               or figures. The value ranges from 1 to 80 characters without
-               spaces.";
-          config "true";
-            type string {
-              length "1..80";
-              pattern "([^?]*)";
-            }
-          }
-
-          leaf soo {
-            description
-              "The peer soo command configures the Site of Origin (SoO)
-               attribute for an EBGP peer in a BGP VPN instance. Format is ASN:nn
-               or IP-address:nn.";
-
-          config "true";
-          type string {
-            length "3..21";
-          }
-        }
-
-        leaf substituteAsEnable {
-          description
-            "Using the peer substitute-as command, you can substitute the AS
-             number of the specified peer in the as-path with the local AS
-             number.";
-
-          config "true";
-          type boolean;
-            default "false";
-        }
-
-      }
-    }
-
-  }
-
-  grouping vpn-af-config {
-    description
-      "A set of configuration parameters that is applicable to both IPv4 and
-       IPv6 address family for a VPN instance .";
-
-    leaf route-distinguisher {
-      description
-        "The route-distinguisher command configures a route distinguisher (RD)
-         for the IPv4 or IPv6 address family of a VPN instance.
-
-         Format is ASN:nn or IP-address:nn.";
-
-      config "true";
-      type string {
-        length "3..21";
-      }
-    }
-
-    container vpnTargets {
-      description
-        "The vpn-target command configures the export or import VPN target
-         extended community attribute for the VPN instance IPv4/IPv6 address
-         family.
-         Format is ASN:nn or IP-address:nn.";
-
-      list vpnTarget {
-        key "vrfRTValue";
-        max-elements "unbounded";
-        min-elements "0";
-        description
-          "L3vpn vpntarget configure class";
-
-        leaf vrfRTValue {
-
-          description
-            "Vpn-target: adds VPN target extended community attribute to the
-             export or import VPN target extended community list. The
-             vpn-target can be expressed in either of the following formats:
-             (1)16-bit AS number:32-bit user-defined number
-                 For example, 1:3. The AS number ranges from 0 to 65535. The
-                 user-defined number ranges from 0 to 4294967295. The AS number
-                 and the user-defined number cannot be 0s at the same time.
-                 That is, a VPN target cannot be 0:0.
-             (2)32-bit IP address:16-bit user-defined number
-                For example, 192.168.122.15:1. The IP address ranges from
-                0.0.0.0 to 255.255.255.255. The user-defined number ranges from
-                0 to 65535.
-             (3)32-bit IP address:16-bit user-defined number
-                For example, 192.168.122.15:1. An IP address ranges from
-                0.0.0.0 to 255.255.255.255. A user-defined number ranges from 0
-                to 65535.";
-
-          config "true";
-          mandatory "true";
-          type string {
-            length "3..21";
-          }
-        }
-
-        leaf vrfRTType {
-          description
-            "Specifies the vpn target type, export-extcommunity:
-             specifies the extended community attributes carried in routing
-             information to be sent. import-extcommunity: receives routing
-             information carrying specified extended community attributes.";
-
-            mandatory "true";
-            type enumeration {
-            enum export_extcommunity {
-              value "0";
-              description "export-extcommunity:";
-            }
-            enum import_extcommunity {
-              value "1";
-              description "import-extcommunity:";
-            }
-            enum both {
-              value "2";
-              description "export-extcommunity & import-extcommunity:";
-            }
-          }
-        }
-      }
-    }
-
-    container apply-label {
-      description
-        "Apply one label mode for the VPN instance route.";
-
-      choice apply-label-mode {
-        case per-route {
-          description
-            "The apply-label per-route command enables the one-label-per-route
-             mode. The VPN instance IPv4/IPv6 address family assigns a unique
-             label to each route to be sent to the peer PE.";
-
-          leaf apply-label-per-route {
-            type boolean;
-            default "true";
-          }
-        }
-        case per-instance {
-          description
-            "The apply-label per-instance command applies one label to all VPN
-             instance IPv4 address family or IPv6 address family routes to a
-             peer PE.";
-
-        leaf apply-label-per-instance {
-            type boolean;
-            default "false";
-          }
-        }
-      }
-    }//End of "container apply-label"
-
-    leaf import-route-policy {
-      description
-        "The import route-policy command associates a VPN instance enabled
-         with the IPv4 or IPv6 address family with an import routing policy.
-         Only one import routing policy can be associated with a VPN instance
-         enabled with the IPv4 or IPv6 address family. If the import
-         route-policy command is run more than once, the latest configuration
-         overrides the previous ones.";
-
-        config "true";
-        type string {
-          length "1..40";
-        }
-    }
-
-    leaf export-route-policy {
-      description
-        "The export route-policy command associates a VPN instance enabled
-         with the IPv4 or IPv6 address family with an export routing policy.
-         Only one export routing policy can be associated with a VPN instance
-         enabled with the IPv4 or IPv6 address family. If the export
-         route-policy command is run more than once, the latest configuration
-         overrides the previous ones.";
-
-      config "true";
-      type string {
-        length "1..40";
-      }
-    }
-
-
-    container prefix-limit {
-      description
-        "The prefix limit command sets a limit on the maximum number of
-         prefixes supported in the existing VPN instance, preventing the
-         PE from importing excessive VPN route prefixes.";
-
-      leaf prefix-limit-number {
-        description
-          "Specifies the maximum number of prefixes supported in the VPN
-
-
-           instance IPv4 or IPv6 address family.";
-
-        type uint32 {
-          range "1..4294967295";
-        }
-      }
-
-      choice prefix-limit-action {
-        case enable-alert-percent {
-          leaf alert-percent-value {
-            description
-              "Specifies the proportion of the alarm threshold to the maximum
-               number of prefixes.";
-            type uint8 {
-              range "1..100";
-            }
-          }
-          leaf route-unchanged {
-            description
-              "Indicates that the routing table remains unchanged. By default,
-               route-unchanged is not configured. When the number of prefixes
-               in the routing table is greater than the value of the parameter
-               number, routes are processed as follows:
-               (1)If route-unchanged is configured, routes in the routing table
-                  remain unchanged.
-               (2)If route-unchanged is not configured, all routes in the
-                  routing table are deleted and then re-added.";
-
-            config "true";
-            type boolean;
-            default "false";
-          }
-        }
-        case enable-simple-alert {
-          leaf simple-alert {
-            description
-              "Indicates that when the number of VPN route prefixes exceeds
-               number, prefixes can still join the VPN routing table and
-               alarms are displayed.";
-
-            config "true";
-            type boolean;
-            default "false";
-          }
-        }
-      }
-    }
-
-
-
-   container routing-table-limit {
-      description
-        "The routing-table limit command sets a limit on the maximum number of
-        routes that the IPv4 or IPv6 address family of a VPN instance can
-        support.
-        By default, there is no limit on the maximum number of routes that the
-        IPv4 or IPv6 address family of a VPN instance can support, but the
-        total number of private network and public network routes on a device
-        cannot exceed the allowed maximum number of unicast routes.";
-
-      leaf routing-table-limit-number {
-        description
-          "Specifies the maximum number of routes supported by a VPN instance.
-          ";
-
-        config "true";
-        type uint32 {
-          range "1..4294967295";
-        }
-      }
-      choice routing-table-limit-action {
-        case enable-alert-percent {
-          leaf alert-percent-value {
-            description
-              "Specifies the percentage of the maximum number of routes. When
-               the maximum number of routes that join the VPN instance is up
-               to the value (number*alert-percent)/100, the system prompts
-               alarms. The VPN routes can be still added to the routing table,
-               but after the number of routes reaches number, the subsequent
-               routes are dropped.";
-
-            config "true";
-            type uint8 {
-              range "1..100";
-            }
-          }
-        }
-        case enable-simple-alert {
-          leaf simple-alert {
-            description
-              "Indicates that when VPN routes exceed number, routes can still
-               be added into the routing table, but the system prompts alarms.
-               However, after the total number of VPN routes and network public
-               routes reaches the unicast route limit specified in the License,
-               the subsequent VPN routes are dropped.";
-
-            config "true";
-            type boolean;
-           
-          }
-        }
-      }
-    }
-
-    leaf vpn-frr {
-      description
-        "Enable VPN FRR in the VPN instance address family view.
-         If a PE is connected to two other PEs, running the vpn frr command in
-         the VPN instance address family view of the PE enables VPN FRR and
-         improves network reliability. After VPN FRR is configured, traffic can
-         switch to the secondary LSP immediately after the primary LSP becomes
-         faulty.";
-
-      type boolean;
-      default "false";
-    }
-
-
-   /*
-    * VPN QoS.
-    */
-    container l3vpnVrfPipe {
-      description
-        "The diffserv-mode command configures the mode of the MPLS
-        differentiated service (Diff-Serv) for ensuring end-to-end QoS.";
-
-      leaf pipeMode {
-        description
-          "Pipe mode";
-
-    type enumeration {
-      enum pipe {
-        value "0";
-        description
-          "pipe: Indicates that the Pipe MPLS Diff-Serv mode is adopted.";
-      }
-      enum shortPipe {
-        value "1";
-        description
-          "shortPipe: Indicates that the Short-pipe MPLS Diff-Serv mode
-          is adopted.";
-      }
-      enum uniform {
-        value "2";
-        description
-          "uniform: Indicates that the Uniform MPLS Diff-Serv mode is
-          adopted.";
-   }
-    }
-    default "uniform";
-
-      }
-
-      leaf serviceClass {
-        description
-          "Service Class, Specifies the service type when the packet enters the
-          public network from the private network. The values are cs7, cs6, ef,
-          af4, af3, af2, af1, be.";
-
-          type enumeration {
-            enum be {
-              value "0";
-              description "be:";
-            }
-            enum af1 {
-              value "1";
-              description "af1:";
-            }
-            enum af2 {
-              value "2";
-              description "af2:";
-            }
-            enum af3 {
-              value "3";
-              description "af3:";
-            }
-            enum af4 {
-              value "4";
-              description "af4:";
-            }
-            enum ef {
-              value "5";
-              description "ef:";
-            }
-            enum cs6 {
-              value "6";
-              description "cs6:";
-            }
-            enum cs7 {
-              value "7";
-              description "cs7:";
-            }
-          }
-          default "be";
-      }
-
-
-      leaf color {
-        description
-          "Specifies a color for marking the discard priority of a packet
-          transferred from a private network to a public network. The values
-          are green, yellow, and red.";
-
-        type enumeration {
-          enum green {
-            value "0";
-            description "green:";
-          }
-          enum yellow {
-            value "1";
-            description "yellow:";
-          }
-          enum red {
-            value "2";
-            description "red:";
-          }
-        }
-        default "green";
-      }
-
-      leaf dsName {
-        description
-          "Specifies the DS domain name of the specified Per-Hop Behavior (PHB)
-          applied to the egress in Short pipe mode. It is a string of 1 to 31
-          characters.";
-
-        type string;
-        default "default";
-      }
-    }
-
-    container l3vpnTtlMode {
-      description
-        "The ttl-mode command enables MPLS to process the TTL in a specified
-        mode. By default, MPLS processes the TTL in pipe mode.";
-
-      leaf ttlMode {
-        description "TTL mode";
-        default "pipe";
-        type enumeration {
-          enum pipe {
-            value "0";
-            description
-              "pipe: Enables MPLS to process the TTL in pipe mode.";
-          }
-
-
-          enum uniform {
-            value "1";
-            description
-              "uniform: Enables MPLS to process the TTL in uniform mode.";
-          }
-        }
-      }
-    }
-
-    leaf tunnel-policy {
-      description
-        "The tnl-policy command associates the IPv4 or IPv6 address family of
-         a VPN instance with a tunnel policy.";
-
-      type string {
-        length "1..39";
-      }
-    }
-
-    container importRibs {
-      description
-        "Import route class";
-
-      leaf protocol {
-        description
-          "Specifies the protocol from which routes are imported.
-          At present, In the IPv4 unicast address family view, the protocol
-          can be IS-IS,static, direct and BGP.";
-
-        type enumeration {
-          enum ALL {
-            value "0";
-            description "ALL:";
-          }
-          enum Direct {
-            value "1";
-            description "Direct:";
-          }
-          enum OSPF {
-            value "2";
-            description "OSPF:";
-          }
-          enum ISIS {
-            value "3";
-            description "ISIS:";
-          }
-          enum Static {
-            value "4";
-
-
-            description "Static:";
-          }
-          enum RIP {
-            value "5";
-            description "RIP:";
-          }
-          enum BGP {
-            value "6";
-            description "BGP:";
-          }
-          enum OSPFV3 {
-            value "7";
-            description "OSPFV3:";
-          }
-          enum RIPNG {
-            value "8";
-            description "RIPNG:";
-          }
-          enum INVALID {
-            value "9";
-            description "INVALID:";
-          }
-        }
-      }
-
-      leaf processId {
-        description
-          "Specifies the process ID if the protocol from routes are imported is
-           IS-IS.";
-
-        default "0";
-        type uint32 {
-          range "0..4294967295";
-        }
-      }
-
-      leaf bgp-valid-route {
-        type boolean;
-      }
-
-      leaf policyName {
-        description
-          "Policy Id for import routes";
-        type string {
-        }
-      }
-
-    }
-
-
-    leaf traffic-statistics {
-      description
-        "The traffic-statistics enable command enables traffic statistics
-         for a VPN instance.";
-
-      type boolean;
-      default "false";
-    }
-
-  }
-
-
-  /*
-   * VPN instance view.
-   */
-  container vpn-instances {
-    description
-      "VPN instances configuration parameters.
-       VPN instances support both the IPv4 and IPv6 address families.";
-
-    list vpn-instance {
-      max-elements "unbounded";
-      min-elements "0";
-      key "vpn-instance-name";
-      description
-        "Specifies the name of the VPN instance. It is a string of 1 to 31
-         case-sensitive characters.";
-
-      leaf vpn-instance-name {
-        mandatory "true";
-        type string {
-          length "1..31";
-        }
-        description
-          "The name of the vpn-instance.";
-      }
-
-      leaf description {
-        description
-          "A textual description of VPN instance, the VPN instance description
-          helps users memorize the VPN instance.";
-
-        type string {
-          length "1..242";
-          pattern "([^?]*)";
-        }
-      }
-
-
-
-
-      container ipv4-family {
-        description
-          "The IPv4 address family is enabled for the VPN instance.";
-
-        uses vpn-af-config;
-      }
-
-      container ipv6-family {
-        description
-          "The IPv6 address family is enabled for the VPN instance.";
-
-        uses vpn-af-config;
-      }
-
-
-    }
-  }
-
-
-
-  /*
-   * Binding Interfaces to a VPN Instance.
-   */
-
-  container vpn-interfaces {
-    description
-      "VPN is enabled on interfaces.";
-
-    list vpn-interface  {
-      key "name";
-      max-elements "unbounded";
-      min-elements "0";
-      leaf name {
-        type leafref {
-          path "/if:interfaces/if:interface/if:name";
-        }
-      }
-      leaf vpn-instance-name {
-        type string {
-          length "1..40";
-        }
-      }
-    }
-  }
-
-  container vrfInfo {
-    description
-      "Display the information of the vrf.
-
-
-      It is intended that this container may be augmented by vendors to
-      reflect the vendor-specific operational state parameters.";
-
-    leaf vrfCreateTime {
-      description
-        "CreateTime of the vrf.";
-      config "false";
-      type yang:timestamp;
-    }
-
-    leaf vrfUpTime {
-      description
-        "UpTime period of the vrf.";
-      config "false";
-      type yang:timeticks;
-    }
-
-    leaf label {
-      description
-        "Label of the vrf.";
-      config "false";
-      type uint32 {
-        range "16..1048574";
-      }
-    }
-
-    leaf vrfStatus {
-      description
-        "vrf status.";
-      config "false";
-      type enumeration {
-        enum up {
-          value "0";
-          description "vrf up.";
-        }
-        enum down {
-          value "1";
-          description "vrf down.";
-        }
-      }
-    }
-  }
-
-
-  /*
-   * augment some bgp vpn functions in bgp module.
-   */
-  augment "/bgp:bgp-router/bgp:vpnv4/bgp:unicast" {
-
-    uses augment-bgp-af-vpn-config;
-
-  }
-
-  augment "/bgp:bgp-router/bgp:vpnv6/bgp:unicast" {
-    uses augment-bgp-af-vpn-config;
-
-  }
-
-  augment "/bgp:bgp-router" {
-
-    container bgp-af-ipv4-vpn-instances {
-      description
-        "vpn-instances ipv4 address family.";
-      list bgp-af-ipv4-vpn-instance {
-        key "vpn-instance-name";
-        max-elements "unbounded";
-        min-elements "0";
-        leaf vpn-instance-name {
-          type string;
-        }
-        uses bgp-af-vpn-instance-config;
-      }
-    }
-
-    container bgp-af-ipv6-vpn-instances {
-      description
-        "vpn-instances ipv6 address family.";
-      list bgp-af-ipv6-vpn-instance {
-        key "vpn-instance-name";
-        max-elements "unbounded";
-        min-elements "0";
-        leaf vpn-instance-name {
-          type string;
-        }
-        uses bgp-af-vpn-instance-config;
-      }
-    }
-
-  }
-
-
-}