Moving yang files to /models/l3vpn.
Change-Id: I09ef1d727ea638abcd7652f09d42127c9c16c79e
diff --git a/apps/l3vpn/BUCK b/apps/l3vpn/BUCK
index 3ab949f..4e6aaf3 100644
--- a/apps/l3vpn/BUCK
+++ b/apps/l3vpn/BUCK
@@ -1,19 +1,41 @@
-APPS = [
- 'org.onosproject.yang',
+COMPILE_DEPS = [
+ '//lib:CORE_DEPS',
+ '//models/l3vpn:onos-models-l3vpn',
+ '//apps/config:onos-apps-config',
+ '//core/store/serializers:onos-core-serializers',
+ '//lib:onos-yang-model',
+ '//lib:onos-yang-runtime',
+ '//apps/yang:onos-apps-yang',
]
-BUNDLES = [
- '//apps/l3vpn/yangmodel:onos-apps-l3vpn-yangmodel',
- '//apps/l3vpn/netl3vpn:onos-apps-l3vpn-netl3vpn',
+TEST_DEPS = [
+ '//lib:TEST_ADAPTERS',
+ '//utils/osgi:onlab-osgi-tests',
]
+APPS = [
+ 'org.onosproject.yang',
+ 'org.onosproject.yang-gui',
+ 'org.onosproject.config',
+ 'org.onosproject.restconf',
+ 'org.onosproject.yms',
+ 'org.onosproject.protocols.restconfserver',
+ 'org.onosproject.netconf',
+ 'org.onosproject.netconfsb',
+ 'org.onosproject.models.l3vpn',
+]
+
+osgi_jar_with_tests(
+ deps = COMPILE_DEPS,
+ test_deps = TEST_DEPS,
+)
+
onos_app(
- app_name = 'org.onosproject.l3vpn',
- title = 'YANG L3VPN App',
- category = 'Traffic Steering',
- url = 'http://onosproject.org',
- included_bundles = BUNDLES,
- description = 'L3VPN YANG Application',
- required_apps = APPS,
+ app_name = 'org.onosproject.l3vpn',
+ title = 'YANG L3VPN App',
+ category = 'Traffic Steering',
+ url = 'http://onosproject.org',
+ description = 'L3VPN YANG Application',
+ required_apps = APPS,
)
diff --git a/apps/l3vpn/netl3vpn/BUCK b/apps/l3vpn/netl3vpn/BUCK
deleted file mode 100644
index 4028606..0000000
--- a/apps/l3vpn/netl3vpn/BUCK
+++ /dev/null
@@ -1,19 +0,0 @@
-COMPILE_DEPS = [
- '//lib:CORE_DEPS',
- '//apps/l3vpn/yangmodel:onos-apps-l3vpn-yangmodel',
- '//apps/config:onos-apps-config',
- '//core/store/serializers:onos-core-serializers',
- '//lib:onos-yang-model',
- '//lib:onos-yang-runtime',
- '//apps/yang:onos-apps-yang',
-]
-
-TEST_DEPS = [
- '//lib:TEST_ADAPTERS',
- '//utils/osgi:onlab-osgi-tests',
-]
-
-osgi_jar_with_tests(
- deps = COMPILE_DEPS,
- test_deps = TEST_DEPS,
-)
diff --git a/apps/l3vpn/netl3vpn/pom.xml b/apps/l3vpn/netl3vpn/pom.xml
deleted file mode 100644
index 24f989f..0000000
--- a/apps/l3vpn/netl3vpn/pom.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?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-netl3vpn</artifactId>
- <packaging>bundle</packaging>
-
- <description>IETF L3VPN Service Model</description>
-
- <properties>
- <yang-tool-version>1.12.0-b7</yang-tool-version>
- </properties>
-
- <dependencies>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onlab-junit</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-yang-model</artifactId>
- <version>${yang-tool-version}</version>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-yang-runtime</artifactId>
- <version>${yang-tool-version}</version>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-app-l3vpn-yangmodel</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-app-config</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-app-yang</artifactId>
- <version>${project.version}</version>
- </dependency>
-
- </dependencies>
-</project>
diff --git a/apps/l3vpn/pom.xml b/apps/l3vpn/pom.xml
deleted file mode 100644
index 3bfb833..0000000
--- a/apps/l3vpn/pom.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?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-apps</artifactId>
- <version>1.10.0-SNAPSHOT</version>
- <relativePath>../pom.xml</relativePath>
- </parent>
-
- <artifactId>onos-app-l3vpn</artifactId>
- <packaging>pom</packaging>
-
- <modules>
- <module>netl3vpn</module>
- <module>yangmodel</module>
- </modules>
-
- <description>L3VPN YANG Application</description>
-</project>
-
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/AccessInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpDriverInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpModelIdLevel.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpModelIdLevel.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpModelIdLevel.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/BgpModelIdLevel.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/DeviceInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/FullMeshVpnConfig.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/HubSpokeVpnConfig.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/InterfaceInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnException.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/NetL3VpnStore.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/ProtocolInfo.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/RouteProtocol.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnConfig.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnInstance.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnSiteRole.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/VpnType.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/BgpConstructionUtil.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/DistributedNetL3VpnStore.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/InsConstructionUtil.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/IntConstructionUtil.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/L3VpnModelRegistrator.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/L3VpnModelRegistrator.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/L3VpnModelRegistrator.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/L3VpnModelRegistrator.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnManager.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/NetL3VpnUtil.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/impl/package-info.java
diff --git a/apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java b/apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
similarity index 100%
rename from apps/l3vpn/netl3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
rename to apps/l3vpn/src/main/java/org/onosproject/l3vpn/netl3vpn/package-info.java
diff --git a/apps/l3vpn/yangmodel/BUCK b/apps/l3vpn/yangmodel/BUCK
deleted file mode 100644
index 386be7b..0000000
--- a/apps/l3vpn/yangmodel/BUCK
+++ /dev/null
@@ -1,13 +0,0 @@
-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
deleted file mode 100644
index 8fd8aed..0000000
--- a/apps/l3vpn/yangmodel/pom.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?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>
-
- <properties>
- <yang-tool-version>1.12.0-b7</yang-tool-version>
- </properties>
-
- <dependencies>
-
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-yang-datamodel</artifactId>
- <version>1.11</version>
- </dependency>
-
- <dependency>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-yang-model</artifactId>
- <version>${yang-tool-version}</version>
- </dependency>
-
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.onosproject</groupId>
- <artifactId>onos-yang-compiler-maven-plugin</artifactId>
- <version>${yang-tool-version}</version>
- <executions>
- <execution>
- <goals>
- <goal>yang2java</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>add-source</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>add-source</goal>
- </goals>
- <configuration>
- <sources combine.children="append">
- <source>${project.build.directory}/generated-sources/</source>
- </sources>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- </plugins>
-
-
- </build>
-</project>
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang
deleted file mode 100644
index 276a59f..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-bgp-l3vpn@2016-09-09.yang
+++ /dev/null
@@ -1,723 +0,0 @@
-module ietf-bgp-l3vpn {
- namespace "urn:ietf:params:xml:ns:yang:ietf-bgp-l3vpn";
- // replace with IANA namespace when assigned
- prefix l3vpn ;
-
- import ietf-network-instance {
- prefix ni;
- revision-date 2016-06-23;
- }
-
- import ietf-interfaces {
- prefix if;
- }
-
-// TODO: TBD for bgp-info
-// import ietf-bgp {
-// prefix bgp;
-// revision-date 2016-06-21;
-// }
-
- organization
- "IETF BGP Enabled Services WG";
-
- contact
- "BESS working group - bess@ietf.org";
- description
- "This YANG module defines a YANG data model to configure and
- manage BGP Layer3 VPNs. It augments the IETF bgp yang model
- and IETF network instance model to add L3VPN specific
- configuration and operational knobs.
-
-
- Terms and Acronyms
-
- AF : Address Family
-
- AS : Autonomous System
-
- ASBR : Autonomous Systems Border Router
-
- BGP (bgp) : Border Gateway Protocol
-
- CE : Customer Edge
-
- IP (ip) : Internet Protocol
-
- IPv4 (ipv4):Internet Protocol Version 4
-
- IPv6 (ipv6): Internet Protocol Version 6
-
- L3VPN: Layer 3 VPN
-
- PE : Provider Edge
-
- RT : Route Target
-
- RD : Route Distinguisher
-
- VPN : Virtual Private Network
-
- VRF : Virtual Routing and Forwarding
-
- ";
-
- revision 2016-09-09 {
- description
- "Initial revision.";
- reference
- "RFC XXXX: A YANG Data Model for BGP L3VPN config management";
- }
-
- //RD
- grouping route-distinguisher-params {
- description "BGP route distinguisher";
- container route-distinguisher {
- description "Route distinguisher value as per RFC4364";
- container config {
- description
- "Configuration parameters for route distinguisher";
- leaf rd {
- type string;
- description "Route distinguisher value as per RFC4364";
- }
- }
- container state {
- config "false" ;
- description
- "State information for route distinguisher";
- leaf rd {
- type string;
- description "Route distinguisher value";
- }
- }
- }
- }
-
- //Label mode
- typedef bgp-label-mode {
- type enumeration {
- enum per-ce {
- description "Allocate labels per CE";
- }
- enum per-route {
- description "Allocate labels per prefix";
- }
- enum per-vpn {
- description "Allocate labels per VRF";
- }
- }
- description "BGP label allocation mode";
- }
-
- //Fwding mode
- typedef fwd-mode-type {
- type enumeration {
- enum mpls {
- description "Forwarding mode mpls";
- }
- }
- description
- "Enable forwarding mode under ASBR facing interface";
- }
-
- grouping forwarding-mode {
- description "Forwarding mode of interface for ASBR scenario";
- container forwarding-mode {
- description "Forwarding mode of interface for ASBR scenario";
- container config {
- description "Configuration of Forwarding mode";
- leaf forwarding-mode {
- type fwd-mode-type;
- description "Forwarding mode for this interface";
- }
- }
- container state {
- config "false";
- description "State information of Forwarding mode";
- leaf forwarding-mode {
- type fwd-mode-type;
- description "Forwarding mode for this interface";
- }
- }
- }
- }
-
- grouping label-security {
- description "Mpls label security for ASBR option B scenario";
- container mpls-label-security {
- description "MPLS label secruity";
- container config {
- description "Configuration parameters";
- leaf rpf {
- type boolean;
- description "Enable MPLS label security rpf on interface";
- }
- }
- container state {
- config "false";
- description "State information";
- leaf rpf {
- type boolean;
- description "MPLS label security rpf on interface";
- }
- }
- }
- }
-
-
- //per VPN instance table limit under BGP
- grouping 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 {
- type uint32 {
- range "1..4294967295";
- }
- description
- "Specifies the maximum number of prefixes supported in the
- VPN instance IPv4 or IPv6 address family.";
- }
-
- choice prefix-limit-action {
- description ".";
- case enable-alert-percent {
- leaf alert-percent-value {
- type uint8 {
- range "1..100";
- }
- description
- "Specifies the proportion of the alarm threshold to the
- maximum number of prefixes.";
- }
- leaf route-unchanged {
- type boolean;
- default "false";
- 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.";
- }
- }
- case enable-simple-alert {
- leaf simple-alert {
- type boolean;
- default "false";
- description
- "Indicates that when the number of VPN route prefixes
- exceeds number, prefixes can still join the VPN
- routing table and alarms are displayed.";
- }
- }
- }
- }
-
- grouping vpn-pfx-limit {
- description "Per VPN instance table limit under BGP";
- container vpn-prefix-limit {
- description "Prefix limit for this table";
- container config {
- description "Config parameters";
- uses prefix-limit;
- }
- container state {
- config "false";
- description "State parameters";
- uses prefix-limit;
- }
- }
- }
-
- grouping route-target-set {
- description
- "Extended community route-target set ";
- list rts {
- key "rt" ;
- description
- "List of route-targets" ;
- leaf rt {
- type string {
- pattern '([0-9]+:[0-9]+)';
- }
- description "Route target extended community as per RFC4360";
- }
- leaf rt-type {
- type enumeration {
- enum import {
- description "Route target is for import routes";
- }
- enum export {
- description "Route target is for export routes";
- }
- enum both {
- description
- "Route target is for both import and export routes";
- }
- }
- description "Route target type";
- }
- }
- leaf route-policy {
- type string;
- description
- "Reference to the policy containing set of routes.
- TBD: leafref to policy entry in IETF policy model";
- }
- }
-
- grouping import-from-gbl {
- description "Import from global routing table";
- leaf enable {
- type boolean;
- description "Enable";
- }
- leaf advertise-as-vpn {
- type boolean;
- description
- "Advertise routes imported from global table as VPN routes";
- }
- leaf route-policy {
- type string;
- description "Route policy as filter for importing routes";
- }
-
- leaf bgp-valid-route {
- type boolean;
- description
- "Enable all valid routes (including non-best paths) to be
- candidate for import";
- }
-
- leaf protocol {
- 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:";
- }
- }
- 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.";
- }
-
- leaf instance {
- type string;
- description
- "Specifies the instance id of the protocol";
- }
- }
- grouping global-imports {
- description "Grouping for imports from global routing table";
- container import-from-global {
- description "Import from global routing table";
- container config {
- description "Configuration";
- uses import-from-gbl;
- }
- container state {
- config "false";
- description "State";
- uses import-from-gbl;
- }
- }
- }
-
-
- grouping export-to-gbl {
- description "Export routes to default VRF";
- leaf enable {
- type boolean;
- description "Enable";
- }
- }
-
- grouping global-exports {
- description "Grouping for exports routes to global table";
- container export-to-global {
- description "Export to global routing table";
- container config {
- description "Configuration";
- uses export-to-gbl;
- }
- container state {
- config "false";
- description "State";
- uses export-to-gbl;
- }
- }
- }
-
- grouping route-target-params {
- description "Grouping to specify rules for route import and export";
- container route-targets {
- description
- "Set of route-targets to match for import and export routes
- to/from VRF";
- container config {
- description
- "Configuration of route targets";
- uses route-target-set ;
- }
- container state {
- config "false" ;
- description
- "State information for route targets";
- uses route-target-set ;
- }
- }
- }
-
- grouping route-tbl-limit-params {
- description "Grouping for VPN table prefix limit config";
- leaf routing-table-limit-number {
- type uint32 {
- range "1..4294967295";
- }
- description
- "Specifies the maximum number of routes supported by a
- VPN instance. ";
- }
-
- choice routing-table-limit-action {
- description ".";
- case enable-alert-percent {
- leaf alert-percent-value {
- type uint8 {
- range "1..100";
- }
- 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.";
- }
- }
- case enable-simple-alert {
- leaf simple-alert {
- type boolean;
- 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.";
- }
- }
- }
- }
-
- grouping routing-tbl-limit {
- description ".";
- 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.";
- container config {
- description "Config parameters";
- uses route-tbl-limit-params;
- }
- container state {
- config "false";
- description "State parameters";
- uses route-tbl-limit-params;
- }
- }
- }
-
- // Tunnel policy parameters
- grouping tunnel-params {
- description "Tunnel parameters";
- container tunnel-params {
- description "Tunnel config parameters";
- container config {
- description "configuration parameters";
- leaf tunnel-policy {
- type string;
- description
- "Tunnel policy name.";
- }
- }
- container state {
- config "false";
- description "state parameters";
- leaf tunnel-policy {
- type string;
- description
- "Tunnel policy name.";
- }
- }
- }
- }
-
- // Grouping for the L3vpn specific parameters under VRF
- // (network-instance)
- grouping l3vpn-vrf-params {
- description "Specify route filtering rules for import/export";
- container ipv4 {
- description
- "Specify route filtering rules for import/export";
- container unicast {
- description
- "Specify route filtering rules for import/export";
- uses route-target-params;
- uses global-imports;
- uses global-exports;
- uses routing-tbl-limit;
- uses tunnel-params;
- }
- }
- container ipv6 {
- description
- "Ipv6 address family specific rules for import/export";
- container unicast {
- description "Ipv6 unicast address family";
- uses route-target-params;
- uses global-imports;
- uses global-exports;
- uses routing-tbl-limit;
- uses tunnel-params;
- }
- }
- }
-
- grouping bgp-label-mode {
- description "MPLS/VPN label allocation mode";
- container config {
- description
- "Configuration parameters for label allocation mode";
- leaf label-mode {
- type bgp-label-mode;
- description "Label allocation mode";
- }
- }
- container state {
- config "false" ;
- description "State information for label allocation mode";
- leaf label-mode {
- type bgp-label-mode;
- description "Label allocation mode";
- }
- }
- }
-
- grouping retain-route-targets {
- description "Grouping for route target accept";
- container retain-route-targets {
- description "Control route target acceptance behavior for ASBRs";
- container config {
- description
- "Configuration parameters for retaining route targets";
- leaf all {
- type empty;
- description "Disable filtering of all route-targets";
- }
- leaf route-policy {
- type string;
- description "Filter routes as per filter policy name
- TBD: leafref to IETF routing policy model";
- }
- }
- container state {
- config "false" ;
- description "State information for retaining route targets";
- leaf all {
- type empty;
- description "Disable filtering of all route-targets";
- }
- leaf route-policy {
- type string;
- description "Filter routes as per filter policy name";
- }
- }
- }
- }
-
- grouping nexthop-opts {
- description "Next hop control options for inter-as route exchange";
- leaf next-hop-self {
- type boolean;
- description
- "Set nexthop of the route to self when advertising routes";
- }
- leaf next-hop-unchanged {
- type boolean;
- description "Enforce no nexthop change when advertising routes";
- }
- }
-
- grouping asbr-nexthop-options {
- description "Nexthop parameters for inter-as VPN options ";
- container nexthop-options {
- description "Nexthop related options for inter-as options";
- container config {
- description "Configuration parameters for nexthop options";
- uses nexthop-opts;
- }
- container state {
- config "false";
- description "State information for nexthop options" ;
- uses nexthop-opts;
- }
- }
- }
-
- //
- // VRF specific parameters.
- // RD and RTs and route import-export rules are added under
- // network instance container in network instance model, hence
- // per VRF scoped
- augment "/ni:devices/ni:device/ni:network-instances/ni:network-instance" {
- description
- "Augment network instance for per VRF L3vpn parameters";
- container l3vpn {
- //Enable this check once network instance model has
- //identify defined for VRF type
- //when "../type='rt:vrf-network-instance'" {
- // description
- // "This container is only valid for vrf routing instance.";
- //}
- description "Configuration of L3VPN specific parameters";
-
- uses route-distinguisher-params;
- uses l3vpn-vrf-params ;
- }
- }
-
- // bgp mpls forwarding enable required for inter-as option AB.
- augment "/if:devices/if:device/if:interfaces/if:interface" {
- description
- "BGP mpls forwarding mode configuration on interface for
- ASBR scenario";
- uses forwarding-mode ;
- uses label-security;
- }
-
- //
- // BGP Specific Paramters
- //
-
- //
- // Retain route-target for inter-as option ASBR knob.
- // vpn prefix limits
- // vpnv4/vpnv6 address-family only.
- //augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
- // "bgp:afi-safi/bgp:l3vpn-ipv4-unicast" {
- // description "Retain route targets for ASBR scenario";
- // uses retain-route-targets;
- // uses vpn-pfx-limit;
- // }
-
- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
- // "bgp:afi-safi/bgp:l3vpn-ipv6-unicast" {
- // description "Retain route targets for ASBR scenario";
- // uses retain-route-targets;
- // uses vpn-pfx-limit;
- // }
-
- // Label allocation mode configuration. Certain AFs only.
- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
- // "bgp:afi-safi/bgp:ipv4-unicast" {
- // description
- // "Augment BGP global AF mode for label allocation mode
- // configuration";
- // uses bgp-label-mode ;
- // uses routing-tbl-limit;
- // }
-
- // augment "/bgp:bgp/bgp:global/bgp:afi-safis/" +
- // "bgp:afi-safi/bgp:ipv6-unicast" {
- // description
- // "Augment BGP global AF mode for label allocation mode
- // configuration";
- // uses bgp-label-mode ;
- // uses routing-tbl-limit;
- // }
-
-
- // Nexthop options for the inter-as ASBR peering.
- // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor" {
- // description
- // "Augment BGP NBR mode with nexthop options for inter-as ASBRs";
- // uses asbr-nexthop-options;
- // }
-
- // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group" {
- // description
- // "Augment BGP peer-group mode with nexthop options for inter-as
- // ASBRs";
- // uses asbr-nexthop-options;
- // }
-
- // augment "/bgp:bgp/bgp:neighbors/bgp:neighbor/" +
- // "bgp:afi-safis/bgp:afi-safi" {
- // description
- // "Augment BGP NBR AF mode with nexthop options for inter-as
- // ASBRs";
- // uses asbr-nexthop-options;
- // }
-
- // augment "/bgp:bgp/bgp:peer-groups/bgp:peer-group/" +
- // "bgp:afi-safis/bgp:afi-safi" {
- // description
- // "Augment BGP peer-group AF mode with nexthop options for inter-as
- // ASBRs";
- // uses asbr-nexthop-options;
- // }
-}
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
deleted file mode 100755
index 51a44a3..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-inet-types.yang
+++ /dev/null
@@ -1,454 +0,0 @@
- 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-interfaces@2014-05-08.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-interfaces@2014-05-08.yang
deleted file mode 100644
index 2171a5a..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-interfaces@2014-05-08.yang
+++ /dev/null
@@ -1,704 +0,0 @@
-module ietf-interfaces {
-
- namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
- prefix if;
-
- import 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: Thomas Nadeau
- <mailto:tnadeau@lucidvision.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Martin Bjorklund
- <mailto:mbj@tail-f.com>";
-
- description
- "This module contains a collection of YANG definitions for
- managing network interfaces.
-
- Copyright (c) 2014 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 7223; see
- the RFC itself for full legal notices.";
- revision 2014-05-08 {
- description
- "Initial revision.";
- reference
- "RFC 7223: A YANG Data Model for Interface Management";
- }
-
- /*
- * Typedefs
- */
-
- typedef interface-ref {
- type leafref {
- path "/if:devices/if:device/if:interfaces/if:interface/if:name";
- }
- description
- "This type is used by data models that need to reference
- configured interfaces.";
- }
-
- typedef interface-state-ref {
- type leafref {
- path "/if:devices/if:device/if:interfaces-state/if:interface/if:name";
- }
- description
- "This type is used by data models that need to reference
- the operationally present interfaces.";
- }
-
- /*
- * Identities
- */
-
- identity interface-type {
- description
- "Base identity from which specific interface types are
- derived.";
- }
-
- /*
- * Features
- */
-
- feature arbitrary-names {
- description
- "This feature indicates that the device allows user-controlled
- interfaces to be named arbitrarily.";
- }
- feature pre-provisioning {
- description
- "This feature indicates that the device supports
- pre-provisioning of interface configuration, i.e., it is
- possible to configure an interface whose physical interface
- hardware is not present on the device.";
- }
-
- feature if-mib {
- description
- "This feature indicates that the device implements
- the IF-MIB.";
- reference
- "RFC 2863: The Interfaces Group MIB";
- }
-
- /*
- * Configuration data nodes
- */
- container devices {
- list device {
- key deviceid;
- leaf deviceid {
- type string;
- }
- container interfaces {
- description
- "Interface configuration parameters.";
-
- list interface {
- key "name";
-
- description
- "The list of configured interfaces on the device.
- The operational state of an interface is available
- in the /interfaces-state/interface list. If the
- configuration of a system-controlled interface
- cannot be used by the system (e.g., the interface
- hardware present does not match the interface type),
- then the configuration is not applied to the
- system-controlled interface shown in the of a
- /interfaces-state/interface list. If the configuration
- user-controlled interface cannot be used by the system,
- the configured interface is not instantiated in the
- /interfaces-state/interface list.";
-
- leaf name {
- type string;
- description
- "The name of the interface.
-
- A device MAY restrict the allowed values for
- this leaf, possibly depending on the type of the
- interface. For system-controlled interfaces,
- this leaf is the device-specific name of the
- interface. The 'config false' list
- /interfaces-state/interface contains the
- currently existing interfaces on the device.
-
- If a client tries to create configuration for a
- system-controlled interface that is not present
- in the /interfaces-state/interface list, the
- server MAY reject the request if the
- implementation does not support pre-provisioning
- of interfaces or if the name refers to an
- interface that can never exist in the system. A
- NETCONF server MUST reply with an rpc-error with
- the error-tag 'invalid-value' in this case.
-
- If the device supports pre-provisioning of
- interface configuration, the 'pre-provisioning'
- feature is advertised.
-
- If the device allows arbitrarily named
- user-controlled interfaces, the
- 'arbitrary-names' feature is advertised.
-
- When a configured user-controlled interface is
- created by the system, it is instantiated with
- the same name in the /interface-state/interface
- list.";
- }
-
- leaf description {
- type string;
- description
- "A textual description of the interface.
-
- A server implementation MAY map this leaf to the
- ifAlias MIB object. Such an implementation
- needs touse some mechanism to handle the
- differences in sizeand characters allowed
- between this leaf and ifAlias.The definition of
- such a mechanism is outside the scope of this
- document.
-
- Since ifAlias is defined to be stored in
- non-volatile storage, the MIB implementation
- MUST map ifAlias to the value of 'description'
- in the persistently stored datastore.
-
- Specifically, if the device supports ':startup',
- when ifAlias is read the device MUST return the
- value of 'description' in the 'startup'
- datastore, and when it is written, it MUST be
- written to the 'running' and 'startup'
- datastores. Note that it is up to the
- implementation to decide whether to modify this
- single leaf in 'startup' or perform an implicit
- copy-config from 'running' to 'startup'.
-
- If the device does not support ':startup',
- ifAlias MUST be mapped to the 'description' leaf
- in the 'running' datastore.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAlias";
- }
-
- leaf type {
- type identityref {
- base interface-type;
- }
- mandatory true;
- description
- "The type of the interface.
-
- When an interface entry is created, a server MAY
- initialize the type leaf with a valid value, e.g.,
- if it is possible to derive the type from the name
- of the interface.
-
- If a client tries to set the type of an
- interface to a value that can never be used by
- the system, e.g., if the type is not supported
- or if the type does not match the name of the
- interface, the server MUST reject the request. A
- NETCONF server MUST reply with an rpc-error with
- the error-tag 'invalid-value' in this case.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifType";
- }
-
- leaf enabled {
- type boolean;
- default "true";
- description
- "This leaf contains the configured, desired state
- of the interface.
-
- Systems that implement the IF-MIB use the value
- of this leaf in the 'running' datastore to set
- IF-MIB.ifAdminStatus to 'up' or 'down' after an
- ifEntry has been initialized, as described in
- RFC 2863. Changes in this leaf in the 'running'
- datastore are reflected in ifAdminStatus, but if
- ifAdminStatus is changed over SNMP, this leaf is
- not affected.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifAdminStatus";
- }
-
- leaf link-up-down-trap-enable {
- if-feature if-mib;
- type enumeration {
- enum enabled {
- value 1;
- }
- enum disabled {
- value 2;
- }
- }
- description
- "Controls whether linkUp/linkDown SNMP
- notifications should be generated for this
- interface.
-
- If this node is not configured, the value 'enabled'
- is operationally used by the server for
- interfaces that do not operate on top of any
- other interface (i.e., there are no
- 'lower-layer-if' entries), and 'disabled'
- otherwise.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifLinkUpDownTrapEnable";
- }
- }
- }
- /*
- * Operational state data nodes
- */
-
- container interfaces-state {
- config false;
- description
- "Data nodes for the operational state of interfaces.";
-
- list interface {
- key "name";
- description
- "The list of interfaces on the device.
-
- System-controlled interfaces created by the system are
- always present in this list, whether they are configured or
- not.";
-
- leaf name {
- type string;
- description
- "The name of the interface.
-
- A server implementation MAY map this leaf to the ifName
- MIB object. Such an implementation needs to use some
- mechanism to handle the differences in size and characters
- allowed between this leaf and ifName. The definition of
- such a mechanism is outside the scope of this document.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifName";
- }
-
- leaf type {
- type identityref {
- base interface-type;
- }
- mandatory true;
- description
- "The type of the interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifType";
- }
-
- leaf admin-status {
- if-feature if-mib;
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
- description
- "Not ready to pass packets and not in some test mode.";
- }
- enum testing {
- value 3;
- description
- "In some test mode.";
- }
- }
- mandatory true;
- description
- "The desired state of the interface.
-
- This leaf has the same read semantics as ifAdminStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifAdminStatus";
- }
-
- leaf oper-status {
- type enumeration {
- enum up {
- value 1;
- description
- "Ready to pass packets.";
- }
- enum down {
- value 2;
- description
- "The interface does not pass any packets.";
- }
- enum testing {
- value 3;
- description
- "In some test mode. No operational packets can
- be passed.";
- }
- enum unknown {
- value 4;
- description
- "Status cannot be determined for some reason.";
- }
- enum dormant {
- value 5;
- description
- "Waiting for some external event.";
- }
- enum not-present {
- value 6;
- description
- "Some component (typically hardware) is missing.";
- }
- enum lower-layer-down {
- value 7;
- description
- "Down due to state of lower-layer interface(s).";
- }
- }
- mandatory true;
- description
- "The current operational state of the interface.
-
- This leaf has the same semantics as ifOperStatus.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOperStatus";
- }
-
- leaf last-change {
- type yang:date-and-time;
- description
- "The time the interface entered its current operational
- state. If the current state was entered prior to the
- last re-initialization of the local network management
- subsystem, then this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifLastChange";
- }
-
- leaf if-index {
- if-feature if-mib;
- type int32 {
- range "1..2147483647";
- }
- mandatory true;
- description
- "The ifIndex value for the ifEntry represented by this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifIndex";
- }
-
- leaf phys-address {
- type yang:phys-address;
- description
- "The interface's address at its protocol sub-layer. For
- example, for an 802.x interface, this object normally
- contains a Media Access Control (MAC) address. The
- interface's media-specific modules must define the bit
-
- and byte ordering and the format of the value of this
- object. For interfaces that do not have such an address
- (e.g., a serial line), this node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifPhysAddress";
- }
-
- leaf-list higher-layer-if {
- type interface-state-ref;
- description
- "A list of references to interfaces layered on top of this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf-list lower-layer-if {
- type interface-state-ref;
- description
- "A list of references to interfaces layered underneath this
- interface.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifStackTable";
- }
-
- leaf speed {
- type yang:gauge64;
- units "bits/second";
- description
- "An estimate of the interface's current bandwidth in bits
- per second. For interfaces that do not vary in
- bandwidth or for those where no accurate estimation can
- be made, this node should contain the nominal bandwidth.
- For interfaces that have no concept of bandwidth, this
- node is not present.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifSpeed, ifHighSpeed";
- }
- container statistics {
- description
- "A collection of interface-related statistics objects.";
-
- leaf discontinuity-time {
- type yang:date-and-time;
- mandatory true;
- description
- "The time on the most recent occasion at which any one or
- more of this interface's counters suffered a
- discontinuity. If no such discontinuities have occurred
- since the last re-initialization of the local management
- subsystem, then this node contains the time the local
- management subsystem re-initialized itself.";
- }
-
- leaf in-octets {
- type yang:counter64;
- description
- "The total number of octets received on the interface,
- including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInOctets";
- }
-
- leaf in-unicast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were not addressed to a
- multicast or broadcast address at this sub-layer.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
- }
- leaf in-broadcast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a broadcast
- address at this sub-layer.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInBroadcastPkts";
- }
-
- leaf in-multicast-pkts {
- type yang:counter64;
- description
- "The number of packets, delivered by this sub-layer to a
- higher (sub-)layer, that were addressed to a multicast
- address at this sub-layer. For a MAC-layer protocol,
- this includes both Group and Functional addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCInMulticastPkts";
- }
-
- leaf in-discards {
- type yang:counter32;
- description
- "The number of inbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being deliverable to a higher-layer
- protocol. One possible reason for discarding such a
- packet could be to free up buffer space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInDiscards";
- }
-
- leaf in-errors {
- type yang:counter32;
- description
- "For packet-oriented interfaces, the number of inbound
- packets that contained errors preventing them from being
- deliverable to a higher-layer protocol. For character-
- oriented or fixed-length interfaces, the number of
- inbound transmission units that contained errors
- preventing them from being deliverable to a higher-layer
- protocol.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInErrors";
- }
-
- leaf in-unknown-protos {
- type yang:counter32;
- description
- "For packet-oriented interfaces, the number of packets
- received via the interface that were discarded because
- of an unknown or unsupported protocol. For
- character-oriented or fixed-length interfaces that
- support protocol multiplexing, the number of
- transmission units received via the interface that were
- discarded because of an unknown or unsupported protocol.
- For any interface that does not support protocol
- multiplexing, this counter is not present.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
- }
- leaf out-octets {
- type yang:counter64;
- description
- "The total number of octets transmitted out of the
- interface, including framing characters.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
- }
-
- leaf out-unicast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted, and that were not addressed
- to a multicast or broadcast address at this sub-layer,
- including those that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
- }
-
- leaf out-broadcast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted, and that were addressed to a
- broadcast address at this sub-layer, including those
- that were discarded or not sent.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutBroadcastPkts";
- }
- leaf out-multicast-pkts {
- type yang:counter64;
- description
- "The total number of packets that higher-level protocols
- requested be transmitted, and that were addressed to a
- multicast address at this sub-layer, including those
- that were discarded or not sent. For a MAC-layer
- protocol, this includes both Group and Functional
- addresses.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB -
- ifHCOutMulticastPkts";
- }
-
- leaf out-discards {
- type yang:counter32;
- description
- "The number of outbound packets that were chosen to be
- discarded even though no errors had been detected to
- prevent their being transmitted. One possible reason
- for discarding such a packet could be to free up buffer
- space.
-
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutDiscards";
- }
-
- leaf out-errors {
- type yang:counter32;
- description
- "For packet-oriented interfaces, the number of outbound
- packets that could not be transmitted because of errors.
- For character-oriented or fixed-length interfaces, the
- number of outbound transmission units that could not be
- transmitted because of errors.
- Discontinuities in the value of this counter can occur
- at re-initialization of the management system, and at
- other times as indicated by the value of
- 'discontinuity-time'.";
- reference
- "RFC 2863: The Interfaces Group MIB - ifOutErrors";
- }
- }
- }
- }
- }
- }
- }
\ No newline at end of file
diff --git a/apps/l3vpn/yangmodel/src/main/yang/ietf-ip@2014-06-16.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-ip@2014-06-16.yang
deleted file mode 100644
index 0446258..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-ip@2014-06-16.yang
+++ /dev/null
@@ -1,740 +0,0 @@
-module ietf-ip {
-
- yang-version 1;
-
- namespace
- "urn:ietf:params:xml:ns:yang:ietf-ip";
-
- prefix ip;
-
- import ietf-interfaces {
- prefix if;
- }
- import ietf-inet-types {
- prefix inet;
- }
- import 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: Thomas Nadeau
- <mailto:tnadeau@lucidvision.com>
-
- WG Chair: Juergen Schoenwaelder
- <mailto:j.schoenwaelder@jacobs-university.de>
-
- Editor: Martin Bjorklund
- <mailto:mbj@tail-f.com>";
-
- description
- "This module contains a collection of YANG definitions for
- configuring IP implementations.
-
- Copyright (c) 2014 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 7277; see
- the RFC itself for full legal notices.";
-
- revision "2014-06-16" {
- description "Initial revision.";
- reference
- "RFC 7277: A YANG Data Model for IP Management";
-
- }
-
- feature ipv4-non-contiguous-netmasks {
- description
- "Indicates support for configuring non-contiguous
- subnet masks.";
- }
-
- feature ipv6-privacy-autoconf {
- description
- "Indicates support for Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6.";
- reference
- "RFC 4941: Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6";
- }
-
- typedef ip-address-origin {
- type enumeration {
- enum "other" {
- value 0;
- description
- "None of the following.";
- }
- enum "static" {
- value 1;
- description
- "Indicates that the address has been statically
- configured - for example, using NETCONF or a Command Line
- Interface.";
- }
- enum "dhcp" {
- value 2;
- description
- "Indicates an address that has been assigned to this
- system by a DHCP server.";
- }
- enum "link-layer" {
- value 3;
- description
- "Indicates an address created by IPv6 stateless
- autoconfiguration that embeds a link-layer address in its
- interface identifier.";
- }
- enum "random" {
- value 4;
- description
- "Indicates an address chosen by the system at
-
- random, e.g., an IPv4 address within 169.254/16, an
- RFC 4941 temporary address, or an RFC 7217 semantically
- opaque address.";
- reference
- "RFC 4941: Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6
- RFC 7217: A Method for Generating Semantically Opaque
- Interface Identifiers with IPv6 Stateless
- Address Autoconfiguration (SLAAC)";
- }
- }
- description
- "The origin of an address.";
- }
-
- typedef neighbor-origin {
- type enumeration {
- enum "other" {
- value 0;
- description
- "None of the following.";
- }
- enum "static" {
- value 1;
- description
- "Indicates that the mapping has been statically
- configured - for example, using NETCONF or a Command Line
- Interface.";
- }
- enum "dynamic" {
- value 2;
- description
- "Indicates that the mapping has been dynamically resolved
- using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery
- protocol.";
- }
- }
- description
- "The origin of a neighbor entry.";
- }
-
- augment /if:devices/if:device/if:interfaces/if:interface {
- description
- "Parameters for configuring IP on interfaces.
-
- If an interface is not capable of running IP, the server
- must not allow the client to configure these parameters.";
- container ipv4 {
- presence
- "Enables IPv4 unless the 'enabled' leaf
- (which defaults to 'true') is set to 'false'";
- description
- "Parameters for the IPv4 address family.";
- leaf enabled {
- type boolean;
- default true;
- description
- "Controls whether IPv4 is enabled or disabled on this
- interface. When IPv4 is enabled, this interface is
- connected to an IPv4 stack, and the interface can send
- and receive IPv4 packets.";
- }
-
- leaf forwarding {
- type boolean;
- default false;
- description
- "Controls IPv4 packet forwarding of datagrams received by,
- but not addressed to, this interface. IPv4 routers
- forward datagrams. IPv4 hosts do not (except those
- source-routed via the host).";
- }
-
- leaf mtu {
- type uint16 {
- range "68..max";
- }
- units "octets";
- description
- "The size, in octets, of the largest IPv4 packet that the
- interface will send and receive.
-
- The server may restrict the allowed values for this leaf,
- depending on the interface's type.
-
- If this leaf is not configured, the operationally used MTU
- depends on the interface's type.";
- reference
- "RFC 791: Internet Protocol";
-
- }
-
- list address {
- key "ip";
- description
- "The list of configured IPv4 addresses on the interface.";
- leaf ip {
- type inet:ipv4-address-no-zone;
- description
- "The IPv4 address on the interface.";
- }
-
- choice subnet {
- mandatory true;
- description
- "The subnet can be specified as a prefix-length, or,
- if the server supports non-contiguous netmasks, as
- a netmask.";
- leaf prefix-length {
- type uint8 {
- range "0..32";
- }
- description
- "The length of the subnet prefix.";
- }
- leaf netmask {
- if-feature ipv4-non-contiguous-netmasks;
- type yang:dotted-quad;
- description
- "The subnet specified as a netmask.";
- }
- } // choice subnet
- } // list address
-
- list neighbor {
- key "ip";
- description
- "A list of mappings from IPv4 addresses to
- link-layer addresses.
-
- Entries in this list are used as static entries in the
- ARP Cache.";
- reference
- "RFC 826: An Ethernet Address Resolution Protocol";
-
- leaf ip {
- type inet:ipv4-address-no-zone;
- description
- "The IPv4 address of the neighbor node.";
- }
-
- leaf link-layer-address {
- type yang:phys-address;
- mandatory true;
- description
- "The link-layer address of the neighbor node.";
- }
- } // list neighbor
- } // container ipv4
-
- container ipv6 {
- presence
- "Enables IPv6 unless the 'enabled' leaf
- (which defaults to 'true') is set to 'false'";
- description
- "Parameters for the IPv6 address family.";
- leaf enabled {
- type boolean;
- default true;
- description
- "Controls whether IPv6 is enabled or disabled on this
- interface. When IPv6 is enabled, this interface is
- connected to an IPv6 stack, and the interface can send
- and receive IPv6 packets.";
- }
-
- leaf forwarding {
- type boolean;
- default false;
- description
- "Controls IPv6 packet forwarding of datagrams received by,
- but not addressed to, this interface. IPv6 routers
- forward datagrams. IPv6 hosts do not (except those
- source-routed via the host).";
- reference
- "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
- Section 6.2.1, IsRouter";
-
- }
-
- leaf mtu {
- type uint32 {
- range "1280..max";
- }
- units "octets";
- description
- "The size, in octets, of the largest IPv6 packet that the
- interface will send and receive.
-
- The server may restrict the allowed values for this leaf,
- depending on the interface's type.
-
- If this leaf is not configured, the operationally used MTU
- depends on the interface's type.";
- reference
- "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- Section 5";
-
- }
-
- list address {
- key "ip";
- description
- "The list of configured IPv6 addresses on the interface.";
- leaf ip {
- type inet:ipv6-address-no-zone;
- description
- "The IPv6 address on the interface.";
- }
-
- leaf prefix-length {
- type uint8 {
- range "0..128";
- }
- mandatory true;
- description
- "The length of the subnet prefix.";
- }
- } // list address
-
- list neighbor {
- key "ip";
- description
- "A list of mappings from IPv6 addresses to
- link-layer addresses.
-
- Entries in this list are used as static entries in the
- Neighbor Cache.";
- reference
- "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
-
- leaf ip {
- type inet:ipv6-address-no-zone;
- description
- "The IPv6 address of the neighbor node.";
- }
-
- leaf link-layer-address {
- type yang:phys-address;
- mandatory true;
- description
- "The link-layer address of the neighbor node.";
- }
- } // list neighbor
-
- leaf dup-addr-detect-transmits {
- type uint32;
- default 1;
- description
- "The number of consecutive Neighbor Solicitation messages
- sent while performing Duplicate Address Detection on a
- tentative address. A value of zero indicates that
- Duplicate Address Detection is not performed on
- tentative addresses. A value of one indicates a single
- transmission with no follow-up retransmissions.";
- reference
- "RFC 4862: IPv6 Stateless Address Autoconfiguration";
-
- }
-
- container autoconf {
- description
- "Parameters to control the autoconfiguration of IPv6
- addresses, as described in RFC 4862.";
- reference
- "RFC 4862: IPv6 Stateless Address Autoconfiguration";
-
- leaf create-global-addresses {
- type boolean;
- default true;
- description
- "If enabled, the host creates global addresses as
- described in RFC 4862.";
- reference
- "RFC 4862: IPv6 Stateless Address Autoconfiguration
- Section 5.5";
-
- }
-
- leaf create-temporary-addresses {
- if-feature ipv6-privacy-autoconf;
- type boolean;
- default false;
- description
- "If enabled, the host creates temporary addresses as
- described in RFC 4941.";
- reference
- "RFC 4941: Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6";
-
- }
-
- leaf temporary-valid-lifetime {
- if-feature ipv6-privacy-autoconf;
- type uint32;
- units "seconds";
- default 604800;
- description
- "The time period during which the temporary address
- is valid.";
- reference
- "RFC 4941: Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6
- - TEMP_VALID_LIFETIME";
-
- }
-
- leaf temporary-preferred-lifetime {
- if-feature ipv6-privacy-autoconf;
- type uint32;
- units "seconds";
- default 86400;
- description
- "The time period during which the temporary address is
- preferred.";
- reference
- "RFC 4941: Privacy Extensions for Stateless Address
- Autoconfiguration in IPv6
- - TEMP_PREFERRED_LIFETIME";
-
- }
- } // container autoconf
- } // container ipv6
- }
-
- augment /if:devices/if:device/if:interfaces-state/if:interface {
- description
- "Data nodes for the operational state of IP on interfaces.";
- container ipv4 {
- presence
- "Present if IPv4 is enabled on this interface";
- config false;
- description
- "Interface-specific parameters for the IPv4 address family.";
- leaf forwarding {
- type boolean;
- description
- "Indicates whether IPv4 packet forwarding is enabled or
- disabled on this interface.";
- }
-
- leaf mtu {
- type uint16 {
- range "68..max";
- }
- units "octets";
- description
- "The size, in octets, of the largest IPv4 packet that the
- interface will send and receive.";
- reference
- "RFC 791: Internet Protocol";
-
- }
-
- list address {
- key "ip";
- description
- "The list of IPv4 addresses on the interface.";
- leaf ip {
- type inet:ipv4-address-no-zone;
- description
- "The IPv4 address on the interface.";
- }
-
- choice subnet {
- description
- "The subnet can be specified as a prefix-length, or,
- if the server supports non-contiguous netmasks, as
- a netmask.";
- leaf prefix-length {
- type uint8 {
- range "0..32";
- }
- description
- "The length of the subnet prefix.";
- }
- leaf netmask {
- if-feature ipv4-non-contiguous-netmasks;
- type yang:dotted-quad;
- description
- "The subnet specified as a netmask.";
- }
- } // choice subnet
-
- leaf origin {
- type ip-address-origin;
- description
- "The origin of this address.";
- }
- } // list address
-
- list neighbor {
- key "ip";
- description
- "A list of mappings from IPv4 addresses to
- link-layer addresses.
-
- This list represents the ARP Cache.";
- reference
- "RFC 826: An Ethernet Address Resolution Protocol";
-
- leaf ip {
- type inet:ipv4-address-no-zone;
- description
- "The IPv4 address of the neighbor node.";
- }
-
- leaf link-layer-address {
- type yang:phys-address;
- description
- "The link-layer address of the neighbor node.";
- }
-
- leaf origin {
- type neighbor-origin;
- description
- "The origin of this neighbor entry.";
- }
- } // list neighbor
- } // container ipv4
-
- container ipv6 {
- presence
- "Present if IPv6 is enabled on this interface";
- config false;
- description
- "Parameters for the IPv6 address family.";
- leaf forwarding {
- type boolean;
- default false;
- description
- "Indicates whether IPv6 packet forwarding is enabled or
- disabled on this interface.";
- reference
- "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
- Section 6.2.1, IsRouter";
-
- }
-
- leaf mtu {
- type uint32 {
- range "1280..max";
- }
- units "octets";
- description
- "The size, in octets, of the largest IPv6 packet that the
- interface will send and receive.";
- reference
- "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
- Section 5";
-
- }
-
- list address {
- key "ip";
- description
- "The list of IPv6 addresses on the interface.";
- leaf ip {
- type inet:ipv6-address-no-zone;
- description
- "The IPv6 address on the interface.";
- }
-
- leaf prefix-length {
- type uint8 {
- range "0..128";
- }
- mandatory true;
- description
- "The length of the subnet prefix.";
- }
-
- leaf origin {
- type ip-address-origin;
- description
- "The origin of this address.";
- }
-
- leaf status {
- type enumeration {
- enum "preferred" {
- value 0;
- description
- "This is a valid address that can appear as the
- destination or source address of a packet.";
- }
- enum "deprecated" {
- value 1;
- description
- "This is a valid but deprecated address that should
- no longer be used as a source address in new
- communications, but packets addressed to such an
- address are processed as expected.";
- }
- enum "invalid" {
- value 2;
- description
- "This isn't a valid address, and it shouldn't appear
- as the destination or source address of a packet.";
- }
- enum "inaccessible" {
- value 3;
- description
- "The address is not accessible because the interface
- to which this address is assigned is not
- operational.";
- }
- enum "unknown" {
- value 4;
- description
- "The status cannot be determined for some reason.";
- }
- enum "tentative" {
- value 5;
- description
- "The uniqueness of the address on the link is being
- verified. Addresses in this state should not be
- used for general communication and should only be
- used to determine the uniqueness of the address.";
- }
- enum "duplicate" {
- value 6;
- description
- "The address has been determined to be non-unique on
- the link and so must not be used.";
- }
- enum "optimistic" {
- value 7;
- description
- "The address is available for use, subject to
- restrictions, while its uniqueness on a link is
- being verified.";
- }
- }
- description
- "The status of an address. Most of the states correspond
- to states from the IPv6 Stateless Address
- Autoconfiguration protocol.";
- reference
- "RFC 4293: Management Information Base for the
- Internet Protocol (IP)
- - IpAddressStatusTC
- RFC 4862: IPv6 Stateless Address Autoconfiguration";
-
- }
- } // list address
-
- list neighbor {
- key "ip";
- description
- "A list of mappings from IPv6 addresses to
- link-layer addresses.
-
- This list represents the Neighbor Cache.";
- reference
- "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)";
-
- leaf ip {
- type inet:ipv6-address-no-zone;
- description
- "The IPv6 address of the neighbor node.";
- }
-
- leaf link-layer-address {
- type yang:phys-address;
- description
- "The link-layer address of the neighbor node.";
- }
-
- leaf origin {
- type neighbor-origin;
- description
- "The origin of this neighbor entry.";
- }
-
- leaf is-router {
- type empty;
- description
- "Indicates that the neighbor node acts as a router.";
- }
-
- leaf state {
- type enumeration {
- enum "incomplete" {
- value 0;
- description
- "Address resolution is in progress, and the link-layer
- address of the neighbor has not yet been
- determined.";
- }
- enum "reachable" {
- value 1;
- description
- "Roughly speaking, the neighbor is known to have been
- reachable recently (within tens of seconds ago).";
- }
- enum "stale" {
- value 2;
- description
- "The neighbor is no longer known to be reachable, but
- until traffic is sent to the neighbor no attempt
- should be made to verify its reachability.";
- }
- enum "delay" {
- value 3;
- description
- "The neighbor is no longer known to be reachable, and
- traffic has recently been sent to the neighbor.
- Rather than probe the neighbor immediately, however,
- delay sending probes for a short while in order to
- give upper-layer protocols a chance to provide
- reachability confirmation.";
- }
- enum "probe" {
- value 4;
- description
- "The neighbor is no longer known to be reachable, and
- unicast Neighbor Solicitation probes are being sent
- to verify reachability.";
- }
- }
- description
- "The Neighbor Unreachability Detection state of this
- entry.";
- reference
- "RFC 4861: Neighbor Discovery for IP version 6 (IPv6)
- Section 7.3.2";
-
- }
- } // list neighbor
- } // container ipv6
- }
- } // module ietf-ip
-
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
deleted file mode 100755
index dbd60dc..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-l3vpn-svc@2016-07-30.yang
+++ /dev/null
@@ -1,2599 +0,0 @@
-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: <mailto:l3sm@ietf.org>
-
- 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-network-instance@2016-06-23.yang b/apps/l3vpn/yangmodel/src/main/yang/ietf-network-instance@2016-06-23.yang
deleted file mode 100644
index 57eebdc..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-network-instance@2016-06-23.yang
+++ /dev/null
@@ -1,241 +0,0 @@
-module ietf-network-instance {
-
- yang-version "1";
-
- // namespace
- namespace "urn:ietf:params:xml:ns:yang:ietf-network-instance";
-
- prefix "ni";
-
- // import some basic types
- import ietf-interfaces {
- prefix if;
- }
-
- import ietf-ip {
- prefix ip;
- }
-
- // meta
- organization "IETF Routing Area Working Group (rtgwg)";
-
- contact
- "Routing Area Working Group - <rtgwg@ietf.org>";
-
-
- description
- "This module is used to support multiple network instances
- within a single physical or virtual device. Network
- instances are commonly know as VRFs (virtual routing
- and forwarding) and VSIs (virtual switching instances).";
-
- revision "2016-06-23" {
- description
- "Initial revision.";
- reference "RFC TBD";
- }
-
- // extension statements
-
- feature bind-network-instance-name {
- description
- "Network Instance to which an interface instance is bound";
- }
-
- // identity statements
-
- identity network-instance-type {
- description
- "Base identity from which identities describing
- network instance types are derived.";
- }
-
- identity ipv4-interface-protocol-type {
- description
- "Base identity for derivation of IPv4 interface
- protocols";
- }
-
- identity ipv6-interface-protocol-type {
- description
- "Base identity for derivation of IPv6 interface
- protocols";
- }
-
- // typedef statements
-
- // grouping statements
-
- grouping interface-ip-common {
- description
- "interface-specific configuration for IP interfaces, IPv4 and
- IPv6";
-
- }
-
- grouping ipv4-interface-protocols {
- container ipv4-interface-protocols {
- list ipv4-interface-protocol {
- key "type";
- leaf type {
- type identityref {
- base ipv4-interface-protocol-type;
- }
- mandatory true;
- description
- "ARP, ICMP, VRRP, DHCP Client, etc.";
- }
- description
- "List of IPv4 protocols configured
- on an interface";
- }
- description
- "Container for list of IPv4 protocols configured
- on an interface";
- }
- description
- "Grouping for IPv4 protocols configured on an interface";
- }
-
- grouping ipv6-interface-protocols {
- description
- "Grouping for IPv6 protocols configured on
- an interface.";
- container ipv6-interface-protocols {
- description
- "Container for list of IPv6 protocols configured
- on an interface.";
- list ipv6-interface-protocol {
- key "type";
- description
- "List of IPv6 protocols configured
- on an interface";
- leaf type {
- type identityref {
- base ipv6-interface-protocol-type;
- }
- mandatory true;
- description
- "ND, ICMPv6, VRRP, DHCPv6 Client, etc.";
- }
- }
- }
- }
-
- grouping network-instance-policy {
- description
- "Network instance policies such as route
- distinguisher, route targets, VPLS ID and neighbor,
- Ethernet ID, etc. ";
- reference
- "RFC 4364 - BGP/MPLS Virtual Private Networks (VPNs)
- RFC 6074 - Provisioning, Auto-Discovery, and Signaling
- in Layer 2 Virtual Private Networks (L2VPNs)
- RFC 7432 - BGP MPLS-Based Ethernet VPN";
- container network-instance-policy {
- description "Network Instance Policy -- details TBD";
- }
- }
-
- // top level device definition statements
- container devices {
- list device {
- key deviceid;
- leaf deviceid {
- type string;
- }
- container network-instances {
- description "Network instances each of which have
- and protocol instantiations. For layer 3,
- this consistent with the routing-instance
- definition in ietf-routing";
- reference "draft-ietf-netmod-routing-cfg";
- list network-instance {
- key name;
- description "List of network-instances";
- leaf name {
- type string;
- description "device scoped
- identifier for the network
- instance";
- }
- leaf type {
- type identityref {
- base network-instance-type;
- }
- description
- "The network instance type -- details TBD
- Likely types include core, L3-VRF, VPLS,
- L2-cross-connect, L2-VSI, etc.";
- }
- leaf enabled {
- type boolean;
- default "true";
- description
- "Flag indicating whether or not the network
- instance is enabled.";
- }
- leaf description {
- type string;
- description
- "Description of the network instance
- and its intended purpose";
- }
- uses network-instance-policy;
- // leaf root {
- // type schema-mount;
- // description "Root for models supported per
- // network instance";
- // }
- }
- }
- }
- }
-
- // augment statements
- augment "/if:devices/if:device/if:interfaces/if:interface" {
- description
- "Add a node for the identification of the logical network
- instance (which is within the interface's identified logical
- network element) associated with the IP information
- configured on an interface";
-
- leaf bind-network-instance-name {
- type string;
- description
- "Network Instance to which an interface is bound";
- }
- }
-
- augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv4" {
- description
- "Add a node for the identification of the logical
- network instance (which is within the interface's
- identified physical or virtual device) associated with
- the IP information configured on an interface";
-
- leaf bind-network-instance-name {
- type string;
- description
- "Network Instance to which IPv4 interface is bound";
-
- }
- }
-
- augment "/if:devices/if:device/if:interfaces/if:interface/ip:ipv6" {
- description
- "Add a node for the identification of the logical
- network instance (which is within the interface's
- identified physical or virtual device) associated with
- the IP information configured on an interface";
-
- leaf bind-network-instance-name {
- type string;
- description
- "Network Instance to which IPv6 interface is bound";
-
- }
- }
- // rpc statements
- // notification statements
- }
\ 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
deleted file mode 100755
index 3f87464..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/ietf-yang-types.yang
+++ /dev/null
@@ -1,473 +0,0 @@
-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
deleted file mode 100644
index e3fecb6..0000000
--- a/apps/l3vpn/yangmodel/src/main/yang/l3vpn-svc-ext@2016-07-30.yang
+++ /dev/null
@@ -1,362 +0,0 @@
-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
diff --git a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
index b1867f6..9c737b5 100644
--- a/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
+++ b/apps/yang/src/main/java/org/onosproject/yang/YangRuntimeManager.java
@@ -110,6 +110,8 @@
@Override
public void registerSerializer(YangSerializer ys) {
+ //FIXME: Allow re-registration of model with additional service end
+ // points.
serializerRegistry.registerSerializer(ys);
}