summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordecheng zhang <decheng.zhang@huawei.com>2022-07-14 22:15:18 -0400
committerdecheng zhang <decheng.zhang@huawei.com>2022-07-21 13:16:53 -0400
commit5c4ea01ed2994bf573609d3a1ddf1730d0a63d38 (patch)
tree255f90b36758145edae71948cba9c08559f33ac5
parent1187877eb060881b49871515fc43eda01e82cb16 (diff)
[actn-interface-tools] First commit for actn-interface-tools
Actn-interface-tools: this sdk module is aiming to promote usage of actn standard and explore the potential of IETF protocol. Issue-ID: INT-2136 Signed-off-by: decheng zhang <decheng.zhang@huawei.com> Change-Id: Ide2835342f0618f581b2726e7fd94ba084feeb9d Signed-off-by: decheng zhang <decheng.zhang@huawei.com>
-rw-r--r--actn-interface-tools/actn-client/pom.xml48
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/MdscController.java71
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/OssMessage.java60
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncClient.java34
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncSession.java38
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/RequestId.java24
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/SessionId.java24
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/Transcoder.java27
-rw-r--r--actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/YangValue.java32
-rw-r--r--actn-interface-tools/actn-model/pom.xml105
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-topology@2019-11-18.yang2005
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-tunnel@2018-03-01.yang82
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-service@2021-01-11.yang926
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-types@2019-11-03.yang454
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-inet-types@2021-02-22.yang589
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-layer1-types@2021-02-19.yang1185
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-network-state@2018-02-26.yang176
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-network-topology-state@2018-02-26.yang273
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-network-topology@2018-02-26.yang294
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-network@2018-02-26.yang192
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-optical-slice@2020-08-21.yang952
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-otn-topology@2021-02-22.yang2009
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-otn-tunnel@2021-06-25.yang1018
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-routing-types@2017-12-04.yang771
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-service-pm@2020-07-13.yang387
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te-packet-types@2020-06-10.yang475
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te-topology-state@2020-08-06.yang316
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang1952
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te-types@2020-06-10.yang3379
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-te@2021-02-20.yang1796
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-service@2021-01-11.yang244
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-svc-types@2019-11-03.yang62
-rw-r--r--actn-interface-tools/actn-model/src/main/yang/ietf-yang-types@2021-04-14.yang756
-rw-r--r--actn-interface-tools/pom.xml40
34 files changed, 20796 insertions, 0 deletions
diff --git a/actn-interface-tools/actn-client/pom.xml b/actn-interface-tools/actn-client/pom.xml
new file mode 100644
index 0000000..a2d0782
--- /dev/null
+++ b/actn-interface-tools/actn-client/pom.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ ============LICENSE_START=======================================================
+ ~ Actn Interface Tools
+ ~ ================================================================================
+ ~ Copyright (C) 2022 Huawei Canada Limited.
+ ~ ================================================================================
+ ~ 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.
+ ~ ============LICENSE_END=========================================================
+ -->
+
+<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">
+ <parent>
+ <artifactId>actn-interface-tools</artifactId>
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <artifactId>actn-client</artifactId>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <onos-yang-tools-version>2.6.1</onos-yang-tools-version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <artifactId>actn-model</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
+
+</project> \ No newline at end of file
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/MdscController.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/MdscController.java
new file mode 100644
index 0000000..fd23b25
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/MdscController.java
@@ -0,0 +1,71 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import org.onosproject.yang.gen.v11.ietfnetworkstate.rev20180226.ietfnetworkstate.networks.DefaultNetwork;
+import org.onosproject.yang.gen.v11.ietfte.rev20210220.ietfte.tunnelsgrouping.tunnels.DefaultTunnel;
+
+import java.util.concurrent.Future;
+
+public interface MdscController {
+
+ /**
+ * Retrieve network topology from network controller, return java pojo.
+ * @param networkId
+ * @return
+ */
+ DefaultNetwork getNetworkTopology(String networkId);
+
+ /**
+ * Retrieve network topology from network controller, return json representation.
+ * @param networkId
+ * @return
+ */
+ ObjectNode getNetworkTopologyAsJson(String networkId);
+
+ /**
+ * Retrieve otn tunnel info and status, return java pojo.
+ * @param tunnelId
+ * @return
+ */
+ DefaultTunnel getOtnTunnel(String tunnelId);
+
+ /**
+ * Retrieve otn tunnel info and status, return json representation.
+ * @param tunnelId
+ * @return
+ */
+ ObjectNode getOtnTunnelAsJson(String tunnelId);
+
+ /**
+ * Create otn tunnel
+ * @param defaultTunnel
+ * @return
+ */
+ Future<OssMessage> createOtnTunnel(DefaultTunnel defaultTunnel);
+
+ /**
+ * Create otn tunnel
+ * @param tunnelObject
+ * @return
+ */
+ Future<OssMessage> createOtnTunnel(ObjectNode tunnelObject);
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/OssMessage.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/OssMessage.java
new file mode 100644
index 0000000..84e13d0
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/OssMessage.java
@@ -0,0 +1,60 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+/**
+ * Base class for OSS internal message
+ */
+public class OssMessage {
+ protected int xid;
+
+ public OssMessage() {
+
+ }
+
+ public int getXid() {
+ return xid;
+ }
+
+ public OssMessage setXid(int xid) {
+ this.xid = xid;
+ return this;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (!(obj instanceof OssMessage)) {
+ return false;
+ }
+ OssMessage other = (OssMessage) obj;
+
+ if (xid != other.xid) {
+ return false;
+ }
+ return true;
+ }
+} \ No newline at end of file
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncClient.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncClient.java
new file mode 100644
index 0000000..3361ce4
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncClient.java
@@ -0,0 +1,34 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+import java.util.concurrent.Future;
+
+public interface PncClient {
+
+ <T> Future<YangValue<T>> asyncGets(String key, Transcoder<T> tc);
+
+ Future<YangValue<Object>> asyncGets(String key);
+
+ <T> Future<Boolean> put(String key, T o, Transcoder<T> tc);
+
+ Future<Boolean> put(String key, Object o);
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncSession.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncSession.java
new file mode 100644
index 0000000..fa72cc6
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/PncSession.java
@@ -0,0 +1,38 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+import java.net.Inet4Address;
+import java.util.UUID;
+
+public interface PncSession {
+ UUID pncId();
+
+ Inet4Address ipAddress();
+
+ int providerId();
+
+ int clientId();
+
+ int topologyId();
+
+ MdscController getMdscController();
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/RequestId.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/RequestId.java
new file mode 100644
index 0000000..d875880
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/RequestId.java
@@ -0,0 +1,24 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+public class RequestId {
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/SessionId.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/SessionId.java
new file mode 100644
index 0000000..199a042
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/SessionId.java
@@ -0,0 +1,24 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+public class SessionId {
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/Transcoder.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/Transcoder.java
new file mode 100644
index 0000000..d110dde
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/Transcoder.java
@@ -0,0 +1,27 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+public interface Transcoder<T> {
+ T decode(byte[] d);
+
+ byte[] encode(T o);
+}
diff --git a/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/YangValue.java b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/YangValue.java
new file mode 100644
index 0000000..966eeb5
--- /dev/null
+++ b/actn-interface-tools/actn-client/src/main/java/org/onap/integration/actninterfacetools/actnclient/api/YangValue.java
@@ -0,0 +1,32 @@
+/*
+ * ============LICENSE_START=======================================================
+ * Actn Interface Tools
+ * ================================================================================
+ * Copyright (C) 2022 Huawei Canada Limited.
+ * ================================================================================
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.integration.actninterfacetools.actnclient.api;
+
+public class YangValue<T> {
+ private final long version;
+ private final T value;
+
+ public YangValue(long v, T val) {
+ super();
+ version = v;
+ value = val;
+ }
+}
diff --git a/actn-interface-tools/actn-model/pom.xml b/actn-interface-tools/actn-model/pom.xml
new file mode 100644
index 0000000..4ec713a
--- /dev/null
+++ b/actn-interface-tools/actn-model/pom.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ ============LICENSE_START=======================================================
+ ~ Actn Interface Tools
+ ~ ================================================================================
+ ~ Copyright (C) 2022 Huawei Canada Limited.
+ ~ ================================================================================
+ ~ 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.
+ ~ ============LICENSE_END=========================================================
+ -->
+
+<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">
+ <parent>
+ <artifactId>actn-interface-tools</artifactId>
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <version>1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <artifactId>actn-model</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ <onos-yang-tools-version>2.6.1</onos-yang-tools-version>
+ </properties>
+ <dependencies>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-apps-yang</artifactId>
+ <version>1.11.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-model</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-compiler-api</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-utils-generator</artifactId>
+ <version>1.11</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-runtime</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-serializers-json</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-serializers-xml</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-serializers-utils</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.onosproject</groupId>
+ <artifactId>onos-yang-compiler-maven-plugin</artifactId>
+ <version>${onos-yang-tools-version}</version>
+ <executions>
+ <execution>
+ <configuration>
+ <classFileDir>target/generated-sources</classFileDir>
+ </configuration>
+ <goals>
+ <goal>yang2java</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-topology@2019-11-18.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-topology@2019-11-18.yang
new file mode 100644
index 0000000..1300641
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-topology@2019-11-18.yang
@@ -0,0 +1,2005 @@
+module ietf-eth-te-topology {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-topology";
+
+ prefix "ethtetopo";
+
+ import ietf-network {
+ prefix "nw";
+ }
+
+ import ietf-network-topology {
+ prefix "nt";
+ }
+
+ import ietf-te-topology {
+ prefix "tet";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import ietf-eth-tran-types {
+ prefix "etht-types";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ WG List: <mailto:ccamp@ietf.org>
+
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Italo Busi (italo.busi@huawei.com);
+ Aihua Guo (aihuaguo.ietf@gmail.com);
+ Yunbin Xu (xuyunbin@caict.ac.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (xufeng.liu.ietf@gmail.com);
+ ";
+
+ description
+ "This module defines a YANG data model for describing
+ layer-2 Ethernet transport topologies. The model fully
+ conforms to the Network Management Datastore
+ Architecture (NMDA).
+
+ Copyright (c) 2019 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2019-11-18 {
+ description
+ "Initial Revision";
+ reference
+ "RFC XXXX: A YANG Data Model for Client-layer Topology";
+ // RFC Ed.: replace XXXX with actual RFC number, update date
+ // information and remove this note
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping eth-tran-topology-type {
+ description
+ "Identifies the Ethernet Transport topology type";
+
+ container eth-tran-topology {
+ presence "indicates a topology type of
+ Ethernet Transport Network.";
+ description "Eth transport topology type";
+ }
+ }
+
+ grouping ltp-bandwidth-profiles {
+ description
+ "A grouping which represents the bandwidth profile(s)
+ for the ETH LTP.";
+
+ choice direction {
+ description
+ "Whether the bandwidth profiles are symmetrical or
+ asymmetrical";
+ case symmetrical {
+ description
+ "The same bandwidth profile is used to describe the ingress
+ and the egress bandwidth profile.";
+
+ container ingress-egress-bandwidth-profile {
+ description
+ "The bandwith profile used in the ingress and egress
+ direction.";
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ }
+ case asymmetrical {
+ description
+ "Different ingress and egress bandwidth profiles
+ can be specified.";
+ container ingress-bandwidth-profile {
+ description
+ "The bandwidth profile used in the ingress direction.";
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ container egress-bandwidth-profile {
+ description
+ "The bandwidth profile used in the egress direction.";
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ }
+ }
+ }
+
+ grouping eth-ltp-attributes {
+ description
+ "Ethernet transport link termination point attributes";
+
+ /*
+ * Open Issue: should we remove this attribute
+ * (duplicates with I2RS L2 attributes)?
+ */
+ leaf ltp-mac-address {
+ type yang:mac-address;
+ description "the MAC address of the LTP.";
+ }
+ /*
+ * Open Issue: should we remove this attribute
+ * (duplicates with I2RS L2 attributes)?
+ */
+ leaf port-vlan-id {
+ type etht-types:vlanid;
+ description "the port VLAN ID of the LTP.";
+ }
+ /*
+ * Open Issue: should we remove this attribute
+ * (duplicates with I2RS L2 attributes)?
+ */
+ leaf maximum-frame-size {
+ type uint16 {
+ range "64 .. 65535";
+ }
+ description
+ "Maximum frame size";
+ }
+ uses ltp-bandwidth-profiles;
+ }
+
+ grouping svc-vlan-classification {
+ description
+ "Grouping defining the capabilities for VLAN classification.";
+
+ leaf-list supported-tag-types {
+ type etht-types:eth-tag-classify;
+ description
+ "List of VLAN tag types that can be used for the VLAN
+ classification. In case VLAN classification is not
+ supported, the list is empty.";
+ }
+ leaf vlan-bundling {
+ type boolean;
+ description
+ "In case VLAN classification is supported, indicates whether
+ VLAN bundling classification is also supported.";
+ }
+ leaf vlan-range {
+ type etht-types:vid-range-type;
+ description
+ "In case VLAN classification is supported, indicates the
+ of available VLAN ID values.";
+ }
+ }
+
+ grouping svc-vlan-push {
+ description
+ "Grouping defining the capabilities for VLAN push or swap
+ operations.";
+
+ leaf-list supported-tag-types {
+ type etht-types:eth-tag-type;
+ description
+ "List of VLAN tag types that can be used to push or swap a
+ VLAN tag. In case VLAN push/swap is not supported, the list
+ is empty.";
+ }
+ leaf vlan-range {
+ type etht-types:vid-range-type;
+ description
+ "In case VLAN push/swap operation is supported, the range
+ of available VLAN ID values.";
+ }
+ }
+
+ grouping eth-ltp-svc-attributes {
+ description
+ "Ethernet link termination point (LTP) service attributes.";
+
+ container supported-classification {
+ description
+ "Service classification capability supported by the ETH LTP.";
+
+ leaf port-classification {
+ type boolean;
+ description
+ "Indicates that the ETH LTP support port-based service
+ classification.";
+ }
+ container vlan-classification {
+ description
+ "Service classification capabilities based on the VLAN
+ tag(s) supported by the ETH LTP.";
+
+ leaf vlan-tag-classification {
+ type boolean;
+ description
+ "Indicates that the ETH LTP supports VLAN service
+ classification.";
+ }
+ container outer-tag {
+ description
+ "Service classification capabilities based on the outer
+ VLAN tag, supported by the ETH LTP.";
+ uses svc-vlan-classification;
+ }
+ container second-tag {
+ description
+ "Service classification capabilities based on the second
+ VLAN tag, supported by the ETH LTP.";
+ /*
+ * Open issue: indicates that second-tag-classification
+ * can be True only if outer-tag-classification is also True.
+ */
+ leaf second-tag-classification {
+ type boolean;
+ description
+ "Indicates that the ETH LTP support VLAN service
+ classification based on the second VLAN tag.";
+ }
+ uses svc-vlan-classification;
+ }
+ }
+ }
+
+ container supported-vlan-operations {
+ description
+ "Reports the VLAN operations supported by the ETH LTP.";
+
+ leaf asymmetrical-operations {
+ type boolean;
+ description
+ "Indicates whether the ETH LTP supports also asymmetrical
+ VLAN operations.It is assumed that symmetrical VLAN
+ operations are alwyas supported.";
+ }
+ leaf transparent-vlan-operations {
+ type boolean;
+ description
+ "Indicates that the ETH LTP supports transparent
+ operations.";
+ }
+ container vlan-pop {
+ description
+ "Indicates VLAN pop or swap operations capabilities.";
+
+ leaf vlan-pop-operations {
+ type boolean;
+ description
+ "Indicates that the ETH LTP supports VLAN pop or
+ swap operations.";
+ }
+ leaf max-pop-tags {
+ type uint8 {
+ range "1..2";
+ }
+ description
+ "Indicates the maximum number of tags that can be
+ popped/swapped.";
+ }
+ }
+ container vlan-push {
+ description
+ "Indicates VLAN push or swap operations capabilities.";
+
+ leaf vlan-push-operation {
+ type boolean;
+ description
+ "Indicates that the ETH LTP supports VLAN push or
+ swap operations.";
+ }
+ container outer-tag {
+ description
+ "Indicates the supported VLAN operation capabilities
+ on the outer VLAN tag.";
+ uses svc-vlan-push;
+ }
+ container second-tag {
+ description
+ "Indicates the supported VLAN operation capabilities
+ on the second VLAN tag.";
+ leaf push-second-tag {
+ type boolean;
+ description
+ "Indicates that the ETH LTP supports VLAN push or swap
+ operations for the second VLAN tag.";
+ }
+ uses svc-vlan-push;
+ }
+ }
+ }
+ }
+
+ /*
+ * Data nodes
+ */
+
+ augment "/nw:networks/nw:network/nw:network-types/tet:te-topology" {
+ description
+ "Augment network types to include ETH transport newtork";
+
+ uses eth-tran-topology-type;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
+ when "../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description
+ "Augment only for ETH transport network";
+ }
+ description
+ "Augment ETH LTP attributes";
+
+ uses eth-ltp-attributes;
+
+ container eth-svc {
+ presence "client-facing LTP.";
+ description
+ "ETH LTP Service attributes.";
+
+ leaf client-facing {
+ type boolean;
+ default "false";
+ description
+ "Indicates whether this LTP is a client-facing LTP.";
+ }
+ uses eth-ltp-svc-attributes;
+ }
+ }
+
+ /*
+ * Augment TE bandwidth
+ */
+
+ /* Augment maximum LSP bandwidth of link terminationpoint (LTP) */
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+ /* Augment bandwidth path constraints of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment bandwidth path constraints of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment bandwidth path constraints of connectivity-matrices
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment bandwidth path constraints of connectivity-matrix
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment client bandwidth of tunnel termination point (TTP) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:client-layer-adaptation/tet:switching-capability/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment bandwidth path constraints of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment bandwidth path constraints of local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum LSP bandwidth of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum bandwidth of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum reservable bandwidth of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment unreserved bandwidth of TE Link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+ /* Augment maximum LSP bandwidth of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum bandwidth of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum reservable bandwidth of TE link
+ * information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment unreserved bandwidth of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum LSP bandwidth of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+/*
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+*/
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+ /* Augment maximum bandwidth of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+/*
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+*/
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment maximum reservable bandwidth of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+/*
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+*/
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /* Augment unreserved bandwidth of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+/*
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE bandwidth";
+ }
+*/
+ description "Ethernet bandwidth.";
+ case eth {
+ uses etht-types:eth-bandwidth;
+ }
+ }
+
+ /*
+ * Augment TE label.
+ */
+
+ /* Augment label restrictions of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label restriction.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions end of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction/tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label restrictions step of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of
+ * connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label hop of underlay backup path of
+ * connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-exclude of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology"{
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment ingress label restrictions start of
+ * connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions end of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions step of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment egress label restrictions of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment egress label restrictions start of
+ * connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment egress label restrictions end of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment egress label restrictions step of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+/* Augment label hop of underlay primary path of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+/* Augment label hop of underlay backup path of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-exclude of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions of connectivity-matrices
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of connectivity-matrices
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions end of connectivity-matrices
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of connectivity-matrices
+ * information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-exclude of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment ingress label restrictions start of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions end of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment ingress label restrictions step of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment egress label restrictions of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment egress label restrictions start of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment egress label restrictions end of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment egress label restrictions step of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+ /* Augment label hop of underlay primary path of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-exclude of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label restrictions of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions end of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology"{
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology"{
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label hop of route-exclude of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions of local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions end of local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of
+ * local-link-connectivity */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-exclude of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of route-include of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of path-route of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label restrictions end of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label restrictions of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+ /* Augment label restrictions end of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of TE link information-source */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+ /* Augment label hop of underlay primary path of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label hop of underlay backup path of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../../../../nw:network-types/"
+ + "tet:te-topology/ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction" {
+/*
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ uses etht-types:eth-label-restriction;
+ }
+
+ /* Augment label restrictions start of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions end of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label;
+ }
+ }
+
+ /* Augment label restrictions step of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+/*
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "ethtetopo:eth-tran-topology" {
+ description "Ethernet TE label";
+ }
+*/
+ description "Ethernet label.";
+ case eth {
+ uses etht-types:eth-label-step;
+ }
+ }
+
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-tunnel@2018-03-01.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-tunnel@2018-03-01.yang
new file mode 100644
index 0000000..ae8d56a
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-te-tunnel@2018-03-01.yang
@@ -0,0 +1,82 @@
+module ietf-eth-te-tunnel {
+// yang-version 1.1;
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-eth-te-tunnel";
+
+ prefix "eth-tunnel";
+
+ import ietf-te {
+ prefix "te";
+ }
+
+ import ietf-eth-tran-types {
+ prefix "etht-types";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ WG List: <mailto:ccamp@ietf.org>
+
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Italo Busi (italo.busi@huawei.com);
+ Aihua Guo (aihuaguo@huawei.com);
+ Yunbin Xu (xuyunbin@ritt.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (Xufeng_Liu@jabil.com);
+ Giuseppe Fioccola (giuseppe.fioccola@telecomitalia.it);
+ ";
+
+ description
+ "This module defines a model for ETH transport tunnel";
+
+ revision 2018-03-01 {
+ description
+ "Initial revision";
+ reference
+ "draft-zheng-ccamp-client-tunnel-yang-02";
+ }
+
+ grouping eth-tunnel-endpoint {
+ description "Parameters for ETH tunnel.";
+
+ leaf vlanid {
+ type etht-types:vlanid;
+ description
+ "VLAN tag id.";
+ }
+
+ leaf tag-type {
+ type etht-types:eth-tag-type;
+ description "VLAN tag type.";
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel" {
+ description
+ "Augment with additional parameters required for ETH
+ service.";
+
+ container src-eth-tunnel-endpoint {
+ description
+ "Source ETH tunnel endpoint.";
+ uses eth-tunnel-endpoint;
+ }
+
+ container dst-eth-tunnel-endpoint {
+ description
+ "Destination ETH tunnel endpoint.";
+
+ uses eth-tunnel-endpoint;
+ }
+
+ container bandwidth-profile {
+ description
+ "ETH tunnel bandwidth profile specification.";
+
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-service@2021-01-11.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-service@2021-01-11.yang
new file mode 100644
index 0000000..a68de5f
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-service@2021-01-11.yang
@@ -0,0 +1,926 @@
+module ietf-eth-tran-service {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-service";
+
+ prefix "ethtsvc";
+ import ietf-yang-types {
+ prefix "yang";
+ //reference "RFC 6991 - Common YANG Data Types";
+ }
+
+ import ietf-te-types {
+ prefix "te-types";
+ //reference "RFC 8776 - Traffic Engineering Common YANG Types";
+ }
+
+ import ietf-eth-tran-types {
+ prefix "etht-types";
+ //reference "RFC XXXX - A YANG Data Model for Transport
+ // Network Client Signals";
+ }
+
+ import ietf-routing-types {
+ prefix "rt-types";
+ //reference "RFC 8294 - Common YANG Data Types for the
+ // Routing Area";
+
+ }
+
+ import ietf-te {
+ prefix "te";
+ //reference "RFC YYYY - A YANG Data Model for Traffic
+ // Engineering Tunnels and Interfaces";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ WG List: <mailto:ccamp@ietf.org>
+
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Italo Busi (italo.busi@huawei.com);
+ Aihua Guo (aihuaguo.ietf@gmail.com);
+ Anton Snitser (antons@sedonasys.com);0
+ Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+ Yunbin Xu (xuyunbin@caict.ac.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (xufeng.liu.ietf@gmail.com);
+ Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+ ";
+
+ description
+ "This module defines a YANG data model for describing
+ the Ethernet services. The model fully conforms to the
+ Network Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2021-01-11 {
+ description
+ "version -04 as an WG document";
+ reference
+ "draft-ietf-ccamp-client-signal-yang";
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping vlan-classification {
+ description
+ "A grouping which represents classification
+ on an 802.1Q VLAN tag.";
+
+ leaf tag-type {
+ type etht-types:eth-tag-classify;
+ description
+ "The tag type used for VLAN classification.";
+ }
+ choice individual-bundling-vlan {
+ description
+ "VLAN based classification can be individual
+ or bundling.";
+
+ case individual-vlan {
+ leaf vlan-value {
+ type etht-types:vlanid;
+ description
+ "VLAN ID value.";
+ }
+ }
+
+ case vlan-bundling {
+ leaf vlan-range {
+ type etht-types:vid-range-type;
+ description
+ "List of VLAN ID values.";
+ }
+ }
+ }
+ }
+
+ grouping vlan-write {
+ description
+ "A grouping which represents push/pop operations
+ of an 802.1Q VLAN tag.";
+
+ leaf tag-type {
+ type etht-types:eth-tag-type;
+ description
+ "The VLAN tag type to push/swap.";
+ }
+ leaf vlan-value {
+ type etht-types:vlanid;
+ description
+ "The VLAN ID value to push/swap.";
+ }
+/*
+ * To be added: this attribute is used when:
+ * a) the ETH service has only one CoS (as in current version)
+ * b) as a default when a mapping between a given CoS value
+ * and the PCP value is not defined (in future versions)
+ */
+ leaf default-pcp {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "The default Priority Code Point (PCP) value to push/swap";
+ }
+ }
+
+ grouping vlan-operations {
+ description
+ "A grouping which represents VLAN operations.";
+
+ leaf pop-tags {
+ type uint8 {
+ range "1..2";
+ }
+ description
+ "The number of VLAN tags to pop (or swap if used in
+ conjunction with push-tags)";
+ }
+ container push-tags {
+ description
+ "The VLAN tags to push (or swap if used in
+ conjunction with pop-tags)";
+
+ container outer-tag {
+ presence
+ "Indicates existence of the outermost VLAN tag to
+ push/swap";
+
+ description
+ "The outermost VLAN tag to push/swap.";
+
+ uses vlan-write;
+ }
+ container second-tag {
+ must
+ '../outer-tag/tag-type = "etht-types:s-vlan-tag-type" and ' +
+ 'tag-type = "etht-types:c-vlan-tag-type"'
+ {
+
+ error-message
+ "
+ When pushing/swapping two tags, the outermost tag must
+ be specified and of S-VLAN type and the second
+ outermost tag must be of C-VLAN tag type.
+ ";
+ description
+ "
+ For IEEE 802.1Q interoperability, when pushing/swapping
+ two tags, it is required that the outermost tag exists
+ and is an S-VLAN, and the second outermost tag is a
+ C-VLAN.
+ ";
+ }
+
+ presence
+ "Indicates existence of a second outermost VLAN tag to
+ push/swap";
+
+ description
+ "The second outermost VLAN tag to push/swap.";
+ uses vlan-write;
+ }
+ }
+ }
+
+ grouping named-or-value-bandwidth-profile {
+ description
+ "A grouping to configure a bandwdith profile either by
+ referencing a named bandwidth profile or by
+ configuring the values of the bandwidth profile attributes.";
+ choice style {
+ description
+ "Whether the bandwidth profile is named or defined by value";
+
+ case named {
+ description
+ "Named bandwidth profile.";
+ leaf bandwidth-profile-name {
+ type leafref {
+ path "/ethtsvc:etht-svc/ethtsvc:globals/"
+ + "ethtsvc:named-bandwidth-profiles/"
+ + "ethtsvc:bandwidth-profile-name";
+ }
+ description
+ "Name of the bandwidth profile.";
+ }
+ }
+ case value {
+ description
+ "Bandwidth profile configured by value.";
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ }
+ }
+
+ grouping bandwidth-profiles {
+ description
+ "A grouping which represent bandwidth profile configuration.";
+
+ choice direction {
+ description
+ "Whether the bandwidth profiles are symmetrical or
+ asymmetrical";
+ case symmetrical {
+ description
+ "The same bandwidth profile is used to describe both
+ the ingress and the egress bandwidth profile.";
+ container ingress-egress-bandwidth-profile {
+ description
+ "The bandwdith profile used in both directions.";
+ uses named-or-value-bandwidth-profile;
+ }
+ }
+ case asymmetrical {
+ description
+ "Ingress and egress bandwidth profiles can be specified.";
+ container ingress-bandwidth-profile {
+ description
+ "The bandwdith profile used in the ingress direction.";
+ uses named-or-value-bandwidth-profile;
+ }
+ container egress-bandwidth-profile {
+ description
+ "The bandwdith profile used in the egress direction.";
+ uses named-or-value-bandwidth-profile;
+ }
+ }
+ }
+ }
+
+ grouping etht-svc-access-parameters {
+ description
+ "ETH services access parameters";
+
+ leaf access-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of the access node in
+ the ETH topology.";
+ }
+ leaf access-ltp-id {
+ type te-types:te-tp-id;
+ description
+ "The TE link termination point identifier, used
+ together with access-node-id to identify the
+ access LTP.";
+ }
+ leaf access-role {
+ type identityref {
+ base etht-types:access-role;
+ }
+ description
+ "Indicate the role of access, e.g., working or protection. ";
+ }
+
+ container pm-config {
+ uses pm-config-grouping;
+ description
+ "This grouping is used to set the threshold value for
+ performance monitoring. ";
+ }
+
+ container state {
+ config false;
+ description
+ "The state is used to monitor the status of service. ";
+ leaf operational-state {
+ type identityref {
+ base te-types:tunnel-state-type;
+ }
+ description
+ "Indicating the operational state of client signal. ";
+ }
+ leaf provisioning-state {
+ type identityref {
+ base te-types:lsp-state-type;
+ }
+ description
+ "Indicating the provisional state of client signal,
+ especially when there is a change, i.e., revise, create. ";
+ }
+ }
+
+ leaf performance {
+ type identityref {
+ base etht-types:performance;
+ }
+ config false;
+ description
+ "Performance Monitoring for the service. ";
+ }
+
+ }
+
+ grouping etht-svc-tunnel-parameters {
+ description
+ "ETH services tunnel parameters.";
+ choice technology {
+ description
+ "Service multiplexing is optional and flexible.";
+
+ case native-ethernet {
+ /*
+ placeholder to support proprietary multiplexing
+ (for further discussion)
+ */
+ list eth-tunnels {
+ key name;
+ description
+ "ETH Tunnel list in native Ethernet scenario.";
+ uses tunnels-grouping;
+ }
+ }
+
+ case frame-base {
+ list otn-tunnels {
+ key name;
+ description
+ "OTN Tunnel list in Frame-based scenario.";
+ uses tunnels-grouping;
+ }
+ }
+
+ case mpls-tp {
+ container pw {
+ description
+ "Pseudowire information for Ethernet over MPLS-TP.";
+ uses pw-segment-grouping;
+ }
+ }
+ }
+
+/*
+ * Open issue: can we constraints it to be used only with mp services?
+ */
+ leaf src-split-horizon-group {
+ type string;
+ description
+ "Identify a split horizon group at the Tunnel source TTP";
+ }
+ leaf dst-split-horizon-group {
+ type string;
+ description
+ "Identify a split horizon group at the Tunnel destination TTP";
+ }
+ }
+
+ grouping etht-svc-pm-threshold-config {
+ description
+ "Configuraiton parameters for Ethernet service PM thresholds.";
+
+ leaf sending-rate-high {
+ type uint64;
+ description
+ "High threshold of packet sending rate in kbps.";
+ }
+ leaf sending-rate-low {
+ type uint64;
+ description
+ "Low threshold of packet sending rate in kbps.";
+ }
+ leaf receiving-rate-high {
+ type uint64;
+ description
+ "High threshold of packet receiving rate in kbps.";
+ }
+ leaf receiving-rate-low {
+ type uint64;
+ description
+ "Low threshold of packet receiving rate in kbps.";
+ }
+ }
+
+ grouping etht-svc-pm-stats {
+ description
+ "Ethernet service PM statistics.";
+
+ leaf sending-rate-too-high {
+ type uint32;
+ description
+ "Counter that indicates the number of times the
+ sending rate is above the high threshold";
+ }
+ leaf sending-rate-too-low {
+ type uint32;
+ description
+ "Counter that indicates the number of times the
+ sending rate is below the low threshold";
+ }
+ leaf receiving-rate-too-high {
+ type uint32;
+ description
+ "Counter that indicates the number of times the
+ receiving rate is above the high threshold";
+ }
+ leaf receiving-rate-too-low {
+ type uint32;
+ description
+ "Counter that indicates the number of times the
+ receiving rate is below the low threshold";
+ }
+ }
+
+ grouping etht-svc-instance-config {
+ description
+ "Configuraiton parameters for Ethernet services.";
+
+ leaf etht-svc-name {
+ type string;
+ description
+ "Name of the ETH service.";
+ }
+
+ leaf etht-svc-title {
+ type string;
+ description
+ "The Identifier of the ETH service.";
+ }
+
+ leaf etht-svc-descr {
+ type string;
+ description
+ "Description of the ETH service.";
+ }
+
+ leaf etht-svc-customer {
+ type string;
+ description
+ "Customer of the ETH service.";
+ }
+
+ leaf etht-svc-type {
+ type etht-types:service-type;
+ description
+ "Type of ETH service (p2p, mp2mp or rmp).";
+ /* Add default as p2p */
+ }
+
+ leaf etht-svc-lifecycle {
+ type etht-types:lifecycle-status;
+ description
+ "Lifecycle state of ETH service.";
+ /* Add default as installed */
+ }
+ uses te-types:te-topology-identifier;
+
+ uses resilience-grouping;
+ list etht-svc-end-points {
+ key etht-svc-end-point-name;
+ description
+ "The logical end point for the ETH service. ";
+ uses etht-svc-end-point-grouping;
+ }
+
+ container underlay {
+ description
+ "The unterlay tunnel information that carrying the
+ ETH service. ";
+ uses etht-svc-tunnel-parameters;
+ }
+
+ leaf admin-status {
+ type identityref {
+ base te-types:tunnel-admin-state-type;
+ }
+ default te-types:tunnel-admin-state-up;
+ description "ETH service administrative state.";
+ }
+ }
+
+ grouping etht-svc-instance-state {
+ description
+ "State parameters for Ethernet services.";
+
+ leaf operational-state {
+ type identityref {
+ base te-types:tunnel-state-type;
+ }
+ default te-types:tunnel-state-up;
+ description "ETH service operational state.";
+ }
+ leaf provisioning-state {
+ type identityref {
+ base te-types:lsp-state-type;
+ }
+ description "ETH service provisioning state.";
+ }
+ leaf creation-time {
+ type yang:date-and-time;
+ description
+ "Time of ETH service creation.";
+ }
+ leaf last-updated-time {
+ type yang:date-and-time;
+ description
+ "Time of ETH service last update.";
+ }
+
+ leaf created-by {
+ type string;
+ description
+ "The client signal is created by whom,
+ can be a system or staff ID.";
+ }
+ leaf last-updated-by {
+ type string;
+ description
+ "The client signal is last updated by whom,
+ can be a system or staff ID.";
+ }
+ leaf owned-by {
+ type string;
+ description
+ "The client signal is last updated by whom,
+ can be a system ID.";
+ }
+ }
+
+ /*
+ * Data nodes
+ */
+
+ container etht-svc {
+ description
+ "ETH services.";
+
+ container globals {
+ description
+ "Globals Ethernet configuration data container";
+ list named-bandwidth-profiles {
+ key bandwidth-profile-name;
+ description
+ "List of named bandwidth profiles used by
+ Ethernet services.";
+
+ leaf bandwidth-profile-name {
+ type string;
+ description
+ "Name of the bandwidth profile.";
+ }
+ uses etht-types:etht-bandwidth-profiles;
+ }
+ }
+
+ list etht-svc-instances {
+ key etht-svc-name;
+ description
+ "The list of p2p ETH service instances";
+
+ uses etht-svc-instance-config;
+
+ container state {
+ config false;
+ description
+ "Ethernet Service states.";
+
+ uses etht-svc-instance-state;
+ }
+ }
+ }
+
+ grouping resilience-grouping {
+ description
+ "Grouping for resilience configuration. ";
+ container resilience {
+ description
+ "To configure the data plane protection parameters,
+ currently a placeholder only, future candidate attributes
+ include, Revert, WTR, Hold-off Timer, ...";
+ uses te:protection-restoration-properties;
+ }
+ }
+
+ grouping etht-svc-end-point-grouping {
+ description
+ "Grouping for the end point configuration.";
+ leaf etht-svc-end-point-name {
+ type string;
+ description
+ "The name of the logical end point of ETH service. ";
+ }
+
+ leaf etht-svc-end-point-id {
+ type string;
+ description
+ "The identifier of the logical end point of ETH service.";
+ }
+
+ leaf etht-svc-end-point-descr {
+ type string;
+ description
+ "The description of the logical end point of ETH service. ";
+ }
+
+ leaf topology-role {
+ type identityref {
+ base etht-types:topology-role;
+ }
+ description
+ "Indicating the underlay topology role,
+ e.g., hub,spoke, any-to-any ";
+ }
+
+ container resilience {
+ description
+ "Placeholder for resilience configuration, for future study. ";
+ }
+
+ list etht-svc-access-points {
+ key access-point-id;
+ min-elements "1";
+/*
+ Open Issue:
+ Is it possible to limit the max-elements only for p2p services?
+ max-elements "2";
+*/
+ description
+ "List of the ETH trasport services access point instances.";
+
+ leaf access-point-id {
+ type string;
+ description
+ "ID of the service access point instance";
+ }
+ uses etht-svc-access-parameters;
+ }
+
+ leaf service-classification-type {
+ type identityref {
+ base etht-types:service-classification-type;
+ }
+ description
+ "Service classification type.";
+ }
+
+ choice service-classification {
+ description
+ "Access classification can be port-based or
+ VLAN based.";
+
+ case port-classification {
+ /* no additional information */
+ }
+
+ case vlan-classification {
+ container outer-tag {
+ presence "The outermost VLAN tag exists";
+ description
+ "Classifies traffic using the outermost VLAN tag.";
+
+ uses vlan-classification;
+ }
+ container second-tag {
+ must
+ '../outer-tag/tag-type = "etht-types:classify-s-vlan" and ' +
+ 'tag-type = "etht-types:classify-c-vlan"'
+ {
+ error-message
+ "
+ When matching two tags, the outermost tag must be
+ specified and of S-VLAN type and the second
+ outermost tag must be of C-VLAN tag type.
+ ";
+ description
+ "
+ For IEEE 802.1Q interoperability, when matching two
+ tags, it is required that the outermost tag exists
+ and is an S-VLAN, and the second outermost tag is a
+ C-VLAN.
+ ";
+ }
+ presence "The second outermost VLAN tag exists";
+
+ description
+ "Classifies traffic using the second outermost VLAN tag.";
+
+ uses vlan-classification;
+ }
+ }
+ }
+
+/*
+ * Open issue: can we constraints it to be used only with mp services?
+ */
+ leaf split-horizon-group {
+ type string;
+ description "Identify a split horizon group";
+ }
+
+ uses bandwidth-profiles;
+
+ container vlan-operations {
+ description
+ "Configuration of VLAN operations.";
+ choice direction {
+ description
+ "Whether the VLAN operations are symmetrical or
+ asymmetrical";
+ case symmetrical {
+ container symmetrical-operation {
+ uses vlan-operations;
+ description
+ "Symmetrical operations.
+ Expressed in the ingress direction, but
+ the reverse operation is applied to egress traffic";
+ }
+ }
+ case asymmetrical {
+ container asymmetrical-operation {
+ description "Asymmetrical operations";
+ container ingress {
+ uses vlan-operations;
+ description "Ingress operations";
+ }
+ container egress {
+ uses vlan-operations;
+ description "Egress operations";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping pm-config-grouping {
+ description
+ "Grouping used for Performance Monitoring Configuration. ";
+ leaf pm-enable {
+ type boolean;
+ description
+ "Whether to enable the performance monitoring.";
+ }
+
+ leaf sending-rate-high {
+ type uint64;
+ description
+ "The upperbound of sending rate.";
+ }
+
+ leaf sending-rate-low {
+ type uint64;
+ description
+ "The lowerbound of sending rate.";
+ }
+
+ leaf receiving-rate-high {
+ type uint64;
+ description
+ "The upperbound of receiving rate.";
+ }
+
+ leaf receiving-rate-low {
+ type uint64;
+ description
+ "The lowerbound of receiving rate.";
+ }
+ }
+
+ grouping pw-segment-grouping {
+ description
+ "Grouping used for PW configuration. ";
+ leaf pw-id {
+ type string;
+ description
+ "The Identifier information of pseudowire. ";
+ }
+
+ leaf pw-name {
+ type string;
+ description
+ "The name information of pseudowire.";
+ }
+
+ leaf transmit-label {
+ type rt-types:mpls-label;
+ description
+ "Transmit label information in PW. ";
+ }
+
+ leaf receive-label {
+ type rt-types:mpls-label;
+ description
+ "Receive label information in PW. ";
+ }
+
+ leaf encapsulation-type {
+ type identityref {
+ base etht-types:encapsulation-type;
+ }
+ description
+ "The encapsulation type, raw or tag. ";
+ }
+
+ leaf oper-status {
+ type identityref {
+ base te-types:tunnel-state-type;
+ }
+ config false;
+ description
+ "The operational state of the PW segment. ";
+ }
+
+ container ingress-bandwidth-profile {
+ description
+ "Bandwidth Profile for ingress. ";
+ uses pw-segment-named-or-value-bandwidth-profile;
+ }
+
+ list pw-paths {
+ key path-id;
+ description
+ "A list of pw paths. ";
+
+ leaf path-id {
+ type uint8;
+ description
+ "The identifier of pw paths. ";
+
+ }
+
+ list tp-tunnels {
+ key name;
+ description
+ "Names of TP Tunnel underlay";
+ leaf name {
+ type string;
+ description
+ "Names of TP Tunnel underlay";
+ }
+ }
+ }
+
+ }
+
+ grouping pw-segment-named-or-value-bandwidth-profile {
+ description
+ "A grouping to configure a bandwdith profile either by
+ referencing a named bandwidth profile or by
+ configuring the values of the bandwidth profile attributes.";
+ choice style {
+ description
+ "Whether the bandwidth profile is named or defined by value";
+ case named {
+ description
+ "Named bandwidth profile.";
+ leaf bandwidth-profile-name {
+ type leafref {
+ path "/ethtsvc:etht-svc/ethtsvc:globals/"
+ + "ethtsvc:named-bandwidth-profiles/"
+ + "ethtsvc:bandwidth-profile-name";
+ }
+ description
+ "Name of the bandwidth profile.";
+ }
+ }
+ case value {
+ description
+ "Bandwidth profile configured by value.";
+ uses etht-types:pw-segement-bandwidth-profile-grouping;
+ }
+ }
+ }
+
+ grouping tunnels-grouping {
+ description
+ "A group of tunnels. ";
+ leaf name {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:name";
+ require-instance false;
+ }
+ description "Dependency tunnel name";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description "LSP encoding type";
+ reference "RFC3945";
+ }
+ leaf switching-type {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description "LSP switching type";
+ reference "RFC3945";
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-types@2019-11-03.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-types@2019-11-03.yang
new file mode 100644
index 0000000..3f22f2d
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-eth-tran-types@2019-11-03.yang
@@ -0,0 +1,454 @@
+module ietf-eth-tran-types {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-eth-tran-types";
+
+ prefix "etht-types";
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ WG List: <mailto:ccamp@ietf.org>
+
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Italo Busi (italo.busi@huawei.com);
+ Aihua Guo (aihuaguo.ietf@gmail.com);
+ Anton Snitser (antons@sedonasys.com);0
+ Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+ Yunbin Xu (xuyunbin@caict.ac.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (xufeng.liu.ietf@gmail.com);
+ Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+ ";
+
+ description
+ "This module defines the ETH types.
+ The model fully conforms to the Network Management
+ Datastore Architecture (NMDA).
+
+ Copyright (c) 2019 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2019-11-03 {
+ description
+ "version -01 as a WG draft";
+ reference
+ "draft-ietf-ccamp-client-signal-yang";
+ }
+
+ /*
+ * Identities
+ */
+
+ identity eth-vlan-tag-type {
+ description
+ "ETH VLAN tag type.";
+ }
+
+ identity c-vlan-tag-type {
+ base eth-vlan-tag-type;
+ description
+ "802.1Q Customer VLAN";
+ }
+
+ identity s-vlan-tag-type {
+ base eth-vlan-tag-type;
+ description
+ "802.1Q Service VLAN (QinQ)";
+ }
+
+ identity service-classification-type {
+ description
+ "Service classification.";
+ }
+
+ identity port-classification {
+ base service-classification-type;
+ description
+ "Port classification.";
+ }
+
+ identity vlan-classification {
+ base service-classification-type;
+ description
+ "VLAN classification.";
+ }
+
+ identity eth-vlan-tag-classify {
+ description
+ "VLAN tag classification.";
+ }
+
+ identity classify-c-vlan {
+ base eth-vlan-tag-classify;
+ description
+ "Classify 802.1Q Customer VLAN tag.
+ Only C-tag type is accepted";
+ }
+
+ identity classify-s-vlan {
+ base eth-vlan-tag-classify;
+ description
+ "Classify 802.1Q Service VLAN (QinQ) tag.
+ Only S-tag type is accepted";
+ }
+
+ identity classify-s-or-c-vlan {
+ base eth-vlan-tag-classify;
+ description
+ "Classify S-VLAN or C-VLAN tag-classify.
+ Either tag is accepted";
+ }
+
+ identity bandwidth-profile-type {
+ description
+ "Bandwidth Profile Types";
+ }
+
+ identity mef-10-bwp {
+ base bandwidth-profile-type;
+ description
+ "MEF 10 Bandwidth Profile";
+ }
+
+ identity rfc-2697-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 2697 Bandwidth Profile";
+ }
+
+ identity rfc-2698-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 2698 Bandwidth Profile";
+ }
+
+ identity rfc-4115-bwp {
+ base bandwidth-profile-type;
+ description
+ "RFC 4115 Bandwidth Profile";
+ }
+
+ identity service-type {
+ description
+ "Type of Ethernet service.";
+ }
+
+ identity p2p-svc {
+ base service-type;
+ description
+ "Ethernet point-to-point service (EPL, EVPL).";
+ }
+
+ identity rmp-svc {
+ base service-type;
+ description
+ "Ethernet rooted-multitpoint service (E-TREE, EP-TREE).";
+ }
+
+ identity mp2mp-svc {
+ base service-type;
+ description
+ "Ethernet multipoint-to-multitpoint service (E-LAN, EP-LAN).";
+ }
+
+ identity lifecycle-status {
+ description
+ "Lifecycle Status.";
+ }
+
+ identity installed {
+ base lifecycle-status;
+ description
+ "Installed.";
+ }
+
+ identity planned {
+ base lifecycle-status;
+ description
+ "Planned.";
+ }
+
+ identity pending-removal {
+ base lifecycle-status;
+ description
+ "Pending Removal.";
+ }
+
+ /*
+ * Type Definitions
+ */
+
+ typedef eth-tag-type {
+ type identityref {
+ base eth-vlan-tag-type;
+ }
+ description
+ "Identifies a specific ETH VLAN tag type.";
+ }
+
+ typedef eth-tag-classify {
+ type identityref {
+ base eth-vlan-tag-classify;
+ }
+ description
+ "Identifies a specific VLAN tag classification.";
+ }
+
+ typedef vlanid {
+ type uint16 {
+ range "1..4094";
+ }
+ description
+ "The 12-bit VLAN-ID used in the VLAN Tag header.";
+ }
+
+ typedef vid-range-type {
+ type string {
+ pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?" +
+ "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
+ }
+ description
+ "A list of VLAN Ids, or non overlapping VLAN ranges, in
+ ascending order, between 1 and 4094.
+ This type is used to match an ordered list of VLAN Ids, or
+ contiguous ranges of VLAN Ids. Valid VLAN Ids must be in the
+ range 1 to 4094, and included in the list in non overlapping
+ ascending order.
+
+ For example: 1,10-100,50,500-1000";
+ }
+
+ typedef bandwidth-profile-type {
+ type identityref {
+ base bandwidth-profile-type;
+ }
+ description
+ "Identifies a specific Bandwidth Profile type.";
+ }
+
+ typedef service-type {
+ type identityref {
+ base service-type;
+ }
+ description
+ "Identifies the type of Ethernet service.";
+ }
+
+ typedef lifecycle-status {
+ type identityref {
+ base lifecycle-status;
+ }
+ description
+ "Identifies the lLifecycle Status .";
+ }
+
+ /*
+ * Grouping Definitions
+ */
+
+ grouping etht-bandwidth-profiles {
+ description
+ "Bandwidth profile configuration paramters.";
+
+ leaf bandwidth-profile-type {
+ type etht-types:bandwidth-profile-type;
+ description
+ "The type of bandwidth profile.";
+ }
+ leaf CIR {
+ type uint64;
+ description
+ "Committed Information Rate in Kbps";
+ }
+ leaf CBS {
+ type uint64;
+ description
+ "Committed Burst Size in in KBytes";
+ }
+ leaf EIR {
+ type uint64;
+ /* Need to indicate that EIR is not supported by RFC 2697
+
+ must
+ '../bw-profile-type = "mef-10-bwp" or ' +
+ '../bw-profile-type = "rfc-2698-bwp" or ' +
+ '../bw-profile-type = "rfc-4115-bwp"'
+
+ must
+ '../bw-profile-type != "rfc-2697-bwp"'
+ */
+ description
+ "Excess Information Rate in Kbps
+ In case of RFC 2698, PIR = CIR + EIR";
+ }
+ leaf EBS {
+ type uint64;
+ description
+ "Excess Burst Size in KBytes.
+ In case of RFC 2698, PBS = CBS + EBS";
+ }
+ leaf color-aware {
+ type boolean;
+ description
+ "Indicates weather the color-mode is
+ color-aware or color-blind.";
+ }
+ leaf coupling-flag {
+ type boolean;
+ /* Need to indicate that Coupling Flag is defined only for MEF 10
+
+ must
+ '../bw-profile-type = "mef-10-bwp"'
+ */
+ description
+ "Coupling Flag.";
+ }
+ }
+
+ identity topology-role {
+ description
+ "The rold of underlay topology, e.g.,
+ hub, spoke, any-to-any. ";
+ }
+
+ identity resilience {
+ description
+ "Placeholder for resilience information in data plane,
+ for future study. ";
+ }
+
+ identity access-role {
+ description
+ "Indicating whether the access is a working or protection access.";
+ }
+
+ identity root-primary {
+ base access-role;
+ description
+ "Designates the primary root UNI of an E-Tree service.";
+ }
+
+ identity root-backup {
+ base access-role;
+ description
+ "Designates the backup root UNI of an E-Tree service.";
+ }
+
+ identity leaf-access {
+ base access-role;
+ description
+ "Designates the leaf UNI of an E-Tree service.";
+ }
+
+ identity performance {
+ description
+ "Placeholder for performance information, for future study.";
+ }
+
+ identity encapsulation-type {
+ description
+ "Indicating how the service is encapsulated (to PW), e.g, raw or tag. ";
+ }
+
+ grouping pw-segement-bandwidth-profile-grouping {
+ description
+ "bandwidth profile grouping for PW segment. ";
+ leaf bandwidth-profile-type {
+ type etht-types:bandwidth-profile-type;
+ description
+ "The type of bandwidth profile.";
+ }
+ leaf CIR {
+ type uint64;
+ description
+ "Committed Information Rate in Kbps";
+ }
+ leaf CBS {
+ type uint64;
+ description
+ "Committed Burst Size in in KBytes";
+ }
+ leaf EIR {
+ type uint64;
+ /* Need to indicate that EIR is not supported by RFC 2697
+
+ must
+ '../bw-profile-type = "mef-10-bwp" or ' +
+ '../bw-profile-type = "rfc-2698-bwp" or ' +
+ '../bw-profile-type = "rfc-4115-bwp"'
+
+ must
+ '../bw-profile-type != "rfc-2697-bwp"'
+ */
+ description
+ "Excess Information Rate in Kbps
+ In case of RFC 2698, PIR = CIR + EIR";
+ }
+ leaf EBS {
+ type uint64;
+ description
+ "Excess Burst Size in KBytes.
+ In case of RFC 2698, PBS = CBS + EBS";
+ }
+ }
+ grouping eth-bandwidth {
+ description
+ "Available bandwith for ethernet.";
+ leaf eth-bandwidth {
+ type uint64{
+ range "0..10000000000";
+ }
+ units "Kbps";
+ description
+ "Available bandwith value expressed in kilobits per second";
+ }
+ }
+
+ grouping eth-label-restriction {
+ description
+ "Label Restriction for ethernet.";
+ leaf tag-type {
+ type etht-types:eth-tag-type;
+ description "VLAN tag type.";
+ }
+ leaf priority {
+ type uint8;
+ description "priority.";
+ }
+ }
+ grouping eth-label {
+ description
+ "Label for ethernet.";
+ leaf vlanid {
+ type etht-types:vlanid;
+ description
+ "VLAN tag id.";
+ }
+ }
+
+ grouping eth-label-step {
+ description "Label step for Ethernet VLAN";
+ leaf eth-step {
+ type uint16 {
+ range "1..4095";
+ }
+ default 1;
+ description
+ "Label step which represent possible increments for
+ an Ethernet VLAN tag.";
+ reference
+ "IEEE 802.1ad: Provider Bridges.";
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-inet-types@2021-02-22.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-inet-types@2021-02-22.yang
new file mode 100644
index 0000000..26f1f91
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-inet-types@2021-02-22.yang
@@ -0,0 +1,589 @@
+module ietf-inet-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
+ prefix "inet";
+
+ organization
+ "IETF Network Modeling (NETMOD) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ 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.
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2021 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 XXXX;
+ see the RFC itself for full legal notices.";
+
+ revision 2021-02-22 {
+ description
+ "This revision adds the following new data types:
+ - inet:ip-address-and-prefix
+ - inet:ipv4-address-and-prefix
+ - inet:ipv6-address-and-prefix
+ - inet:host-name
+ - inet:email-address
+ The inet:host union was changed to use inet:host-name instead
+ of inet:domain-name.";
+ reference
+ "RFC XXXX: Common YANG Data Types";
+ }
+ revision 2013-07-15 {
+ description
+ "This revision adds the following new data types:
+ - inet:ip-address-no-zone
+ - inet:ipv4-address-no-zone
+ - inet: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";
+ }
+
+ /*** collection of types related to protocol fields ***/
+
+ 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";
+ }
+
+ /*** collection of types related to autonomous systems ***/
+
+ 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";
+ }
+
+ /*** collection of types related to IP addresses and hostnames ***/
+
+ typedef ip-address {
+ type union {
+ type inet:ipv4-address;
+ type inet: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 inet:ipv4-address-no-zone;
+ type inet: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 inet: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 inet: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 inet:ipv4-prefix;
+ type inet: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 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.
+
+ The definition of ipv4-prefix does not require that bits,
+ which are not part of the prefix, are set to zero. However,
+ implementations have to return values in canonical format,
+ which requires non-prefix bits to be set to zero. This means
+ that 192.0.2.1/24 must be accepted as a valid value but it
+ will be converted into the canonical format 192.0.2.0/24.";
+ }
+
+ 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 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 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.
+
+ The definition of ipv6-prefix does not require that bits,
+ which are not part of the prefix, are set to zero. However,
+ implementations have to return values in canonical format,
+ which requires non-prefix bits to be set to zero. This means
+ that 2001:db8::1/64 must be accepted as a valid value but it
+ will be converted into the canonical format 2001:db8::/64.";
+ reference
+ "RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ typedef ip-address-and-prefix {
+ type union {
+ type inet:ipv4-address-and-prefix;
+ type inet:ipv6-address-and-prefix;
+ }
+ description
+ "The ip-address-and-prefix type represents an IP address and
+ prefix and is IP version neutral. The format of the textual
+ representations implies the IP version.";
+ }
+
+ typedef ipv4-address-and-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-address-and-prefix type represents an IPv4
+ address and an associated ipv4 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.";
+ }
+
+ typedef ipv6-address-and-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-address-and-prefix type represents an IPv6
+ address and an associated ipv4 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 canonical format requires that the IPv6 address is
+ represented as defined in Section 4 of RFC 5952.";
+ reference
+ "RFC 5952: A Recommendation for IPv6 Address Text
+ Representation";
+ }
+
+ /*** collection of domain name and URI types ***/
+
+ 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. This
+ type does not support wildcards (see RFC 4592) or
+ classless in-addr.arpa delegations (see RFC 2317).
+
+ 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. Note that Internet host names have a
+ stricter syntax (described in RFC 952) than the DNS
+ recommendations in RFCs 1034 and 1123. Schema nodes
+ representing host names should use the host-name type
+ instead of the domain-type.
+
+ 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 2317: Classless IN-ADDR.ARPA delegation
+ RFC 2782: A DNS RR for specifying the location of services
+ (DNS SRV)
+ RFC 4592: The Role of Wildcards in the Domain Name System
+ RFC 5890: Internationalized Domain Names in Applications
+ (IDNA): Definitions and Document Framework";
+ }
+
+ typedef host-name {
+ type domain-name {
+ pattern '[a-zA-Z0-9\-\.]+';
+ length "2..max";
+ }
+ description
+ "The host-name type represents (fully qualified) host names.
+ Host names must be at least two characters long (see RFC 952)
+ and they are restricted to labels consisting of letters, digits
+ and hyphens separated by dots (see RFC1123 and RFC 952).";
+ reference
+ "RFC 952: DoD Internet Host Table Specification
+ RFC 1123: Requirements for Internet Hosts: Application and Support";
+ }
+
+ typedef host {
+ type union {
+ type inet:ip-address;
+ type inet:host-name;
+ }
+ description
+ "The host type represents either an IP address or a (fully
+ qualified) host name.";
+ }
+
+ /*
+ * DISCUSS:
+ * - It was discussed to define int-domain-name and int-host-name
+ * that use U-labels instead of A-labels and to add int-host-name
+ * to the inet:host union, perhaps all gated by an inet:idna-aware
+ * feature.
+ * - It is not clear how inet:idna-aware affects inet:email-address
+ * and inet:uri - do we also need int-uri and int-email-address?
+ */
+
+ 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)";
+ }
+
+ typedef email-address {
+ type string {
+ // dot-atom-text "@" ...
+ pattern '[a-zA-Z0-9!#$%&'+"'"+'*+/=?^_`{|}~-]+'
+ + '(\.[a-zA-Z0-9!#$%&'+"'"+'*+/=?^_`{|}~-]+)*'
+ + '@'
+ + '[a-zA-Z0-9!#$%&'+"'"+'*+/=?^_`{|}~-]+'
+ + '(\.[a-zA-Z0-9!#$%&'+"'"+'*+/=?^_`{|}~-]+)*';
+ }
+ description
+ "The email-address type represents an email address as
+ defined as addr-spec in RFC 5322 section 3.4.1.";
+ reference
+ "RFC 5322: Internet Message Format";
+ }
+
+ /*
+ * DISCUSS:
+ * - Need to define a pattern that has a meaningful trade-off
+ * between precision and complexity (there are very tight
+ * pattern that are very long and complex). The current
+ * pattern does not take care of quoted-string, obs-local-part,
+ * domain-literal, obs-domain.
+ */
+
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-layer1-types@2021-02-19.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-layer1-types@2021-02-19.yang
new file mode 100644
index 0000000..f9b2bb6
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-layer1-types@2021-02-19.yang
@@ -0,0 +1,1185 @@
+module ietf-layer1-types {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-layer1-types";
+ prefix "l1-types";
+
+ organization
+ "IETF CCAMP Working Group";
+ contact
+ "WG Web: <http://tools.ietf.org/wg/ccamp/>
+ WG List: <mailto:ccamp@ietf.org>
+
+ Editor: Haomian Zheng
+ <mailto:zhenghaomian@huawei.com>
+
+ Editor: Italo Busi
+ <mailto:Italo.Busi@huawei.com>";
+
+ description
+ "This module defines Layer 1 types. The model fully conforms
+ to the Network Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision "2021-02-19" {
+ description
+ "Initial Version";
+ reference
+ "RFC XXXX: A YANG Data Model for Layer 1 Types";
+ // RFC Editor: replace XXXX with actual RFC number, update date
+ // information and remove this note
+ }
+
+ /*
+ * Typedefs
+ */
+
+ typedef otn-tpn {
+ type uint16 {
+ range "1..4095";
+ }
+ description
+ "Tributary Port Number for OTN. ";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks.";
+ }
+
+ typedef otn-ts {
+ type uint16 {
+ range "1..4095";
+ }
+ description
+ "Tributary Slot for OTN. ";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks.";
+ }
+
+ typedef otn-label-range-type {
+ type enumeration {
+ enum trib-slot {
+ description
+ "Defines a range of OTN tributary slots. ";
+ }
+ enum trib-port {
+ description
+ "Defines a range of OTN tributary ports. ";
+ }
+ }
+ description
+ "Defines the type of OTN label range: TS or TPN. ";
+ }
+
+ typedef gfp-k {
+ type enumeration {
+ enum 2 {
+ description
+ "The ODU2.ts rate (1,249,177.230 kbit/s) is used
+ to compute the rate of an ODUflex(GFP,n,2). ";
+ }
+ enum 3 {
+ description
+ "The ODU3.ts rate (1,254,470.354 kbit/s) is used
+ to compute the rate of an ODUflex(GFP,n,3). ";
+ }
+ enum 4 {
+ description
+ "The ODU4.ts rate (1,301,467.133 kbit/s) is used
+ to compute the rate of an ODUflex(GFP,n,4). ";
+ }
+ }
+ description
+ "The ODUk.ts used to compute the rate of an ODUflex(GFP,n,k)";
+ reference
+ "ITU-T G.709 v6.0 (06/2020), Table 7-8 and L.7: Interfaces for
+ the Optical Transport Network (OTN)";
+ }
+
+ typedef flexe-client-rate {
+ type union {
+ type uint16;
+ type enumeration {
+ enum "10G" {
+ description
+ "Represents a 10G FlexE Client signal (s=2)";
+ }
+ enum "40G" {
+ description
+ "Represents a 40G FlexE Client signal (s=8)";
+ }
+ }
+ }
+ description
+ "The FlexE Client signal rate (s x 5,156,250.000 kbit/s)
+ used to compute the rate of an ODUflex(IMP, s).
+ Valid values for s are s=2 (10G), s=4 (40G) and
+ s=5 x n (n x 25G).
+ In the first two cases an enumeration value
+ (either 10G or 40G) is used, while in the latter case
+ the value of n is used";
+ reference
+ "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
+ Optical Transport Network (OTN)";
+ }
+
+ /*
+ * Identities
+ */
+
+ identity tributary-slot-granularity {
+ description
+ "Tributary slot granularity";
+ reference
+ "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity tsg-1.25G {
+ base tributary-slot-granularity;
+ description
+ "1.25G tributary slot granularity";
+ }
+
+ identity tsg-2.5G {
+ base tributary-slot-granularity;
+ description
+ "2.5G tributary slot granularity";
+ }
+
+ identity tsg-5G {
+ base tributary-slot-granularity;
+ description
+ "5G tributary slot granularity";
+ }
+
+ identity odu-type {
+ description
+ "Base identity from which specific ODU protocol is derived.";
+ }
+
+ identity ODU0 {
+ base odu-type;
+ description
+ "ODU0 protocol (1.24Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODU1 {
+ base odu-type;
+ description
+ "ODU1 protocol (2.49Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODU1e {
+ base odu-type;
+ description
+ "ODU1e protocol (10.35Gb/s).";
+ reference
+ "RFC7963: RSVP-TE Extension for Additional Signal Types in
+ G.709 Optical Transport Networks (OTNs)
+
+ ITU-T G.sup43 v5.0 (02/2011): Transport of IEEE 10GBASE-R
+ in optical transport networks (OTN)";
+ }
+
+ identity ODU2 {
+ base odu-type;
+ description
+ "ODU2 protocol (10.03Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODU2e {
+ base odu-type;
+ description
+ "ODU2e protocol (10.39Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODU3 {
+ base odu-type;
+ description
+ "ODU3 protocol (40.31Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODU3e1 {
+ base odu-type;
+ description
+ "ODU3e1 protocol (41.77Gb/s).";
+ reference
+ "RFC7963: RSVP-TE Extension for Additional Signal Types in
+ G.709 Optical Transport Networks (OTNs)
+
+ ITU-T G.sup43 v5.0 (02/2011): Transport of IEEE 10GBASE-R
+ in optical transport networks (OTN)";
+ }
+
+ identity ODU3e2 {
+ base odu-type;
+ description
+ "ODU3e2 protocol (41.78Gb/s).";
+ reference
+ "RFC7963: RSVP-TE Extension for Additional Signal Types in
+ G.709 Optical Transport Networks (OTNs)
+
+ ITU-T G.sup43 v5.0 (02/2011): Transport of IEEE 10GBASE-R
+ in optical transport networks (OTN)";
+ }
+
+ identity ODU4 {
+ base odu-type;
+ description
+ "ODU4 protocol (104.79Gb/s).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODUflex {
+ base odu-type;
+ description
+ "ODUflex protocol (flexibile bit rate, not resizable).
+
+ It could be used for any type of ODUflex, including
+ ODUflex(CBR), ODUflex(GFP), ODUflex(GFP,n,k), ODUflex(IMP,s),
+ ODUflex(IMP) and ODUflex(FlexE-aware).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ODUflex-resizable {
+ base odu-type;
+ description
+ "ODUflex protocol (flexibile bit rate, resizable).
+
+ It could be used only for ODUflex(GFP,n,k).";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity protocol {
+ description
+ "Base identity from which specific protocol is derived.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity Ethernet {
+ base protocol;
+ description
+ "Ethernet protocol.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity Fibre-Channel {
+ base protocol;
+ description
+ "Fibre-Channel (FC) protocol.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity SDH {
+ base protocol;
+ description
+ "SDH protocol.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity SONET {
+ base protocol;
+ description
+ "SONET protocol.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity client-signal {
+ description
+ "Base identity from which specific client signal is derived";
+ }
+
+ identity coding-func {
+ description
+ "Base identity from which specific coding function
+ is derived.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ETH-1Gb {
+ base client-signal;
+ description
+ "Client signal type of 1GbE";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ETH-10Gb-LAN {
+ base client-signal;
+ description
+ "Client signal type of ETH-10Gb-LAN (10.3 Gb/s)";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ IEEE 802.3-2018, Clause 49: IEEE Standard for Ethernet";
+ }
+
+ identity ETH-10Gb-WAN {
+ base client-signal;
+ description
+ "Client signal type of ETH-10Gb-WAN (9.95 Gb/s)";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ IEEE 802.3-2018, Clause 50: IEEE Standard for Ethernet";
+ }
+
+ identity ETH-40Gb {
+ base client-signal;
+ description
+ "Client signal type of 40GbE";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ETH-100Gb {
+ base client-signal;
+ description
+ "Client signal type of 100GbE";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity STM-1 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of STM-1;
+ STM-1 G.707 (N=1) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity STM-4 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of STM-4;
+ STM-4 G.707 (N=4) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity STM-16 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of STM-16;
+ STM-16 G.707 (N=16) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity STM-64 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of STM-64;
+ STM-64 G.707 (N=64) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity STM-256 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of STM-256;
+ STM-256 G.707 (N=256) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity OC-3 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of OC3;
+ OC-3 GR-253-CORE (N=3) coding function.";
+ reference
+ "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+ Basic Description including Multiplex Structure, Rates,
+ and Formats
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity OC-12 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of OC12;
+ OC-12 GR-253-CORE (N=12) coding function.";
+ reference
+ "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+ Basic Description including Multiplex Structure, Rates,
+ and Formats
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity OC-48 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of OC48;
+ OC-48 GR-253-CORE (N=48) coding function.";
+ reference
+ "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+ Basic Description including Multiplex Structure, Rates,
+ and Formats
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity OC-192 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of OC192;
+ OC-192 GR-253-CORE (N=192) coding function.";
+ reference
+ "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+ Basic Description including Multiplex Structure, Rates,
+ and Formats
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity OC-768 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of OC768;
+ OC-768 GR-253-CORE (N=768) coding function.";
+ reference
+ "ANSI T1.105-1995: Synchronous Optical Network (SONET)
+ Basic Description including Multiplex Structure, Rates,
+ and Formats
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-100 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-100;
+ FC-100 FC-FS-2 (1.0625 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-200 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-200;
+ FC-200 FC-FS-2 (2.125 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-400 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-400;
+ FC-400 FC-FS-2 (4.250 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-800 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-800;
+ FC-800 FC-FS-2 (8.500 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-1200 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-1200;
+ FC-1200 FC-10GFC (10.51875 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-1600 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-1600;
+ FC-1600 FC-FS-3 (14.025 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FC-3200 {
+ base client-signal;
+ //base coding-func;
+ description
+ "Client signal type of Fibre Channel FC-3200;
+ FC-3200 FC-FS-4 (28.05 Gb/s) coding function.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)
+
+ MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FICON-4G {
+ base client-signal;
+ description
+ "Client signal type of Fibre Connection 4G";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity FICON-8G {
+ base client-signal;
+ description
+ "Client signal type of Fibre Connection 8G";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks
+
+ ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+
+ identity ETH-1000X {
+ base coding-func;
+ description
+ "1000BASE-X PCS clause 36 coding function.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ETH-10GW {
+ base coding-func;
+ description
+ "10GBASE-W (WAN PHY) PCS clause 49 and WIS clause 50
+ coding function.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ETH-10GR {
+ base coding-func;
+ description
+ "10GBASE-R (LAN PHY) PCS clause 49 coding function.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ETH-40GR {
+ base coding-func;
+ description
+ "40GBASE-R PCS clause 82 coding function.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ETH-100GR {
+ base coding-func;
+ description
+ "100GBASE-R PCS clause 82 coding function.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity optical-interface-func {
+ description
+ "Base identity from which optical-interface-function
+ is derived.";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity SX-PMD-1000 {
+ base optical-interface-func;
+ description
+ "SX-PMD-clause-38 Optical Interface function for
+ 1000BASE-X PCS-36";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LX-PMD-1000 {
+ base optical-interface-func;
+ description
+ "LX-PMD-clause-38 Optical Interface function for
+ 1000BASE-X PCS-36";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LX10-PMD-1000 {
+ base optical-interface-func;
+ description
+ "LX10-PMD-clause-59 Optical Interface function for
+ 1000BASE-X PCS-36";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity BX10-PMD-1000 {
+ base optical-interface-func;
+ description
+ "BX10-PMD-clause-59 Optical Interface function for
+ 1000BASE-X PCS-36";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LW-PMD-10G {
+ base optical-interface-func;
+ description
+ "LW-PMD-clause-52 Optical Interface function for
+ 10GBASE-W PCS-49-WIS-50";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity EW-PMD-10G {
+ base optical-interface-func;
+ description
+ "EW-PMD-clause-52 Optical Interface function for
+ 10GBASE-W PCS-49-WIS-50";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LR-PMD-10G {
+ base optical-interface-func;
+ description
+ "LR-PMD-clause-52 Optical Interface function for
+ 10GBASE-R PCS-49";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ER-PMD-10G {
+ base optical-interface-func;
+ description
+ "ER-PMD-clause-52 Optical Interface function for
+ 10GBASE-R PCS-49";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LR4-PMD-40G {
+ base optical-interface-func;
+ description
+ "LR4-PMD-clause-87 Optical Interface function for
+ 40GBASE-R PCS-82";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ER4-PMD-40G {
+ base optical-interface-func;
+ description
+ "ER4-PMD-clause-87 Optical Interface function for
+ 40GBASE-R PCS-82";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity FR-PMD-40G {
+ base optical-interface-func;
+ description
+ "FR-PMD-clause-89 Optical Interface function for
+ 40GBASE-R PCS-82";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity LR4-PMD-100G {
+ base optical-interface-func;
+ description
+ "LR4-PMD-clause-88 Optical Interface function for
+ 100GBASE-R PCS-82";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ identity ER4-PMD-100G {
+ base optical-interface-func;
+ description
+ "ER4-PMD-clause-88 Optical Interface function for
+ 100GBASE-R PCS-82";
+ reference
+ "MEF63: Subscriber Layer 1 Service Attributes";
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping otn-link-bandwidth {
+ description
+ "Bandwidth attributes for OTN links";
+ list odulist {
+ key "odu-type";
+ description
+ "OTN bandwidth definition";
+ leaf odu-type {
+ type identityref {
+ base odu-type;
+ }
+ description "ODU type";
+ }
+ leaf number {
+ type uint16;
+ description "Number of ODUs";
+ }
+ }
+ }
+
+ grouping otn-path-bandwidth {
+ description
+ "Bandwidth attributes for OTN paths.";
+ container otn {
+ description
+ "Bandwidth attributes for OTN paths.";
+ leaf odu-type {
+ type identityref {
+ base odu-type;
+ }
+ description "ODU type";
+ }
+ choice oduflex-type {
+ when 'derived-from-or-self(./odu-type,"ODUflex") or
+ derived-from-or-self(./odu-type,"ODUflex-resizable")'{
+ description
+ "Applicable when odu-type is ODUflex or
+ ODUflex-resizable";
+ }
+ description
+ "Types of ODUflex used to compute the ODUflex
+ nominal bit rate.";
+ reference
+ "ITU-T G.709 v6.0 (06/2020), Table 7-2: Interfaces for the
+ Optical Transport Network (OTN)";
+ case generic {
+ leaf nominal-bit-rate {
+ type uint64;
+ units "bps";
+ mandatory true;
+ description
+ "Nominal ODUflex bit rate.";
+ }
+ }
+ case cbr {
+ leaf client-type {
+ type identityref {
+ base client-signal;
+ }
+ mandatory true;
+ description
+ "The CBR client signal for an ODUflex(CBR).";
+ }
+ }
+ case gfp-n-k {
+ leaf gfp-n {
+ type uint8 {
+ range "1..80";
+ }
+ mandatory true;
+ description
+ "The value of n for an ODUflex(GFP,n,k).";
+ reference
+ "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
+ Interfaces for the Optical Transport Network (OTN)";
+ }
+ leaf gfp-k {
+ type gfp-k;
+ description
+ "The value of k for an ODUflex(GFP,n,k).
+
+ If omitted, it is calculated from the value of gfp-n
+ as described in Table 7-8 of G.709";
+ reference
+ "ITU-T G.709 v6.0 (06/2020), Tables 7-8 and L.7:
+ Interfaces for the Optical Transport Network (OTN)";
+ }
+ }
+ case flexe-client {
+ leaf flexe-client {
+ type flexe-client-rate;
+ mandatory true;
+ description
+ "The rate of the FlexE-client for an ODUflex(IMP,s).";
+ }
+ }
+ case flexe-aware {
+ leaf flexe-aware-n {
+ type uint16;
+ mandatory true;
+ description
+ "The rate of FlexE-aware client signal
+ for ODUflex(FlexE-aware)";
+ }
+ }
+ case packet {
+ leaf opuflex-payload-rate {
+ type uint64;
+ units "Kbps";
+ mandatory true;
+ description
+ "Either the GFP-F encapsulated packet client nominal
+ bit rate for an ODUflex(GFP) or the 64b/66b encoded
+ packet client nominal bit rate for an ODUflex(IMP).";
+ }
+ }
+ }
+ }
+ }
+
+ grouping otn-label-range-info {
+ description
+ "Label range information for OTN.
+
+ This grouping should be used together with the
+ otn-label-start-end and otn-label-step groupings to provide
+ OTN technology-specific label information to the models which
+ use the label-restriction-info grouping defined in the module
+ ietf-te-types.";
+ leaf range-type {
+ type otn-label-range-type;
+ description "The type of range (e.g., TPN or TS)
+ to which the label range applies";
+ }
+ leaf tsg {
+ type identityref {
+ base tributary-slot-granularity;
+ }
+ description
+ "Tributary slot granularity (TSG) to which the label range
+ applies.
+
+ This leaf shall be present when the range-type is TS.
+
+ This leaf can be omitted when mapping an ODUk over an OTUk
+ Link. In this case the range-type is tpn, with only one
+ entry (ODUk), and the tpn range has only one value (1).";
+ reference
+ "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+ leaf-list odu-type-list {
+ type identityref {
+ base odu-type;
+ }
+ description
+ "List of ODU types to which the label range applies.
+
+ An Empty odu-type-list means that the label range
+ applies to all the supported ODU types.";
+ }
+ leaf priority {
+ type uint8;
+ description
+ "Priority in Interface Switching Capability
+ Descriptor (ISCD).";
+ reference
+ "RFC4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ }
+ }
+
+ grouping otn-label-start-end {
+ description
+ "The OTN label-start or label-end used to specify an OTN label
+ range.
+
+ This grouping is dependent on the range-type defined in the
+ otn-label-range-info grouping.
+
+ This grouping should be used together with the
+ otn-label-range-info and otn-label-step groupings to provide
+ OTN technology-specific label information to the models which
+ use the label-restriction-info grouping defined in the module
+ ietf-te-types.";
+ choice range-type {
+ description
+ "OTN label range type, either TPN range or TS range";
+ case trib-port {
+ leaf otn-tpn {
+ when "../../../range-type = 'trib-port'" {
+ description
+ "Valid only when range-type represented by trib-port";
+ }
+ type otn-tpn;
+ description
+ "Tributary Port Number.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of
+ Evolving G.709 Optical Transport Networks.";
+ }
+ }
+ case trib-slot {
+ leaf otn-ts {
+ when "../../../range-type = 'trib-slot'" {
+ description
+ "Valid only when range-type represented by trib-slot";
+ }
+ type otn-ts;
+ description
+ "Tributary Slot Number.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of
+ Evolving G.709 Optical Transport Networks";
+ }
+ }
+ }
+ }
+
+ grouping otn-label-hop {
+ description "OTN Label";
+ reference
+ "RFC7139, section 6: GMPLS Signaling Extensions for Control of
+ Evolving G.709 Optical Transport Networks";
+ leaf otn-tpn {
+ type otn-tpn;
+ description
+ "Tributary Port Number.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of Evolving
+ G.709 Optical Transport Networks.";
+ }
+ leaf tsg {
+ type identityref {
+ base tributary-slot-granularity;
+ }
+ description "Tributary slot granularity.";
+ reference
+ "ITU-T G.709 v6.0 (06/2020): Interfaces for the Optical
+ Transport Network (OTN)";
+ }
+ leaf ts-list {
+ type string {
+ pattern "([1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?"
+ + "(,[1-9][0-9]{0,3}(-[1-9][0-9]{0,3})?)*)";
+ }
+ description
+ "A list of available tributary slots ranging
+ between 1 and 4095. If multiple values or
+ ranges are given, they all must be disjoint
+ and must be in ascending order.
+ For example 1-20,25,50-1000.";
+ reference
+ "RFC 7139: GMPLS Signaling Extensions for Control
+ of Evolving G.709 Optical Transport Networks";
+ }
+ }
+
+ grouping otn-label-step {
+ description
+ "Label step for OTN.
+
+ This grouping is dependent on the range-type defined in the
+ otn-label-range-info grouping.
+
+ This grouping should be used together with the
+ otn-label-range-info and otn-label-start-end groupings to
+ provide OTN technology-specific label information to the models
+ which use the label-restriction-info grouping defined in the
+ module ietf-te-types.";
+ choice range-type {
+ description
+ "OTN label range type, either TPN range or TS range";
+ case trib-port {
+ leaf otn-tpn {
+ when "../../range-type = 'trib-port'" {
+ description
+ "Valid only when range-type represented by trib-port";
+ }
+ type otn-tpn;
+ description
+ "Label step which represents possible increments for
+ Tributary Port Number.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of
+ Evolving G.709 Optical Transport Networks.";
+ }
+ }
+ case trib-slot {
+ leaf otn-ts {
+ when "../../range-type = 'trib-slot'" {
+ description
+ "Valid only when range-type represented by trib-slot";
+ }
+ type otn-ts;
+ description
+ "Label step which represents possible increments for
+ Tributary Slot Number.";
+ reference
+ "RFC7139: GMPLS Signaling Extensions for Control of
+ Evolving G.709 Optical Transport Networks.";
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-network-state@2018-02-26.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-network-state@2018-02-26.yang
new file mode 100644
index 0000000..d84a103
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-network-state@2018-02-26.yang
@@ -0,0 +1,176 @@
+module ietf-network-state {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-state";
+ prefix nw-s;
+
+ import ietf-network {
+ prefix nw;
+ //reference
+ // "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+ description
+ "This module defines a common base data model for a collection
+ of nodes in a network. Node definitions are further used
+ in network topologies and inventories. It represents
+ information that either (1) is learned and automatically
+ populated or (2) results from applying network information
+ that has been configured per the 'ietf-network' data model,
+ mirroring the corresponding data nodes in this data model.
+
+ The data model mirrors 'ietf-network' but contains only
+ read-only state data. The data model is not needed when the
+ underlying implementation infrastructure supports the Network
+ Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2018 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ grouping network-ref {
+ description
+ "Contains the information necessary to reference a network --
+ for example, an underlay network.";
+ leaf network-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:network-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a network -- for example, an underlay
+ network.";
+ }
+ }
+
+ grouping node-ref {
+ description
+ "Contains the information necessary to reference a node.";
+ leaf node-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a node.
+ Nodes are identified relative to the network that
+ contains them.";
+ }
+ uses network-ref;
+ }
+
+ container networks {
+ config false;
+ description
+ "Serves as a top-level container for a list of networks.";
+ list network {
+ key "network-id";
+ description
+ "Describes a network.
+ A network typically contains an inventory of nodes,
+ topological information (augmented through the
+ network-topology data model), and layering information.";
+ container network-types {
+ description
+ "Serves as an augmentation target.
+ The network type is indicated through corresponding
+ presence containers augmented into this container.";
+ }
+ leaf network-id {
+ type nw:network-id;
+ description
+ "Identifies a network.";
+ }
+ list supporting-network {
+ key "network-ref";
+ description
+ "An underlay network, used to represent layered network
+ topologies.";
+ leaf network-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:network-id";
+ require-instance false;
+ }
+ description
+ "References the underlay network.";
+ }
+ }
+
+ list node {
+ key "node-id";
+ description
+ "The inventory of nodes of this network.";
+ leaf node-id {
+ type nw:node-id;
+ description
+ "Uniquely identifies a node within the containing
+ network.";
+ }
+ list supporting-node {
+ key "network-ref node-ref";
+ description
+ "Represents another node that is in an underlay network
+ and that supports this node. Used to represent layering
+ structure.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-network/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "References the underlay network of which the
+ underlay node is a part.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network/nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "References the underlay node itself.";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology-state@2018-02-26.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology-state@2018-02-26.yang
new file mode 100644
index 0000000..4cb9e88
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology-state@2018-02-26.yang
@@ -0,0 +1,273 @@
+module ietf-network-topology-state {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology-state";
+ prefix nt-s;
+
+ import ietf-network-state {
+ prefix nw-s;
+ //reference
+ // "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ import ietf-network-topology {
+ prefix nt;
+ //reference
+ // "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+ description
+ "This module defines a common base data model for network
+ topology state, representing topology that either (1) is learned
+ or (2) results from applying topology that has been configured
+ per the 'ietf-network-topology' data model, mirroring the
+ corresponding data nodes in this data model. It augments the
+ base network state data model with links to connect nodes, as
+ well as termination points to terminate links on nodes.
+
+ The data model mirrors 'ietf-network-topology' but contains only
+ read-only state data. The data model is not needed when the
+ underlying implementation infrastructure supports the Network
+ Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2018 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ grouping link-ref {
+ description
+ "References a link in a specific network. Although this
+ grouping is not used in this module, it is defined here for
+ the convenience of augmenting modules.";
+ leaf link-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nt-s:link/nt-s:link-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a link instance.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw-s:network-ref;
+ }
+
+ grouping tp-ref {
+ description
+ "References a termination point in a specific node. Although
+ this grouping is not used in this module, it is defined here
+ for the convenience of augmenting modules.";
+ leaf tp-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id=current()"+
+ "/../network-ref]/nw-s:node[nw-s:node-id=current()/../"+
+ "node-ref]/nt-s:termination-point/nt-s:tp-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a termination point.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw-s:node-ref;
+ }
+
+ augment "/nw-s:networks/nw-s:network" {
+ description
+ "Add links to the network data model.";
+ list link {
+ key "link-id";
+ description
+ "A network link connects a local (source) node and
+ a remote (destination) node via a set of the respective
+ node's termination points. It is possible to have several
+ links between the same source and destination nodes.
+ Likewise, a link could potentially be re-homed between
+ termination points. Therefore, in order to ensure that we
+ would always know to distinguish between links, every link
+ is identified by a dedicated link identifier. Note that a
+ link models a point-to-point link, not a multipoint link.";
+ container source {
+ description
+ "This container holds the logical source of a particular
+ link.";
+ leaf source-node {
+ type leafref {
+ path "../../../nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Source node identifier. Must be in the same topology.";
+ }
+ leaf source-tp {
+ type leafref {
+ path "../../../nw-s:node[nw-s:node-id=current()/../"+
+ "source-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the source node
+ and terminates the link.";
+ }
+ }
+ container destination {
+ description
+ "This container holds the logical destination of a
+ particular link.";
+ leaf dest-node {
+ type leafref {
+ path "../../../nw-s:node/nw-s:node-id";
+ require-instance false;
+ }
+ description
+ "Destination node identifier. Must be in the same
+ network.";
+ }
+
+ leaf dest-tp {
+ type leafref {
+ path "../../../nw-s:node[nw-s:node-id=current()/../"+
+ "dest-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the
+ destination node and terminates the link.";
+ }
+ }
+ leaf link-id {
+ type nt:link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ list supporting-link {
+ key "network-ref link-ref";
+ description
+ "Identifies the link or links on which this link depends.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-network/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which underlay topology
+ the supporting link is present.";
+ }
+ leaf link-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id="+
+ "current()/../network-ref]/link/link-id";
+ require-instance false;
+ }
+ description
+ "This leaf identifies a link that is a part
+ of this link's underlay. Reference loops in which
+ a link identifies itself as its underlay, either
+ directly or transitively, are not allowed.";
+ }
+ }
+ }
+ }
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node" {
+ description
+ "Augments termination points that terminate links.
+ Termination points can ultimately be mapped to interfaces.";
+ list termination-point {
+ key "tp-id";
+ description
+ "A termination point can terminate a link.
+ Depending on the type of topology, a termination point
+ could, for example, refer to a port or an interface.";
+ leaf tp-id {
+ type nt:tp-id;
+ description
+ "Termination point identifier.";
+ }
+ list supporting-termination-point {
+ key "network-ref node-ref tp-ref";
+ description
+ "This list identifies any termination points on which a
+ given termination point depends or onto which it maps.
+ Those termination points will themselves be contained
+ in a supporting node. This dependency information can be
+ inferred from the dependencies between links. Therefore,
+ this item is not separately configurable. Hence, no
+ corresponding constraint needs to be articulated.
+ The corresponding information is simply provided by the
+ implementing system.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw-s:supporting-node/nw-s:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which topology the
+ supporting termination point is present.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "../../../nw-s:supporting-node/nw-s:node-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which node the supporting
+ termination point is present.";
+ }
+
+ leaf tp-ref {
+ type leafref {
+ path "/nw-s:networks/nw-s:network[nw-s:network-id="+
+ "current()/../network-ref]/nw-s:node[nw-s:node-id="+
+ "current()/../node-ref]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node (the underlay node must
+ be in a different topology).";
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology@2018-02-26.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology@2018-02-26.yang
new file mode 100644
index 0000000..c77eac6
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-network-topology@2018-02-26.yang
@@ -0,0 +1,294 @@
+module ietf-network-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
+ prefix nt;
+
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-network {
+ prefix nw;
+ //reference
+ // "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+
+ description
+ "This module defines a common base model for a network topology,
+ augmenting the base network data model with links to connect
+ nodes, as well as termination points to terminate links
+ on nodes.
+
+ Copyright (c) 2018 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ typedef link-id {
+ type inet:uri;
+ description
+ "An identifier for a link in a topology. The precise
+ structure of the link-id will be up to the implementation.
+ The identifier SHOULD be chosen such that the same link in a
+ real network topology will always be identified through the
+ same identifier, even if the data model is instantiated in
+ separate datastores. An implementation MAY choose to capture
+ semantics in the identifier -- for example, to indicate the
+ type of link and/or the type of topology of which the link is
+ a part.";
+ }
+
+ typedef tp-id {
+ type inet:uri;
+ description
+ "An identifier for termination points on a node. The precise
+ structure of the tp-id will be up to the implementation.
+ The identifier SHOULD be chosen such that the same termination
+ point in a real network topology will always be identified
+ through the same identifier, even if the data model is
+ instantiated in separate datastores. An implementation MAY
+ choose to capture semantics in the identifier -- for example,
+ to indicate the type of termination point and/or the type of
+ node that contains the termination point.";
+ }
+
+ grouping link-ref {
+ description
+ "This grouping can be used to reference a link in a specific
+ network. Although it is not used in this module, it is
+ defined here for the convenience of augmenting modules.";
+ leaf link-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nt:link/nt:link-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a link instance.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw:network-ref;
+ }
+
+ grouping tp-ref {
+ description
+ "This grouping can be used to reference a termination point
+ in a specific node. Although it is not used in this module,
+ it is defined here for the convenience of augmenting
+ modules.";
+ leaf tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nw:node[nw:node-id=current()/../"+
+ "node-ref]/nt:termination-point/nt:tp-id";
+ require-instance false;
+ }
+ description
+ "A type for an absolute reference to a termination point.
+ (This type should not be used for relative references.
+ In such a case, a relative path should be used instead.)";
+ }
+ uses nw:node-ref;
+ }
+
+ augment "/nw:networks/nw:network" {
+ description
+ "Add links to the network data model.";
+ list link {
+ key "link-id";
+ description
+ "A network link connects a local (source) node and
+ a remote (destination) node via a set of the respective
+ node's termination points. It is possible to have several
+ links between the same source and destination nodes.
+ Likewise, a link could potentially be re-homed between
+ termination points. Therefore, in order to ensure that we
+ would always know to distinguish between links, every link
+ is identified by a dedicated link identifier. Note that a
+ link models a point-to-point link, not a multipoint link.";
+ leaf link-id {
+ type link-id;
+ description
+ "The identifier of a link in the topology.
+ A link is specific to a topology to which it belongs.";
+ }
+ container source {
+ description
+ "This container holds the logical source of a particular
+ link.";
+ leaf source-node {
+ type leafref {
+ path "../../../nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Source node identifier. Must be in the same topology.";
+ }
+ leaf source-tp {
+ type leafref {
+ path "../../../nw:node[nw:node-id=current()/../"+
+ "source-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the source node
+ and terminates the link.";
+ }
+ }
+
+ container destination {
+ description
+ "This container holds the logical destination of a
+ particular link.";
+ leaf dest-node {
+ type leafref {
+ path "../../../nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Destination node identifier. Must be in the same
+ network.";
+ }
+ leaf dest-tp {
+ type leafref {
+ path "../../../nw:node[nw:node-id=current()/../"+
+ "dest-node]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "This termination point is located within the
+ destination node and terminates the link.";
+ }
+ }
+ list supporting-link {
+ key "network-ref link-ref";
+ description
+ "Identifies the link or links on which this link depends.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-network/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which underlay topology
+ the supporting link is present.";
+ }
+
+ leaf link-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/"+
+ "../network-ref]/link/link-id";
+ require-instance false;
+ }
+ description
+ "This leaf identifies a link that is a part
+ of this link's underlay. Reference loops in which
+ a link identifies itself as its underlay, either
+ directly or transitively, are not allowed.";
+ }
+ }
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node" {
+ description
+ "Augments termination points that terminate links.
+ Termination points can ultimately be mapped to interfaces.";
+ list termination-point {
+ key "tp-id";
+ description
+ "A termination point can terminate a link.
+ Depending on the type of topology, a termination point
+ could, for example, refer to a port or an interface.";
+ leaf tp-id {
+ type tp-id;
+ description
+ "Termination point identifier.";
+ }
+ list supporting-termination-point {
+ key "network-ref node-ref tp-ref";
+ description
+ "This list identifies any termination points on which a
+ given termination point depends or onto which it maps.
+ Those termination points will themselves be contained
+ in a supporting node. This dependency information can be
+ inferred from the dependencies between links. Therefore,
+ this item is not separately configurable. Hence, no
+ corresponding constraint needs to be articulated.
+ The corresponding information is simply provided by the
+ implementing system.";
+
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-node/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which topology the
+ supporting termination point is present.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "../../../nw:supporting-node/nw:node-ref";
+ require-instance false;
+ }
+ description
+ "This leaf identifies in which node the supporting
+ termination point is present.";
+ }
+ leaf tp-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/"+
+ "../network-ref]/nw:node[nw:node-id=current()/../"+
+ "node-ref]/termination-point/tp-id";
+ require-instance false;
+ }
+ description
+ "Reference to the underlay node (the underlay node must
+ be in a different topology).";
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-network@2018-02-26.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-network@2018-02-26.yang
new file mode 100644
index 0000000..91186b3
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-network@2018-02-26.yang
@@ -0,0 +1,192 @@
+module ietf-network {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-network";
+ prefix nw;
+
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "IETF I2RS (Interface to the Routing System) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/i2rs/>
+ WG List: <mailto:i2rs@ietf.org>
+
+ Editor: Alexander Clemm
+ <mailto:ludwig@clemm.org>
+
+ Editor: Jan Medved
+ <mailto:jmedved@cisco.com>
+
+ Editor: Robert Varga
+ <mailto:robert.varga@pantheon.tech>
+
+ Editor: Nitin Bahadur
+ <mailto:nitin_bahadur@yahoo.com>
+
+ Editor: Hariharan Ananthakrishnan
+ <mailto:hari@packetdesign.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>";
+ description
+ "This module defines a common base data model for a collection
+ of nodes in a network. Node definitions are further used
+ in network topologies and inventories.
+
+ Copyright (c) 2018 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8345;
+ see the RFC itself for full legal notices.";
+
+ revision 2018-02-26 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ typedef node-id {
+ type inet:uri;
+ description
+ "Identifier for a node. The precise structure of the node-id
+ will be up to the implementation. For example, some
+ implementations MAY pick a URI that includes the network-id
+ as part of the path. The identifier SHOULD be chosen
+ such that the same node in a real network topology will
+ always be identified through the same identifier, even if
+ the data model is instantiated in separate datastores. An
+ implementation MAY choose to capture semantics in the
+ identifier -- for example, to indicate the type of node.";
+ }
+
+ typedef network-id {
+ type inet:uri;
+ description
+ "Identifier for a network. The precise structure of the
+ network-id will be up to the implementation. The identifier
+ SHOULD be chosen such that the same network will always be
+ identified through the same identifier, even if the data model
+ is instantiated in separate datastores. An implementation MAY
+ choose to capture semantics in the identifier -- for example,
+ to indicate the type of network.";
+ }
+
+ grouping network-ref {
+ description
+ "Contains the information necessary to reference a network --
+ for example, an underlay network.";
+ leaf network-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:network-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a network -- for example, an underlay
+ network.";
+ }
+ }
+
+ grouping node-ref {
+ description
+ "Contains the information necessary to reference a node.";
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network[nw:network-id=current()/../"+
+ "network-ref]/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "Used to reference a node.
+ Nodes are identified relative to the network that
+ contains them.";
+ }
+ uses network-ref;
+ }
+
+ container networks {
+ description
+ "Serves as a top-level container for a list of networks.";
+ list network {
+ key "network-id";
+ description
+ "Describes a network.
+ A network typically contains an inventory of nodes,
+ topological information (augmented through the
+ network-topology data model), and layering information.";
+ leaf network-id {
+ type network-id;
+ description
+ "Identifies a network.";
+ }
+ container network-types {
+ description
+ "Serves as an augmentation target.
+ The network type is indicated through corresponding
+ presence containers augmented into this container.";
+ }
+ list supporting-network {
+ key "network-ref";
+ description
+ "An underlay network, used to represent layered network
+ topologies.";
+ leaf network-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:network-id";
+ require-instance false;
+ }
+ description
+ "References the underlay network.";
+ }
+ }
+
+ list node {
+ key "node-id";
+ description
+ "The inventory of nodes of this network.";
+ leaf node-id {
+ type node-id;
+ description
+ "Uniquely identifies a node within the containing
+ network.";
+ }
+ list supporting-node {
+ key "network-ref node-ref";
+ description
+ "Represents another node that is in an underlay network
+ and that supports this node. Used to represent layering
+ structure.";
+ leaf network-ref {
+ type leafref {
+ path "../../../nw:supporting-network/nw:network-ref";
+ require-instance false;
+ }
+ description
+ "References the underlay network of which the
+ underlay node is a part.";
+ }
+ leaf node-ref {
+ type leafref {
+ path "/nw:networks/nw:network/nw:node/nw:node-id";
+ require-instance false;
+ }
+ description
+ "References the underlay node itself.";
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-optical-slice@2020-08-21.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-optical-slice@2020-08-21.yang
new file mode 100644
index 0000000..ce6c793
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-optical-slice@2020-08-21.yang
@@ -0,0 +1,952 @@
+module ietf-optical-slice {
+ yang-version 1.1;
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-optical-slice";
+ prefix "otnslice";
+
+ import ietf-inet-types {
+ prefix inet;
+/* reference
+ "RFC 6991: Common YANG Data Types"; */
+ }
+
+ import ietf-network {
+ prefix "nw";
+ }
+
+ import ietf-network-topology {
+ prefix "nt";
+ }
+
+ import ietf-te-topology {
+ prefix "tet";
+ }
+
+ import ietf-te-types {
+ prefix "te-types";
+ }
+
+ import ietf-te {
+ prefix "te";
+ }
+
+ import ietf-otn-topology {
+ prefix "otntopo";
+ }
+
+ import ietf-layer1-types {
+ prefix "layer1-types";
+ }
+
+ import ietf-eth-tran-service {
+ prefix "ethtsvc";
+ }
+
+ revision "2020-08-21" {
+ description
+ "Initial revision.";
+ reference
+ "RFC XXXX, optical slice";
+ }
+
+ typedef slice-id {
+ type string;
+ description
+ "An identifier for optical slice inside otn network. The precise
+ structure of the slice-id will be up to the implementation.";
+ }
+
+ /*** Groupings **/
+
+ /*** grouping otn-slice-link-bandwidth {
+ list slicelist {
+ key "slice-id";
+ description
+ "OTN slice id";
+ leaf slice-id {
+ type slice-id;
+ description
+ "Tunnel termination point identifier.";
+ }
+ leaf odu0-number {
+ type uint16;
+ description "Number of ODU0s";
+ }
+ }
+ } **/
+
+ grouping ts-slice-info {
+ description "The slice information on specific TS. ";
+ reference "RFC7139, section 6. ";
+ leaf ts-slice-map {
+ type string;
+ description
+ "Used together with ts-list to indicate if a set of TS
+ belongs to any existing optical slices. For example,
+ '1-8, slice 1; 41-80, slice 2.' ";
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te" {
+ when "../../../nw:network-types/tet:te-topology/otntopo:otn-topology
+ or ../../../nw:network-types/tet:te-topology/ethtetopo:eth-tran-topology" {
+ description "Augment the slice IDonly for otn network";
+ }
+ leaf-list slice-id-list {
+ type string;
+ description
+ "List of The slice that the TP belongs.";
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path
+ * of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+ /* Augment TS Slice info of underlay backup path
+ * of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of connectivity-matrices */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology"{
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path of
+ * connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of
+ * connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of connectivity-matrix */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of
+ * connectivity-matrices information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of
+ * connectivity-matrix information-source */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path
+ * of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path
+ * of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of
+ * local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of local-link-connectivities */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path
+ * of local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-exclude of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of route-include of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of path-route of
+ * local-link-connectivity (LLC) */
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of TE link */
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay primary path of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+*/
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment TS Slice info of underlay backup path of TE link template */
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+/*
+ when "../../../../../../../../../../nw:network-types/"
+ + "tet:te-topology/otntopo:otn-topology" {
+ description "Augment OTN TE label";
+ }
+*/
+ description "OTN label.";
+ case otn {
+ uses ts-slice-info;
+ }
+ }
+
+ /* Augment maximum bandwidth of TE link */
+ /* augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/te-types:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "OTN TE bandwidth.";
+ }
+ description "OTN bandwidth with slicelist info.";
+ case otnslice {
+ uses layer1-types:otn-link-bandwidth;
+ uses otn-slice-link-bandwidth;
+ }
+ }*/
+
+ /* Augment unreserved bandwidth of TE Link */
+ /* augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "OTN TE bandwidth.";
+ }
+ case otn {
+ uses layer1-types:otn-link-bandwidth;
+ uses otn-slice-link-bandwidth;
+ }
+ }
+*/
+
+/* Augment te/tunnels/tunnel */
+augment "/te:te/te:tunnels/te:tunnel" {
+ description
+ "Augment with additional parameters required for optical slice";
+ leaf slice-id {
+ description
+ "SliceId if this otn tunnel belongs to a specific otn slice";
+ type string;
+ }
+}
+
+/* Augment etht-svc/etht-svc-instances */
+augment "/ethtsvc:etht-svc/ethtsvc:etht-svc-instances" {
+ description
+ "Augment with additional parameters required for optical slice";
+ leaf slice-id {
+ description
+ "SliceId if this ethernet service belongs to a specific slice";
+ type string;
+ }
+}
+
+rpc deallocate-optical-slice{
+ description
+ "Remove transport slice in OTN-based optical networks. Assume that all the tunnels on
+ this slice are deactivate.";
+ input {
+ leaf slice-id{
+ type slice-id;
+ description
+ "The identifier of the deactivating slice.";
+ }
+ }
+
+ output {
+ list transport-slice-list {
+ description
+ "The output of this RPC. ";
+ key "slice-id";
+ leaf slice-id {
+ mandatory true;
+ type slice-id;
+ description
+ "The identifier of the reported slice.";
+ }
+ leaf result {
+ type enumeration {
+ enum success {
+ description
+ "Success.";
+ }
+ enum failure-error {
+ description
+ "Failure because of input error.";
+ }
+ enum failure-resource {
+ description
+ "Failure because of resources utilization.";
+ }
+ }
+ }
+ }
+ }
+}
+rpc create-optical-slice {
+ description
+ "Create transport slice in OTN-based optical networks. ";
+
+ input {
+ list otn-tunnel-list {
+ key "tunnel-name";
+ description
+ "The request list of tunnel(s) in the slice.";
+ leaf tunnel-name {
+ mandatory true;
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:name";
+ }
+ description "The name of tunnel.";
+ }
+
+ leaf source {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:source";
+ }
+ description
+ "Specified source node for the requested slice.";
+ }
+
+ leaf destination {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:destination";
+ }
+ description
+ "Specified destination node for the requested slice.";
+ }
+
+ leaf src-tunnel-tp-id {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:src-tunnel-tp-id";
+ }
+ description
+ "Specified source TTP for the requested slice.";
+ }
+
+ leaf dst-tunnel-tp-id {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:dst-tunnel-tp-id";
+ }
+ description
+ "Specified description TTP for the requested slice.";
+ }
+
+ leaf tunnel-bandwidth{
+ type te-types:te-bandwidth;
+ description
+ "Bandwidth Requirement of Slice.";
+ }
+
+ uses te:tunnel-associations-properties;
+
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ description
+ "Protection Level Requirement of Slice.";
+ }
+/*
+ leaf slice-constraint {
+ type leafref {
+ path "/te:te/te:globals/te:named-path-constraints"
+ +"/te:named-path-constraint";
+ }
+ description
+ "Protection Level Requirement of Slice.";
+ }
+ */
+ }
+
+ leaf slice-id {
+ type slice-id;
+ description
+ "The identifier of the requested slice.";
+ }
+ }
+
+ output {
+ list transport-slice-list {
+ key "slice-id";
+ leaf slice-id {
+ mandatory true;
+ type slice-id;
+ description
+ "The identifier of the reported slice.";
+ }
+ leaf result {
+ type enumeration {
+ enum success {
+ description
+ "Success.";
+ }
+ enum failure-error {
+ description
+ "Failure because of input error. ";
+ }
+ enum failure-resource {
+ description
+ "Failure because of insufficient resources. ";
+ }
+ }
+ }
+ description
+ "The output of this RPC. ";
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-otn-topology@2021-02-22.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-otn-topology@2021-02-22.yang
new file mode 100644
index 0000000..610afc3
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-otn-topology@2021-02-22.yang
@@ -0,0 +1,2009 @@
+module ietf-otn-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-otn-topology";
+ prefix "otntopo";
+
+ import ietf-network {
+ prefix "nw";
+ //reference "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ import ietf-network-topology {
+ prefix "nt";
+ //reference "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ import ietf-te-topology {
+ prefix "tet";
+ //reference
+ //"RFC 8795: YANG Data Model for Traffic Engineering
+ //(TE) Topologies";
+ }
+
+ import ietf-layer1-types {
+ prefix "l1-types";
+ //reference
+ // "I-D.ietf-ccamp-layer1-types: A YANG Data Model
+ // for Layer 1 Types";
+ }
+
+ organization
+ "IETF CCAMP Working Group";
+ contact
+ "WG Web: <http://tools.ietf.org/wg/ccamp/>
+ WG List: <mailto:ccamp@ietf.org>
+
+ Editor: Haomian Zheng
+ <mailto:zhenghaomian@huawei.com>
+
+ Editor: Italo Busi
+ <mailto:italo.busi@huawei.com>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Sergio Belotti
+ <mailto:sergio.belotti@nokia.com>
+
+ Editor: Oscar Gonzalez de Dios
+ <mailto:oscar.gonzalezdedios@telefonica.com>";
+
+ description
+ "This module defines a protocol independent Layer 1/ODU topology
+ data model. The model fully conforms
+ to the Network Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2021-02-22 {
+ description
+ "Initial Revision";
+ reference
+ "RFC XXXX: A YANG Data Model for Optical Transport Network
+ Topology";
+ // RFC Ed.: replace XXXX with actual RFC number, update date
+ // information and remove this note
+ }
+ /*
+ * Grouping workaround for otn-topology augment (unresrved bw, maximum bw)
+ */
+ grouping otn-slice-link-bandwidth {
+ list slicelist {
+ key "slice-id";
+ description
+ "OTN slice id";
+ leaf slice-id {
+ type string;
+ description
+ "Tunnel termination point identifier.";
+ }
+ leaf odu0-number {
+ type uint16;
+ description "Number of ODU0s";
+ }
+ }
+ }
+
+ /*
+ * Data nodes
+ */
+
+ augment "/nw:networks/nw:network/nw:network-types/"
+ + "tet:te-topology" {
+ container otn-topology {
+ presence "indicates a topology type of Optical Transport
+ Network (OTN)-electrical layer.";
+ description "otn topology type";
+ }
+ description "augment network types to include otn newtork";
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes" {
+ when "../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment only for otn network.";
+ }
+ description "Augment link configuration";
+ leaf tsg {
+ type identityref {
+ base l1-types:tributary-slot-granularity;
+ }
+ description "Tributary slot granularity.";
+ reference
+ "G.709/Y.1331, February 2016: Interfaces for the
+ Optical Transport Network (OTN)";
+ }
+ leaf distance {
+ type uint32;
+ description "distance in the unit of kilometers";
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te" {
+ when "../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description "Augment only for otn network";
+ }
+ description "OTN TP attributes config in ODU topology.";
+
+ container client-svc {
+ presence "client-facing LTP.";
+ description
+ "OTN LTP Service attributes.";
+
+ leaf client-facing {
+ type boolean;
+ default 'false';
+ description
+ "Indicates whether this LTP is a client-facing LTP.";
+ }
+ leaf-list supported-client-signal {
+ type identityref {
+ base l1-types:client-signal;
+ }
+ description
+ "List of client signal types supported by the LTP.";
+ }
+ }
+ }
+
+ /*
+ * Augment TE bandwidth
+ */
+
+ augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
+ + "tet:te/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the link termination
+ point (LTP).";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the TE node
+ connectivity matrices.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the
+ connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the TE node
+ connectivity matrices information source.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints of the
+ connectivity matrix entry information source";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:client-layer-adaptation/tet:switching-capability/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment client TE bandwidth of the tunnel termination point
+ (TTP)";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints for the TTP
+ Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/tet:path-constraints/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE bandwidth path constraints for the TTP
+ Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the TE link.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum TE bandwidth for the TE link";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ uses otn-slice-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum reservable TE bandwidth for the TE link";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment unreserved TE bandwidth for the TE Link";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ uses otn-slice-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum LSP TE bandwidth for the TE link
+ information source";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum TE bandwidth for the TE link
+ information source";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment maximum reservable TE bandwidth for the TE link
+ information-source";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment unreserved TE bandwidth of the TE link
+ information source";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:interface-switching-capability/"
+ + "tet:max-lsp-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum LSP TE bandwidth of the TE link
+ template";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum TE bandwidth the TE link template";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:max-resv-link-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment maximum reservable TE bandwidth for the TE link
+ template.";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:unreserved-bandwidth/"
+ + "tet:te-bandwidth/tet:technology" {
+ description
+ "Augment unreserved TE bandwidth the TE link template";
+ case otn {
+ uses l1-types:otn-link-bandwidth;
+ }
+ }
+
+ /*
+ * Augment TE label range information
+ */
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TE node
+ connectivity matrices.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the source LTP
+ of the connectivity matrix entry.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the destination LTP
+ of the connectivity matrix entry.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TE node
+ connectivity matrices information source.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the source LTP
+ of the connectivity matrix entry information source.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the destination LTP
+ of the connectivity matrix entry information source.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TTP
+ Local Link Connectivities.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TTP
+ Local Link Connectivity entry.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TE link.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ when "../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range information for the TE link
+ information source.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction" {
+ description
+ "Augment TE label range information for the TE link template.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ /*
+ * Augment TE label
+ */
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TE node
+ connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/"
+ + "tet:label-restriction/tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TE node
+ connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:label-restrictions/"
+ + "tet:label-restriction/tet:label-step/"
+ + "tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TE node
+ connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path of the
+ TE node connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path of the
+ TE node connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the TE node connectivity
+ matrices";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the TE node connectivity
+ matrices";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the TE node connectivity matrices";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the source LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the source LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:from/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/"
+ + "tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the source LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the destination LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the destination LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:to/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/"
+ + "tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the destination LTP
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/"
+ + "tet:type/tet:label/tet:label-hop/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/tet:optimizations/"
+ + "tet:algorithm/tet:metric/tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:te-node-attributes/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the connectivity matrix entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TE node connectivity
+ matrices information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TE node connectivity
+ matrices information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:connectivity-matrices/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TE node connectivity
+ matrices information source.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the TE node connectivity matrices of the information
+ source entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the TE node connectivity matrices of the information
+ source entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the TE node connectivity matrices
+ information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the TE node connectivity matrices
+ information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the TE node connectivity matrices information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the source LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the source LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:from/tet:label-restrictions/"
+ + "tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the source LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the destination LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the destination LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:to/tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the destination LTP
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the connectivity matrix entry
+ information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the connectivity matrix entry
+ information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:information-source-entry/tet:connectivity-matrices/"
+ + "tet:connectivity-matrix/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the connectivity matrix entry information source.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/"
+ + "tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TTP
+ Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/"
+ + "tet:te-label/tet:technology"{
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TTP
+ Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/"
+ + "tet:technology"{
+ when "../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TTP
+ Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the TTP Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the TTP Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the TTP Local Link
+ Connectivities.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the TTP Local Link
+ Connectivities.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the TTP Local Link Connectivities.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TTP
+ Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TTP
+ Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TTP
+ Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the TTP Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the TTP Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-exclude-objects/"
+ + "tet:route-object-exclude-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects excluded
+ by the path computation of the TTP Local Link
+ Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:optimizations/tet:algorithm/tet:metric/"
+ + "tet:optimization-metric/"
+ + "tet:explicit-route-include-objects/"
+ + "tet:route-object-include-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the explicit route objects included
+ by the path computation of the TTP Local Link
+ Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/tet:te/"
+ + "tet:tunnel-termination-point/"
+ + "tet:local-link-connectivities/"
+ + "tet:local-link-connectivity/"
+ + "tet:path-properties/tet:path-route-objects/"
+ + "tet:path-route-object/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the computed path route objects
+ of the TTP Local Link Connectivity entry.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay primary path
+ of the TE link.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ when "../../../../../../../../"
+ + "nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label hop for the underlay backup path
+ of the TE link.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TE link.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TE link.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TE link.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range start for the TE link
+ information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ when "../../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range end for the TE link
+ information source.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link/tet:te/"
+ + "tet:information-source-entry/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ when "../../../../../../nw:network-types/tet:te-topology/"
+ + "otntopo:otn-topology" {
+ description
+ "Augmentation parameters apply only for networks with
+ OTN topology type.";
+ }
+ description
+ "Augment TE label range step for the TE link
+ information source.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ description
+ "Augment TE label hop for the underlay primary path
+ of the TE link template.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
+ + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
+ description
+ "Augment TE label hop for the underlay backup path
+ of the TE link template.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-start/tet:te-label/tet:technology" {
+ description
+ "Augment TE label range start for the TE link template.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-end/tet:te-label/tet:technology" {
+ description
+ "Augment TE label range end for the TE link template.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/nw:networks/tet:te/tet:templates/"
+ + "tet:link-template/tet:te-link-attributes/"
+ + "tet:label-restrictions/tet:label-restriction/"
+ + "tet:label-step/tet:technology" {
+ description
+ "Augment TE label range step for the TE link template.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-otn-tunnel@2021-06-25.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-otn-tunnel@2021-06-25.yang
new file mode 100644
index 0000000..d3c0493
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-otn-tunnel@2021-06-25.yang
@@ -0,0 +1,1018 @@
+module ietf-otn-tunnel {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-otn-tunnel";
+ prefix "otn-tunnel";
+
+ import ietf-te {
+ prefix "te";
+ revision-date "2021-02-20";
+ //reference
+ // "I-D.ietf-teas-yang-te-19: A YANG Data Model for Traffic
+ // Engineering Tunnels and Interfaces. ";
+ }
+
+ import ietf-layer1-types {
+ prefix "l1-types";
+ //reference
+ //"I-D.ietf-ccamp-layer1-types:
+ // A YANG Data Model for Layer 1 Types. ";
+ }
+
+ organization
+ "IETF CCAMP Working Group";
+ contact
+ "WG Web: <http://tools.ietf.org/wg/ccamp/>
+ WG List: <mailto:ccamp@ietf.org>
+
+ Editor: Haomian Zheng
+ <mailto:zhenghaomian@huawei.com>
+
+ Editor: Italo Busi
+ <mailto:italo.busi@huawei.com>
+
+ Editor: Sergio Belotti
+ <mailto:sergio.belotti@nokia.com>
+
+ Editor: Victor Lopez
+ <mailto:victor.lopezalvarez@telefonica.com>
+
+ Editor: Yunbin Xu
+ <mailto:xuyunbin@ritt.cn>";
+
+ description
+ "This module defines a model for OTN Tunnel Services.
+
+ The model fully conforms to the Network Management
+ Datastore Architecture (NMDA).
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision "2021-06-25" {
+ description
+ "Updated revision to align with the latest TE tunnel model.";
+ reference
+ "RFC XXXX: OTN Tunnel YANG Model";
+ // RFC Ed.: replace XXXX with actual RFC number, update date
+ // information and remove this note
+ }
+
+ /*
+ * Data nodes
+ */
+
+ /*
+ * Augment TE bandwidth
+ */
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the named path constraint.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the tunnel.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the primary path.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+ //FIXME: AUGMENT AUGMENT ISSUE
+ /** augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of primary path's computed path
+ properties.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ } */
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the primary reverse path.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+ //FIXME: AUGMENT AUGMENT ISSUE
+ /** augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the primary reverse path's computed
+ path properties.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }*/
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the secondary path.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+ //FIXME: AUGMENT AUGMENT ISSUE
+ /** augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the secondary path's computed path
+ properties.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ } */
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/"
+ + "te:secondary-reverse-path/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ }
+ //FIXME: AUGMENT AUGMENT ISSUE
+ /** augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/"
+ + "te:secondary-reverse-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:te-bandwidth/te:technology" {
+ description
+ "Augment TE bandwidth of the secondary reverse path's computed
+ path properties.";
+ case otn {
+ uses l1-types:otn-path-bandwidth;
+ }
+ } */
+
+ /*
+ * Augment TE label range information
+ */
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-in-segment/"
+ + "te:label-restrictions/te:label-restriction" {
+ description
+ "Augment TE label range information for the ingress segment
+ of the named path constraint.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-out-segment/"
+ + "te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the egress segment
+ of the named path constraint.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the ingress segment
+ of the primay path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the egress segment
+ of the primay path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the ingress segment
+ of the primay reverse path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the egress segment
+ of the primay reverse path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the ingress segment
+ of the secondary path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the egress segment
+ of the secondary path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the ingress segment
+ of the secondary reverse path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction" {
+ description
+ "Augment TE label range information for the egress segment
+ of the secondary reverse path.";
+ uses l1-types:otn-label-range-info;
+ }
+
+ /*
+ * Augment TE label.
+ */
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-exclude-always/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects always
+ excluded by the path computation with the named path
+ constraint.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-include-exclude/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects included
+ or excluded by the path computation with the named path
+ constraint.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-in-segment/"
+ + "te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the ingress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-in-segment/"
+ + "te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the ingress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-in-segment/"
+ + "te:label-restrictions/te:label-restriction/"
+ + "te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the ingress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-out-segment/"
+ + "te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the egress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-out-segment/"
+ + "te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:path-out-segment/"
+ + "te:label-restrictions/te:label-restriction/"
+ + "te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the egress segment
+ of the named path constraint.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:route-object-exclude-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects excluded by the path computation of the primary
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:route-object-include-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects included by the path computation of the primary
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-exclude-always/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects always
+ excluded by the path computation of the primary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-include-exclude/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects included
+ or excluded by the path computation of the primary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the ingress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the ingress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the ingress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the egress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the primay path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/te:path-properties/"
+ + "te:path-route-objects/te:path-route-object/"
+ + "te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the route object of the computed
+ primary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:route-object-exclude-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects excluded by the path computation of the primary
+ reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:route-object-include-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects included by the path computation of the primary
+ reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-exclude-always/"
+ + "te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects always
+ excluded by the path computation of the primary reverse
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-include-exclude/"
+ + "te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects included
+ or excluded by the path computation of the primary reverse
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the ingress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the ingress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the ingress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the egress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the egress segment
+ of the primay reverse path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/"
+ + "te:primary-reverse-path/"
+ + "te:computed-paths-properties/te:computed-path-properties/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the route object of the computed
+ primary reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:route-object-exclude-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects excluded by the path computation of the
+ secondary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:route-object-include-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects included by the path computation of the
+ secondary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-exclude-always/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects always
+ excluded by the path computation of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-include-exclude/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects included
+ or excluded by the path computation of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the ingress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the ingress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the ingress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the egress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the egress segment
+ of the secondary path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the route object of the computed
+ secondary path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-exclude-objects/"
+ + "te:route-object-exclude-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects excluded by the path computation of the
+ secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:optimizations/te:algorithm/te:metric/"
+ + "te:optimization-metric/te:explicit-route-include-objects/"
+ + "te:route-object-include-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the optimization of the explicit
+ route objects included by the path computation of the
+ secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-exclude-always/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects always
+ excluded by the path computation of the secondary reverse
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:explicit-route-objects-always/"
+ + "te:route-object-include-exclude/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the explicit route objects included
+ or excluded by the path computation of the secondary reverse
+ path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the ingress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the ingress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-in-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the ingress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-start/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range start for the egress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-end/"
+ + "te:te-label/te:technology" {
+ description
+ "Augment TE label range end for the egress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-start-end;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:path-out-segment/te:label-restrictions/"
+ + "te:label-restriction/te:label-step/te:technology" {
+ description
+ "Augment TE label range step for the egress segment
+ of the secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-step;
+ }
+ }
+
+ augment "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-reverse-paths/te:secondary-reverse-path/"
+ + "te:computed-paths-properties/"
+ + "te:computed-path-properties/"
+ + "te:path-properties/te:path-route-objects/"
+ + "te:path-route-object/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the route object of the computed
+ secondary reverse path.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+
+ augment "/te:te/te:lsps/"
+ + "te:lsp/te:lsp-record-route-information/"
+ + "te:lsp-record-route-information/te:type/te:label/"
+ + "te:label-hop/te:te-label/te:technology" {
+ description
+ "Augment TE label hop for the record route of the LSP.";
+ case otn {
+ uses l1-types:otn-label-hop;
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-routing-types@2017-12-04.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-routing-types@2017-12-04.yang
new file mode 100644
index 0000000..24319c1
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-routing-types@2017-12-04.yang
@@ -0,0 +1,771 @@
+module ietf-routing-types {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types";
+ prefix rt-types;
+
+ import ietf-yang-types {
+ prefix yang;
+ }
+ import ietf-inet-types {
+ prefix inet;
+ }
+
+ organization
+ "IETF RTGWG - Routing Area Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/rtgwg/>
+ WG List: <mailto:rtgwg@ietf.org>
+
+ Editors: Xufeng Liu
+ <mailto:Xufeng_Liu@jabail.com>
+ Yingzhen Qu
+ <mailto:yingzhen.qu@huawei.com>
+ Acee Lindem
+ <mailto:acee@cisco.com>
+ Christian Hopps
+ <mailto:chopps@chopps.org>
+ Lou Berger
+ <mailto:lberger@labn.com>";
+
+ description
+ "This module contains a collection of YANG data types
+ considered generally useful for routing protocols.
+
+ Copyright (c) 2017 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8294; see
+ the RFC itself for full legal notices.";
+ revision 2017-12-04 {
+ description "Initial revision.";
+ reference
+ "RFC 8294: Common YANG Data Types for the Routing Area.
+ Section 3.";
+ }
+
+ /*** Identities related to MPLS/GMPLS ***/
+
+ identity mpls-label-special-purpose-value {
+ description
+ "Base identity for deriving identities describing
+ special-purpose Multiprotocol Label Switching (MPLS) label
+ values.";
+ reference
+ "RFC 7274: Allocating and Retiring Special-Purpose MPLS
+ Labels.";
+ }
+
+ identity ipv4-explicit-null-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the IPv4 Explicit NULL Label.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding. Section 2.1.";
+ }
+
+ identity router-alert-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the Router Alert Label.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding. Section 2.1.";
+ }
+
+ identity ipv6-explicit-null-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the IPv6 Explicit NULL Label.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding. Section 2.1.";
+ }
+
+ identity implicit-null-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the Implicit NULL Label.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding. Section 2.1.";
+ }
+
+ identity entropy-label-indicator {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the Entropy Label Indicator.";
+ reference
+ "RFC 6790: The Use of Entropy Labels in MPLS Forwarding.
+ Sections 3 and 10.1.";
+ }
+
+ identity gal-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the Generic Associated Channel
+ (G-ACh) Label (GAL).";
+ reference
+ "RFC 5586: MPLS Generic Associated Channel.
+ Sections 4 and 10.";
+ }
+
+ identity oam-alert-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the OAM Alert Label.";
+ reference
+ "RFC 3429: Assignment of the 'OAM Alert Label' for
+ Multiprotocol Label Switching Architecture (MPLS)
+ Operation and Maintenance (OAM) Functions.
+ Sections 3 and 6.";
+ }
+
+ identity extension-label {
+ base mpls-label-special-purpose-value;
+ description
+ "This identity represents the Extension Label.";
+ reference
+ "RFC 7274: Allocating and Retiring Special-Purpose MPLS
+ Labels. Sections 3.1 and 5.";
+ }
+
+ /*** Collection of types related to routing ***/
+
+ typedef router-id {
+ type yang:dotted-quad;
+ description
+ "A 32-bit number in the dotted-quad format assigned to each
+ router. This number uniquely identifies the router within
+ an Autonomous System.";
+ }
+
+ /*** Collection of types related to VPNs ***/
+
+ typedef route-target {
+ type string {
+ pattern
+ '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+ + '42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+ + '42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+ + '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+ + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+ + '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+ + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+ + '655[0-2][0-9]|'
+ + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|'
+ + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|'
+ + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(6(:[a-fA-F0-9]{2}){6})|'
+ + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+ + '[0-9a-fA-F]{1,12})';
+ }
+
+ description
+ "A Route Target is an 8-octet BGP extended community
+ initially identifying a set of sites in a BGP VPN
+ (RFC 4364). However, it has since taken on a more general
+ role in BGP route filtering. A Route Target consists of two
+ or three fields: a 2-octet Type field, an administrator
+ field, and, optionally, an assigned number field.
+
+ According to the data formats for types 0, 1, 2, and 6 as
+ defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+ pattern is defined as:
+
+ 0:2-octet-asn:4-octet-number
+ 1:4-octet-ipv4addr:2-octet-number
+ 2:4-octet-asn:2-octet-number
+ 6:6-octet-mac-address
+
+ Additionally, a generic pattern is defined for future
+ Route Target types:
+
+ 2-octet-other-hex-number:6-octet-hex-number
+
+ Some valid examples are 0:100:100, 1:1.1.1.1:100,
+ 2:1234567890:203, and 6:26:00:08:92:78:00.";
+ reference
+ "RFC 4360: BGP Extended Communities Attribute.
+ RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+ RFC 5668: 4-Octet AS Specific BGP Extended Community.
+ RFC 7432: BGP MPLS-Based Ethernet VPN.";
+ }
+
+ typedef ipv6-route-target {
+ 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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+ + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+ + ':'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+ pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+ + ':'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+ }
+ description
+ "An IPv6 Route Target is a 20-octet BGP IPv6 Address
+ Specific Extended Community serving the same function
+ as a standard 8-octet Route Target, except that it only
+ allows an IPv6 address as the global administrator.
+ The format is <ipv6-address:2-octet-number>.
+
+ Two valid examples are 2001:db8::1:6544 and
+ 2001:db8::5eb1:791:6b37:17958.";
+ reference
+ "RFC 5701: IPv6 Address Specific BGP Extended Community
+ Attribute.";
+ }
+
+ typedef route-target-type {
+ type enumeration {
+ enum import {
+ value 0;
+ description
+ "The Route Target applies to route import.";
+ }
+ enum export {
+ value 1;
+ description
+ "The Route Target applies to route export.";
+ }
+
+ enum both {
+ value 2;
+ description
+ "The Route Target applies to both route import and
+ route export.";
+ }
+ }
+ description
+ "Indicates the role a Route Target takes in route filtering.";
+ reference
+ "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).";
+ }
+
+ typedef route-distinguisher {
+ type string {
+ pattern
+ '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+ + '42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+ + '42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+ + '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+ + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+ + '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+ + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+ + '655[0-2][0-9]|'
+ + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|'
+ + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|'
+ + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(6(:[a-fA-F0-9]{2}){6})|'
+ + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+ + '[0-9a-fA-F]{1,12})';
+ }
+
+ description
+ "A Route Distinguisher is an 8-octet value used to
+ distinguish routes from different BGP VPNs (RFC 4364).
+ A Route Distinguisher will have the same format as a
+ Route Target as per RFC 4360 and will consist of
+ two or three fields: a 2-octet Type field, an administrator
+ field, and, optionally, an assigned number field.
+
+ According to the data formats for types 0, 1, 2, and 6 as
+ defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+ pattern is defined as:
+
+ 0:2-octet-asn:4-octet-number
+ 1:4-octet-ipv4addr:2-octet-number
+ 2:4-octet-asn:2-octet-number
+ 6:6-octet-mac-address
+
+ Additionally, a generic pattern is defined for future
+ route discriminator types:
+
+ 2-octet-other-hex-number:6-octet-hex-number
+
+ Some valid examples are 0:100:100, 1:1.1.1.1:100,
+ 2:1234567890:203, and 6:26:00:08:92:78:00.";
+ reference
+ "RFC 4360: BGP Extended Communities Attribute.
+ RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+ RFC 5668: 4-Octet AS Specific BGP Extended Community.
+ RFC 7432: BGP MPLS-Based Ethernet VPN.";
+ }
+
+ typedef route-origin {
+ type string {
+ pattern
+ '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|'
+ + '42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|'
+ + '42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|'
+ + '42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|'
+ + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|'
+ + '25[0-5])\.){3}([0-9]|[1-9][0-9]|'
+ + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|'
+ + '655[0-2][0-9]|'
+ + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(2:(429496729[0-5]|42949672[0-8][0-9]|'
+ + '4294967[01][0-9]{2}|'
+ + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|'
+ + '4294[0-8][0-9]{5}|'
+ + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|'
+ + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|'
+ + '(6(:[a-fA-F0-9]{2}){6})|'
+ + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):'
+ + '[0-9a-fA-F]{1,12})';
+ }
+ description
+ "A Route Origin is an 8-octet BGP extended community
+ identifying the set of sites where the BGP route
+ originated (RFC 4364). A Route Origin will have the same
+ format as a Route Target as per RFC 4360 and will consist
+ of two or three fields: a 2-octet Type field, an
+ administrator field, and, optionally, an assigned number
+ field.
+
+ According to the data formats for types 0, 1, 2, and 6 as
+ defined in RFC 4360, RFC 5668, and RFC 7432, the encoding
+ pattern is defined as:
+
+ 0:2-octet-asn:4-octet-number
+ 1:4-octet-ipv4addr:2-octet-number
+ 2:4-octet-asn:2-octet-number
+ 6:6-octet-mac-address
+ Additionally, a generic pattern is defined for future
+ Route Origin types:
+
+ 2-octet-other-hex-number:6-octet-hex-number
+
+ Some valid examples are 0:100:100, 1:1.1.1.1:100,
+ 2:1234567890:203, and 6:26:00:08:92:78:00.";
+ reference
+ "RFC 4360: BGP Extended Communities Attribute.
+ RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+ RFC 5668: 4-Octet AS Specific BGP Extended Community.
+ RFC 7432: BGP MPLS-Based Ethernet VPN.";
+ }
+
+ typedef ipv6-route-origin {
+ 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]|1[0-9]{2}|[1-9]?[0-9])\.){3}'
+ + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))'
+ + ':'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+ pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
+ + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))'
+ + ':'
+ + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|'
+ + '6[0-4][0-9]{3}|'
+ + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)';
+ }
+ description
+ "An IPv6 Route Origin is a 20-octet BGP IPv6 Address
+ Specific Extended Community serving the same function
+ as a standard 8-octet route, except that it only allows
+ an IPv6 address as the global administrator. The format
+ is <ipv6-address:2-octet-number>.
+
+ Two valid examples are 2001:db8::1:6544 and
+ 2001:db8::5eb1:791:6b37:17958.";
+ reference
+ "RFC 5701: IPv6 Address Specific BGP Extended Community
+ Attribute.";
+ }
+
+ /*** Collection of types common to multicast ***/
+
+ typedef ipv4-multicast-group-address {
+ type inet:ipv4-address {
+ pattern '(2((2[4-9])|(3[0-9]))\.).*';
+ }
+ description
+ "This type represents an IPv4 multicast group address,
+ which is in the range of 224.0.0.0 to 239.255.255.255.";
+ reference
+ "RFC 1112: Host Extensions for IP Multicasting.";
+ }
+
+ typedef ipv6-multicast-group-address {
+ type inet:ipv6-address {
+ pattern '(([fF]{2}[0-9a-fA-F]{2}):).*';
+ }
+ description
+ "This type represents an IPv6 multicast group address,
+ which is in the range of ff00::/8.";
+ reference
+ "RFC 4291: IP Version 6 Addressing Architecture. Section 2.7.
+ RFC 7346: IPv6 Multicast Address Scopes.";
+ }
+
+ typedef ip-multicast-group-address {
+ type union {
+ type ipv4-multicast-group-address;
+ type ipv6-multicast-group-address;
+ }
+ description
+ "This type represents a version-neutral IP multicast group
+ address. The format of the textual representation implies
+ the IP version.";
+ }
+
+ typedef ipv4-multicast-source-address {
+ type union {
+ type enumeration {
+ enum * {
+ description
+ "Any source address.";
+ }
+ }
+ type inet:ipv4-address;
+ }
+ description
+ "Multicast source IPv4 address type.";
+ }
+
+ typedef ipv6-multicast-source-address {
+ type union {
+ type enumeration {
+ enum * {
+ description
+ "Any source address.";
+ }
+ }
+ type inet:ipv6-address;
+ }
+ description
+ "Multicast source IPv6 address type.";
+ }
+
+ /*** Collection of types common to protocols ***/
+
+ typedef bandwidth-ieee-float32 {
+ type string {
+ pattern
+ '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|'
+ + '1[01][0-9]|0?[0-9]?[0-9])?)';
+ }
+ description
+ "Bandwidth in IEEE 754 floating-point 32-bit binary format:
+ (-1)**(S) * 2**(Exponent-127) * (1 + Fraction),
+ where Exponent uses 8 bits and Fraction uses 23 bits.
+ The units are octets per second.
+ The encoding format is the external hexadecimal-significant
+ character sequences specified in IEEE 754 and ISO/IEC C99.
+ The format is restricted to be normalized, non-negative, and
+ non-fraction: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, or 0x0p0,
+ where 'h' and 'H' are hexadecimal digits and 'd' and 'D' are
+ integers in the range of [0..127].
+ When six hexadecimal digits are used for 'hhhhhh' or
+ 'HHHHHH', the least significant digit must be an even
+ number. 'x' and 'X' indicate hexadecimal; 'p' and 'P'
+ indicate a power of two. Some examples are 0x0p0, 0x1p10,
+ and 0x1.abcde2p+20.";
+ reference
+ "IEEE Std 754-2008: IEEE Standard for Floating-Point
+ Arithmetic.
+ ISO/IEC C99: Information technology - Programming
+ Languages - C.";
+ }
+
+ typedef link-access-type {
+ type enumeration {
+ enum broadcast {
+ description
+ "Specify broadcast multi-access network.";
+ }
+ enum non-broadcast-multiaccess {
+ description
+ "Specify Non-Broadcast Multi-Access (NBMA) network.";
+ }
+ enum point-to-multipoint {
+ description
+ "Specify point-to-multipoint network.";
+ }
+ enum point-to-point {
+ description
+ "Specify point-to-point network.";
+ }
+ }
+ description
+ "Link access type.";
+ }
+
+ typedef timer-multiplier {
+ type uint8;
+ description
+ "The number of timer value intervals that should be
+ interpreted as a failure.";
+ }
+
+ typedef timer-value-seconds16 {
+ type union {
+ type uint16 {
+ range "1..65535";
+ }
+ type enumeration {
+ enum infinity {
+ description
+ "The timer is set to infinity.";
+ }
+ enum not-set {
+ description
+ "The timer is not set.";
+ }
+ }
+ }
+ units "seconds";
+ description
+ "Timer value type, in seconds (16-bit range).";
+ }
+
+ typedef timer-value-seconds32 {
+ type union {
+ type uint32 {
+ range "1..4294967295";
+ }
+ type enumeration {
+ enum infinity {
+ description
+ "The timer is set to infinity.";
+ }
+ enum not-set {
+ description
+ "The timer is not set.";
+ }
+ }
+ }
+ units "seconds";
+ description
+ "Timer value type, in seconds (32-bit range).";
+ }
+
+ typedef timer-value-milliseconds {
+ type union {
+ type uint32 {
+ range "1..4294967295";
+ }
+ type enumeration {
+ enum infinity {
+ description
+ "The timer is set to infinity.";
+ }
+ enum not-set {
+ description
+ "The timer is not set.";
+ }
+ }
+ }
+ units "milliseconds";
+ description
+ "Timer value type, in milliseconds.";
+ }
+
+ typedef percentage {
+ type uint8 {
+ range "0..100";
+ }
+ description
+ "Integer indicating a percentage value.";
+ }
+
+ typedef timeticks64 {
+ type uint64;
+ description
+ "This type is based on the timeticks type defined in
+ RFC 6991, but with 64-bit width. It represents the time,
+ modulo 2^64, in hundredths of a second between two epochs.";
+ reference
+ "RFC 6991: Common YANG Data Types.";
+ }
+
+ typedef uint24 {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "24-bit unsigned integer.";
+ }
+
+ /*** Collection of types related to MPLS/GMPLS ***/
+
+ typedef generalized-label {
+ type binary;
+ description
+ "Generalized Label. Nodes sending and receiving the
+ Generalized Label are aware of the link-specific
+ label context and type.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description. Section 3.2.";
+ }
+
+ typedef mpls-label-special-purpose {
+ type identityref {
+ base mpls-label-special-purpose-value;
+ }
+ description
+ "This type represents the special-purpose MPLS label values.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding.
+ RFC 7274: Allocating and Retiring Special-Purpose MPLS
+ Labels.";
+ }
+
+ typedef mpls-label-general-use {
+ type uint32 {
+ range "16..1048575";
+ }
+ description
+ "The 20-bit label value in an MPLS label stack as specified
+ in RFC 3032. This label value does not include the
+ encodings of Traffic Class and TTL (Time to Live).
+ The label range specified by this type is for general use,
+ with special-purpose MPLS label values excluded.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding.";
+ }
+
+ typedef mpls-label {
+ type union {
+ type mpls-label-special-purpose;
+ type mpls-label-general-use;
+ }
+ description
+ "The 20-bit label value in an MPLS label stack as specified
+ in RFC 3032. This label value does not include the
+ encodings of Traffic Class and TTL.";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding.";
+ }
+
+ /*** Groupings **/
+
+ grouping mpls-label-stack {
+ description
+ "This grouping specifies an MPLS label stack. The label
+ stack is encoded as a list of label stack entries. The
+ list key is an identifier that indicates the relative
+ ordering of each entry, with the lowest-value identifier
+ corresponding to the top of the label stack.";
+ container mpls-label-stack {
+ description
+ "Container for a list of MPLS label stack entries.";
+ list entry {
+ key "id";
+ description
+ "List of MPLS label stack entries.";
+ leaf id {
+ type uint8;
+ description
+ "Identifies the entry in a sequence of MPLS label
+ stack entries. An entry with a smaller identifier
+ value precedes an entry with a larger identifier
+ value in the label stack. The value of this ID has
+ no semantic meaning other than relative ordering
+ and referencing the entry.";
+ }
+ leaf label {
+ type rt-types:mpls-label;
+ description
+ "Label value.";
+ }
+
+ leaf ttl {
+ type uint8;
+ description
+ "Time to Live (TTL).";
+ reference
+ "RFC 3032: MPLS Label Stack Encoding.";
+ }
+ leaf traffic-class {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Traffic Class (TC).";
+ reference
+ "RFC 5462: Multiprotocol Label Switching (MPLS) Label
+ Stack Entry: 'EXP' Field Renamed to 'Traffic Class'
+ Field.";
+ }
+ }
+ }
+ }
+
+ grouping vpn-route-targets {
+ description
+ "A grouping that specifies Route Target import-export rules
+ used in BGP-enabled VPNs.";
+ reference
+ "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs).
+ RFC 4664: Framework for Layer 2 Virtual Private Networks
+ (L2VPNs).";
+ list vpn-target {
+ key "route-target";
+ description
+ "List of Route Targets.";
+ leaf route-target {
+ type rt-types:route-target;
+ description
+ "Route Target value.";
+ }
+ leaf route-target-type {
+ type rt-types:route-target-type;
+ mandatory true;
+ description
+ "Import/export type of the Route Target.";
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-service-pm@2020-07-13.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-service-pm@2020-07-13.yang
new file mode 100644
index 0000000..0f84cd6
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-service-pm@2020-07-13.yang
@@ -0,0 +1,387 @@
+module ietf-service-pm {
+ yang-version 1.1;
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-service-pm";
+ prefix "svc-pm";
+
+ import ietf-eth-tran-service {
+ prefix "ethtsvc";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import ietf-trans-client-service {
+ prefix "clntsvc";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ WG List: <mailto:ccamp@ietf.org>
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Italo Busi (italo.busi@huawei.com);
+ Yanlei Zheng (zhengyanlei@chinaunicom.cn);
+ ";
+
+ description
+ "This module defines the performance monitoring for Ethernet
+ services. The model fully conforms to the Network Management
+ Datastore Architecture (NMDA).
+
+ Copyright (c) 2020 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2020-07-13 {
+ description
+ "Initial version";
+ reference
+ "ADD REFERENCE HERE";
+ }
+
+ typedef performance-parameter-value {
+ type union {
+ type uint32;
+ type uint64;
+ type decimal64 {
+ fraction-digits 6;
+ }
+ type string;
+ }
+ description
+ "A performance parameter value.";
+ }
+
+ grouping service-performance-monitor-set{
+ description "the set of parameter name, value and description.";
+ leaf parameter-name{
+ type identityref {
+ base performance-parameter-type;
+ }
+ description
+ "The name of parameters to be monitored.
+ For example, latency, Bit Error Rate, Bandwidth and so on.";
+ }
+ list parameter-value {
+ key index;
+ description
+ "The table of values of the performance and
+ their descriptions.";
+ leaf index {
+ type uint64;
+ description
+ "Used for list index";
+ }
+ leaf value {
+ type performance-parameter-value;
+ mandatory true;
+ description
+ "The value of the parameter. ";
+ }
+ leaf value-unit {
+ type string;
+ mandatory true;
+ description
+ "The value unit of the parameter.
+ For example, second, minute and so on.";
+ }
+ leaf etht-svc-end-point {
+ when "../../../service-name = "
+ + "/ethtsvc:etht-svc/ethtsvc:etht-svc-instances/ethtsvc:etht-svc-name";
+ type leafref {
+ path "/ethtsvc:etht-svc/ethtsvc:etht-svc-instances"
+ + "/ethtsvc:etht-svc-end-points/ethtsvc:etht-svc-end-point-name";
+ }
+ description
+ "Reference to the Ethernet service end point
+ at which this performance parameter is monitored.";
+ }
+ leaf value-description{
+ type string;
+ description
+ "The description of previous value. ";
+ }
+ leaf start-time {
+ type yang:date-and-time;
+ description
+ "The time stamp when the parameter is started.";
+ }
+ leaf end-time {
+ type yang:date-and-time;
+ description
+ "The time stamp when the parameter is ended.";
+ }
+ }
+ }
+
+ identity performance-parameter-type {
+ description
+ "Base type of the performance parameter being monitored.";
+ }
+
+ identity near-frame-loss {
+ base performance-parameter-type;
+ description
+ "Near frame loss, using one-way eth loss measure,
+ the sampling point is the MEP.";
+ }
+
+ identity far-frame-loss {
+ base performance-parameter-type;
+ description
+ "Far frame loss, using one-way eth loss measure,
+ the sampling point is the MEP.";
+ }
+
+ identity one-way-delay {
+ base performance-parameter-type;
+ description
+ "One way delay.";
+ }
+
+ identity two-way-delay {
+ base performance-parameter-type;
+ description
+ "Two way delay.";
+ }
+
+ identity receive-packets {
+ base performance-parameter-type;
+ description
+ "Total number of received packets.";
+ }
+
+ identity transmit-packets {
+ base performance-parameter-type;
+ description
+ "Total number of transmitted packets.";
+ }
+
+ identity ingress-bandwidth {
+ base performance-parameter-type;
+ description
+ "Current bandwidth usage of the ingress traffic.";
+ }
+
+ identity egress-bandwidth {
+ base performance-parameter-type;
+ description
+ "Current bandwidth usage of the egress traffic.";
+ }
+
+ identity alarm-status {
+ description "indicates whether there is alarm or not";
+ }
+ identity alarm {
+ base alarm-status;
+ description "There is one or multiple alarms from the monitor. ";
+ }
+
+ identity no-alarm {
+ base alarm-status;
+ description "There is no alarms from the monitor. ";
+ }
+
+ identity monitoring-state {
+ description
+ "The state of performance monitoring. ";
+ }
+
+ identity monitoring {
+ base monitoring-state;
+ description "The Ethernet client signal is under monitoring. ";
+ }
+
+ identity monitor-finished {
+ base monitoring-state;
+ description
+ "The monitoring of Ethernet client signal is finished. ";
+ }
+
+ identity monitor-failed {
+ base monitoring-state;
+ description
+ "The monitoring of Ethernet client signal is failed. ";
+ }
+
+ identity granularity-type {
+ description
+ "Monitoring granularity";
+ }
+
+ identity granularity-1min {
+ base granularity-type;
+ description
+ "1 minute";
+ }
+
+ identity granularity-15min {
+ base granularity-type;
+ description
+ "15 minutes";
+ }
+ identity granularity-24h {
+ base granularity-type;
+ description
+ "24 hours";
+ }
+
+ identity measure-method {
+ description "Measure method.";
+ }
+
+ identity measure-by-loopback {
+ base measure-method;
+ description "Loopback measure method.";
+ }
+
+ identity measure-at-ingress {
+ base measure-method;
+ description "Ingress measure method.";
+ }
+
+ container performance-monitoring {
+ description
+ "This part is for performance monitoring. ";
+ list service-pm {
+ key "service-name";
+ description
+ "The list of service to be monitored.";
+ leaf service-name {
+ mandatory true;
+ type leafref {
+ path "/ethtsvc:etht-svc/ethtsvc:etht-svc-instances"
+ + "/ethtsvc:etht-svc-name";
+ }
+ /** FIXME: DECHENG leafref under union not supported
+ type union {
+ type leafref {
+ path "/ethtsvc:etht-svc/ethtsvc:etht-svc-instances"
+ + "/ethtsvc:etht-svc-name";
+ }
+ type leafref {
+ path "/clntsvc:client-svc/clntsvc:client-svc-instances"
+ + "/clntsvc:client-svc-name";
+ }
+ }
+ **/
+ description "The name of service.";
+ }
+
+ leaf task-pm-enable {
+ type boolean;
+ description
+ "Indicate whether the performance monitoring
+ is enable or not.";
+ }
+
+ leaf granularity {
+ type identityref {
+ base granularity-type;
+ }
+ description
+ "Monitoring granularity";
+ }
+
+ list performance-data-config {
+ key parameter-name;
+ description
+ "Specify the performance parameters to be queried";
+
+ leaf parameter-name {
+ type identityref {
+ base performance-parameter-type;
+ }
+ description
+ "The name of parameters to be monitored.
+ For example, latency, BER, Bandwidth and so on.";
+ }
+ leaf measure-method {
+ type identityref {
+ base measure-method;
+ }
+ }
+ }
+
+ container service-pm-state {
+ config false;
+ description
+ "The state of service performance monitoring.";
+
+ container oam-state {
+ leaf cc-state {
+ mandatory true;
+ type enumeration {
+ enum up;
+ enum down;
+ }
+ }
+ leaf lm-state {
+ type enumeration {
+ enum up;
+ enum down;
+ }
+ }
+ leaf dm-state {
+ type enumeration {
+ enum up;
+ enum down;
+ }
+ }
+ }
+
+ list performance-data{
+ key parameter-name;
+ description "The list of performance under monitor.";
+ uses service-performance-monitor-set;
+ }
+
+ leaf monitor-state {
+ mandatory true;
+ type identityref {
+ base monitoring-state;
+ }
+ description "The status of performance monitoring. ";
+ }
+
+ container error-info {
+ description
+ "Describe the error message.";
+ leaf error-code {
+ type uint32;
+ description
+ "The code of error.";
+ }
+ leaf error-message {
+ type string;
+ description
+ "The message of error.";
+ }
+ }
+
+ container alarm {
+ description
+ "To retrieve the Alarm during performance Monitoring.";
+ leaf status {
+ type identityref {
+ base alarm-status;
+ }
+ description "The status of the alarm. ";
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te-packet-types@2020-06-10.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te-packet-types@2020-06-10.yang
new file mode 100644
index 0000000..e7f2154
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te-packet-types@2020-06-10.yang
@@ -0,0 +1,475 @@
+module ietf-te-packet-types {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-packet-types";
+ prefix te-packet-types;
+
+ /* Import TE generic types */
+
+ import ietf-te-types {
+ prefix te-types;
+ //reference
+ // "RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Rakesh Gandhi
+ <mailto:rgandhi@cisco.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>";
+ description
+ "This YANG module contains a collection of generally useful YANG
+ data type definitions specific to MPLS TE. The model fully
+ conforms to the Network Management Datastore Architecture
+ (NMDA).
+
+ Copyright (c) 2020 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8776; see the
+ RFC itself for full legal notices.";
+
+ revision 2020-06-10 {
+ description
+ "Latest revision of TE MPLS types.";
+ reference
+ "RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+
+ /**
+ * Typedefs
+ */
+
+ typedef te-bandwidth-requested-type {
+ type enumeration {
+ enum specified {
+ description
+ "Bandwidth is explicitly specified.";
+ }
+ enum auto {
+ description
+ "Bandwidth is automatically computed.";
+ }
+ }
+ description
+ "Enumerated type for specifying whether bandwidth is
+ explicitly specified or automatically computed.";
+ }
+
+ typedef te-class-type {
+ type uint8;
+ description
+ "Diffserv-TE Class-Type. Defines a set of Traffic Trunks
+ crossing a link that is governed by a specific set of
+ bandwidth constraints. Class-Type is used for the purposes
+ of link bandwidth allocation, constraint-based routing, and
+ admission control.";
+ reference
+ "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+ MPLS Traffic Engineering";
+ }
+
+ typedef bc-type {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Diffserv-TE bandwidth constraints as defined in RFC 4124.";
+ reference
+ "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+ MPLS Traffic Engineering";
+ }
+
+ typedef bandwidth-kbps {
+ type uint64;
+ units "Kbps";
+ description
+ "Bandwidth values, expressed in kilobits per second.";
+ }
+
+ typedef bandwidth-mbps {
+ type uint64;
+ units "Mbps";
+ description
+ "Bandwidth values, expressed in megabits per second.";
+ }
+
+ typedef bandwidth-gbps {
+ type uint64;
+ units "Gbps";
+ description
+ "Bandwidth values, expressed in gigabits per second.";
+ }
+
+ identity backup-protection-type {
+ description
+ "Base identity for the backup protection type.";
+ }
+
+ identity backup-protection-link {
+ base backup-protection-type;
+ description
+ "Backup provides link protection only.";
+ }
+
+ identity backup-protection-node-link {
+ base backup-protection-type;
+ description
+ "Backup offers node (preferred) or link protection.";
+ }
+
+ identity bc-model-type {
+ description
+ "Base identity for the Diffserv-TE Bandwidth Constraints
+ Model type.";
+ reference
+ "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+ MPLS Traffic Engineering";
+ }
+
+ identity bc-model-rdm {
+ base bc-model-type;
+ description
+ "Russian Dolls Bandwidth Constraints Model type.";
+ reference
+ "RFC 4127: Russian Dolls Bandwidth Constraints Model for
+ Diffserv-aware MPLS Traffic Engineering";
+ }
+
+ identity bc-model-mam {
+ base bc-model-type;
+ description
+ "Maximum Allocation Bandwidth Constraints Model type.";
+ reference
+ "RFC 4125: Maximum Allocation Bandwidth Constraints Model for
+ Diffserv-aware MPLS Traffic Engineering";
+ }
+
+ identity bc-model-mar {
+ base bc-model-type;
+ description
+ "Maximum Allocation with Reservation Bandwidth Constraints
+ Model type.";
+ reference
+ "RFC 4126: Max Allocation with Reservation Bandwidth
+ Constraints Model for Diffserv-aware MPLS Traffic Engineering
+ & Performance Comparisons";
+ }
+
+ grouping performance-metrics-attributes-packet {
+ description
+ "Contains PM attributes.";
+ uses te-types:performance-metrics-attributes {
+ augment "performance-metrics-one-way" {
+ leaf one-way-min-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "One-way minimum delay or latency in microseconds.";
+ }
+ leaf one-way-min-delay-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "One-way minimum delay or latency normality.";
+ }
+ leaf one-way-max-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "One-way maximum delay or latency in microseconds.";
+ }
+ leaf one-way-max-delay-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "One-way maximum delay or latency normality.";
+ }
+ leaf one-way-delay-variation {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "One-way delay variation in microseconds.";
+ reference
+ "RFC 5481: Packet Delay Variation Applicability
+ Statement, Section 4.2";
+ }
+ leaf one-way-delay-variation-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "One-way delay variation normality.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric
+ Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ leaf one-way-packet-loss {
+ type decimal64 {
+ fraction-digits 6;
+ range "0..50.331642";
+ }
+ description
+ "One-way packet loss as a percentage of the total traffic
+ sent over a configurable interval. The finest precision
+ is 0.000003%, where the maximum is 50.331642%.";
+ reference
+ "RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions, Section 4.4";
+ }
+ leaf one-way-packet-loss-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Packet loss normality.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric
+ Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ description
+ "PM one-way packet-specific augmentation for a generic PM
+ grouping.";
+ }
+ augment "performance-metrics-two-way" {
+ leaf two-way-min-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way minimum delay or latency in microseconds.";
+ }
+ leaf two-way-min-delay-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Two-way minimum delay or latency normality.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric
+ Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ leaf two-way-max-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way maximum delay or latency in microseconds.";
+ }
+ leaf two-way-max-delay-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Two-way maximum delay or latency normality.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric
+ Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ leaf two-way-delay-variation {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way delay variation in microseconds.";
+ reference
+ "RFC 5481: Packet Delay Variation Applicability
+ Statement, Section 4.2";
+ }
+ leaf two-way-delay-variation-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Two-way delay variation normality.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric
+ Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ leaf two-way-packet-loss {
+ type decimal64 {
+ fraction-digits 6;
+ range "0..50.331642";
+ }
+ default "0";
+ description
+ "Two-way packet loss as a percentage of the total traffic
+ sent over a configurable interval. The finest precision
+ is 0.000003%.";
+ }
+ leaf two-way-packet-loss-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Two-way packet loss normality.";
+ }
+ description
+ "PM two-way packet-specific augmentation for a generic PM
+ grouping.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for
+ Explicitly Routed Label Switched Paths (LSPs) Using
+ TE Metric Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions";
+ }
+ }
+ }
+
+ grouping one-way-performance-metrics-packet {
+ description
+ "One-way packet PM throttle grouping.";
+ leaf one-way-min-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "One-way minimum delay or latency in microseconds.";
+ }
+ leaf one-way-max-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "One-way maximum delay or latency in microseconds.";
+ }
+ leaf one-way-delay-variation {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "One-way delay variation in microseconds.";
+ }
+ leaf one-way-packet-loss {
+ type decimal64 {
+ fraction-digits 6;
+ range "0..50.331642";
+ }
+ default "0";
+ description
+ "One-way packet loss as a percentage of the total traffic
+ sent over a configurable interval. The finest precision is
+ 0.000003%.";
+ }
+ }
+
+ grouping two-way-performance-metrics-packet {
+ description
+ "Two-way packet PM throttle grouping.";
+ leaf two-way-min-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way minimum delay or latency in microseconds.";
+ }
+ leaf two-way-max-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way maximum delay or latency in microseconds.";
+ }
+ leaf two-way-delay-variation {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way delay variation in microseconds.";
+ }
+ leaf two-way-packet-loss {
+ type decimal64 {
+ fraction-digits 6;
+ range "0..50.331642";
+ }
+ default "0";
+ description
+ "Two-way packet loss as a percentage of the total traffic
+ sent over a configurable interval. The finest precision is
+ 0.000003%.";
+ }
+ }
+
+ grouping performance-metrics-throttle-container-packet {
+ description
+ "Packet PM threshold grouping.";
+ uses te-types:performance-metrics-throttle-container {
+ augment "throttle/threshold-out" {
+ uses one-way-performance-metrics-packet;
+ uses two-way-performance-metrics-packet;
+ description
+ "PM threshold-out packet augmentation for a
+ generic grouping.";
+ }
+ augment "throttle/threshold-in" {
+ uses one-way-performance-metrics-packet;
+ uses two-way-performance-metrics-packet;
+ description
+ "PM threshold-in packet augmentation for a
+ generic grouping.";
+ }
+ augment "throttle/threshold-accelerated-advertisement" {
+ uses one-way-performance-metrics-packet;
+ uses two-way-performance-metrics-packet;
+ description
+ "PM accelerated advertisement packet augmentation for a
+ generic grouping.";
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology-state@2020-08-06.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology-state@2020-08-06.yang
new file mode 100644
index 0000000..5a296bf
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology-state@2020-08-06.yang
@@ -0,0 +1,316 @@
+module ietf-te-topology-state {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-state";
+ prefix tet-s;
+
+ import ietf-te-types {
+ prefix te-types;
+ revision-date 2020-06-10;
+ //reference
+ // "RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+ import ietf-te-topology {
+ prefix tet;
+ revision-date 2020-08-06;
+ //reference
+ // "RFC 8795: YANG Data Model for Traffic Engineering (TE)
+ // Topologies";
+ }
+ import ietf-network-state {
+ prefix nw-s;
+ revision-date 2018-02-26;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ import ietf-network-topology-state {
+ prefix nt-s;
+ revision-date 2018-02-26;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Oscar Gonzalez de Dios
+ <mailto:oscar.gonzalezdedios@telefonica.com>";
+ description
+ "This YANG module defines a TE topology state model.
+
+ Copyright (c) 2020 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8795; see the
+ RFC itself for full legal notices.";
+
+ revision 2020-08-06 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8795: YANG Data Model for Traffic Engineering (TE)
+ Topologies";
+ }
+
+ /*
+ * Groupings
+ */
+
+ grouping te-node-connectivity-matrix-attributes {
+ description
+ "Termination point references of a connectivity matrix entry.";
+ container from {
+ description
+ "Reference to a source Link Termination Point (LTP).";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt-s:termination-point/nt-s:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ container to {
+ description
+ "Reference to a destination LTP.";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt-s:termination-point/nt-s:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ uses tet:connectivity-matrix-entry-path-attributes;
+ }
+ // te-node-connectivity-matrix-attributes
+
+ grouping te-node-tunnel-termination-point-llc-list {
+ description
+ "Local Link Connectivity List (LLCL) of a Tunnel Termination
+ Point (TTP) on a TE node.";
+ list local-link-connectivity {
+ key "link-tp-ref";
+ description
+ "The termination capabilities between the TTP and the LTP.
+ This capability information can be used to compute
+ the tunnel path.
+ The Interface Adjustment Capability Descriptors (IACDs)
+ (defined in RFC 6001) on each LTP can be derived from
+ this list.";
+ reference
+ "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ leaf link-tp-ref {
+ type leafref {
+ path "../../../../../nt-s:termination-point/nt-s:tp-id";
+ }
+ description
+ "LTP.";
+ }
+ uses te-types:label-set-info;
+ uses tet:connectivity-matrix-entry-path-attributes;
+ }
+ // local-link-connectivity
+ }
+ // te-node-tunnel-termination-point-llc-list
+
+ /*
+ * Data nodes
+ */
+
+ augment "/nw-s:networks/nw-s:network/nw-s:network-types" {
+ description
+ "Introduces a new network type for a TE topology.";
+ container te-topology {
+ presence "Indicates a TE topology";
+ description
+ "Its presence identifies the TE topology type.";
+ }
+ }
+
+ augment "/nw-s:networks" {
+ description
+ "Augmentation parameters for TE topologies.";
+ uses tet:te-topologies-augment;
+ }
+
+ augment "/nw-s:networks/nw-s:network" {
+ when 'nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for a TE topology.";
+ uses tet:te-topology-augment;
+ }
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node" {
+ when '../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the node level.";
+ leaf te-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.
+ A node is specific to a topology to which it belongs.";
+ }
+ container te {
+ must '../te-node-id' {
+ description
+ "'te-node-id' is mandatory.";
+ }
+ must 'count(../nw-s:supporting-node)<=1' {
+ description
+ "For a node in a TE topology, there cannot be more
+ than one supporting node. If multiple nodes are
+ abstracted, the 'underlay-topology' field is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses tet:te-node-augment;
+ }
+ }
+
+ augment "/nw-s:networks/nw-s:network/nt-s:link" {
+ when '../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the link level.";
+ container te {
+ must 'count(../nt-s:supporting-link)<=1' {
+ description
+ "For a link in a TE topology, there cannot be more
+ than one supporting link. If one or more link paths are
+ abstracted, the underlay is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses tet:te-link-augment;
+ }
+ }
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node/"
+ + "nt-s:termination-point" {
+ when '../../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the termination point
+ level.";
+ uses tet:te-termination-point-augment;
+ }
+ /** Decheng bypass excpetion
+ augment "/nw-s:networks/nw-s:network/nt-s:link/te/"
+ + "bundle-stack-level/bundle/bundled-links/bundled-link" {
+ when '../../../../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for a TE bundled link.";
+ leaf src-tp-ref {
+ type leafref {
+ path "../../../../../nw-s:node[nw-s:node-id = "
+ + "current()/../../../../nt-s:source/"
+ + "nt-s:source-node]/"
+ + "nt-s:termination-point/nt-s:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same source node.";
+ }
+ leaf des-tp-ref {
+ type leafref {
+ path "../../../../../nw-s:node[nw-s:node-id = "
+ + "current()/../../../../nt-s:destination/"
+ + "nt-s:dest-node]/"
+ + "nt-s:termination-point/nt-s:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same destination node.";
+ }
+ } **/
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
+ + "information-source-entry/connectivity-matrices/"
+ + "connectivity-matrix" {
+ when '../../../../../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
+ + "te-node-attributes/connectivity-matrices/"
+ + "connectivity-matrix" {
+ when '../../../../../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
+ + "tunnel-termination-point/local-link-connectivities" {
+ when '../../../../nw-s:network-types/tet-s:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for TE node TTP LLCs (Local Link
+ Connectivities).";
+ uses te-node-tunnel-termination-point-llc-list;
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang
new file mode 100644
index 0000000..abce181
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te-topology@2020-08-06.yang
@@ -0,0 +1,1952 @@
+module ietf-te-topology {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
+ prefix tet;
+
+ import ietf-yang-types {
+ prefix yang;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ //"RFC 6991: Common YANG Data Types";
+ }
+ import ietf-te-types {
+ prefix te-types;
+ //reference
+ //"RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+ import ietf-network {
+ prefix nw;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ import ietf-network-topology {
+ prefix nt;
+ //reference
+ //"RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Oscar Gonzalez de Dios
+ <mailto:oscar.gonzalezdedios@telefonica.com>";
+ description
+ "This YANG module defines a TE topology model for representing,
+ retrieving, and manipulating technology-agnostic TE topologies.
+
+ Copyright (c) 2020 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8795; see the
+ RFC itself for full legal notices.";
+
+ revision 2020-08-06 {
+ description
+ "Initial revision.";
+ reference
+ "RFC 8795: YANG Data Model for Traffic Engineering (TE)
+ Topologies";
+ }
+
+ /*
+ * Features
+ */
+
+ feature nsrlg {
+ description
+ "This feature indicates that the system supports NSRLGs
+ (Non-Shared Risk Link Groups).";
+ }
+
+ feature te-topology-hierarchy {
+ description
+ "This feature indicates that the system allows an underlay
+ and/or overlay TE topology hierarchy.";
+ }
+
+ feature template {
+ description
+ "This feature indicates that the system supports
+ template configuration.";
+ }
+
+ /*
+ * Typedefs
+ */
+
+ typedef geographic-coordinate-degree {
+ type decimal64 {
+ fraction-digits 8;
+ }
+ description
+ "Decimal degree (DD) used to express latitude and longitude
+ geographic coordinates.";
+ }
+ // geographic-coordinate-degree
+
+ typedef te-info-source {
+ type enumeration {
+ enum unknown {
+ description
+ "The source is unknown.";
+ }
+ enum locally-configured {
+ description
+ "Configured entity.";
+ }
+ enum ospfv2 {
+ description
+ "OSPFv2.";
+ }
+ enum ospfv3 {
+ description
+ "OSPFv3.";
+ }
+ enum isis {
+ description
+ "IS-IS.";
+ }
+ enum bgp-ls {
+ description
+ "BGP-LS.";
+ reference
+ "RFC 7752: North-Bound Distribution of Link-State and
+ Traffic Engineering (TE) Information Using BGP";
+ }
+ enum system-processed {
+ description
+ "System-processed entity.";
+ }
+ enum other {
+ description
+ "Other source.";
+ }
+ }
+ description
+ "Describes the type of source that has provided the
+ related information, and the source's credibility.";
+ }
+ // te-info-source
+
+ /*
+ * Groupings
+ */
+
+ grouping connectivity-matrix-entry-path-attributes {
+ description
+ "Attributes of a connectivity matrix entry.";
+ leaf is-allowed {
+ type boolean;
+ description
+ "'true' - switching is allowed;
+ 'false' - switching is disallowed.";
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ description
+ "Attributes of the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ uses te-link-underlay-attributes;
+ }
+ uses te-types:generic-path-constraints;
+ uses te-types:generic-path-optimization;
+ uses te-types:generic-path-properties;
+ }
+ // connectivity-matrix-entry-path-attributes
+
+ grouping geolocation-container {
+ description
+ "Contains a GPS location.";
+ container geolocation {
+ config false;
+ description
+ "Contains a GPS location.";
+ leaf altitude {
+ type int64;
+ units "millimeters";
+ description
+ "Distance above sea level.";
+ }
+ leaf latitude {
+ type geographic-coordinate-degree {
+ range "-90..90";
+ }
+ description
+ "Relative position north or south on the Earth's surface.";
+ }
+ leaf longitude {
+ type geographic-coordinate-degree {
+ range "-180..180";
+ }
+ description
+ "Angular distance east or west on the Earth's surface.";
+ }
+ }
+ // geolocation
+ }
+ // geolocation-container
+
+ grouping information-source-state-attributes {
+ description
+ "The attributes identifying the source that has provided the
+ related information, and the source's credibility.";
+ leaf credibility-preference {
+ type uint16;
+ description
+ "The preference value for calculating the Traffic
+ Engineering database credibility value used for
+ tie-break selection between different information-source
+ values. A higher value is preferable.";
+ }
+ leaf logical-network-element {
+ type string;
+ description
+ "When applicable, this is the name of a logical network
+ element from which the information is learned.";
+ }
+ leaf network-instance {
+ type string;
+ description
+ "When applicable, this is the name of a network instance
+ from which the information is learned.";
+ }
+ }
+ // information-source-state-attributes
+
+ grouping information-source-per-link-attributes {
+ description
+ "Per-node container of the attributes identifying the source
+ that has provided the related information, and the source's
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ config false;
+ description
+ "Indicates the type of information source.";
+ }
+ leaf information-source-instance {
+ type string;
+ config false;
+ description
+ "The name indicating the instance of the information
+ source.";
+ }
+ container information-source-state {
+ config false;
+ description
+ "Contains state attributes related to the information
+ source.";
+ uses information-source-state-attributes;
+ container topology {
+ description
+ "When the information is processed by the system,
+ the attributes in this container indicate which topology
+ is used to generate the result information.";
+ uses nt:link-ref;
+ }
+ }
+ }
+ // information-source-per-link-attributes
+
+ grouping information-source-per-node-attributes {
+ description
+ "Per-node container of the attributes identifying the source
+ that has provided the related information, and the source's
+ credibility.";
+ leaf information-source {
+ type te-info-source;
+ config false;
+ description
+ "Indicates the type of information source.";
+ }
+ leaf information-source-instance {
+ type string;
+ config false;
+ description
+ "The name indicating the instance of the information
+ source.";
+ }
+ container information-source-state {
+ config false;
+ description
+ "Contains state attributes related to the information
+ source.";
+ uses information-source-state-attributes;
+ container topology {
+ description
+ "When the information is processed by the system,
+ the attributes in this container indicate which topology
+ is used to generate the result information.";
+ uses nw:node-ref;
+ }
+ }
+ }
+ // information-source-per-node-attributes
+
+ grouping interface-switching-capability-list {
+ description
+ "List of Interface Switching Capability Descriptors (ISCDs).";
+ list interface-switching-capability {
+ key "switching-capability encoding";
+ description
+ "List of ISCDs for this link.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description
+ RFC 4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for this interface.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by this interface.";
+ }
+ uses te-link-iscd-attributes;
+ }
+ // interface-switching-capability
+ }
+ // interface-switching-capability-list
+
+ grouping statistics-per-link {
+ description
+ "Statistics attributes per TE link.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of 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.";
+ }
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a link was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a link was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a link was taken out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a link was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a link was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that a link was set to an operational state
+ of 'down'.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that a link was set to an operational state
+ of 'up'.";
+ }
+ /* Recovery attributes */
+ leaf fault-clears {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced a fault-clear
+ event.";
+ }
+ leaf fault-detects {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced fault detection.";
+ }
+ leaf protection-switches {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced protection
+ switchover.";
+ }
+ leaf protection-reverts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced protection
+ reversion.";
+ }
+ leaf restoration-failures {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ failure.";
+ }
+ leaf restoration-starts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ start.";
+ }
+ leaf restoration-successes {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ success.";
+ }
+ leaf restoration-reversion-failures {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion failure.";
+ }
+ leaf restoration-reversion-starts {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion start.";
+ }
+ leaf restoration-reversion-successes {
+ type yang:counter32;
+ description
+ "Number of times that a link experienced restoration
+ reversion success.";
+ }
+ }
+ // statistics-per-link
+
+ grouping statistics-per-node {
+ description
+ "Statistics attributes per TE node.";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of 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.";
+ }
+ container node {
+ description
+ "Contains statistics attributes at the TE node level.";
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a node was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a node was enabled.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a node was put in maintenance.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a node was taken out of
+ maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a node was modified.";
+ }
+ }
+ // node
+ container connectivity-matrix-entry {
+ description
+ "Contains statistics attributes at the level of a
+ connectivity matrix entry.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ created.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'create' operation";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ deleted.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'delete' operation";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a connectivity matrix entry was
+ modified.";
+ }
+ }
+ // connectivity-matrix-entry
+ }
+ // statistics-per-node
+
+ grouping statistics-per-ttp {
+ description
+ "Statistics attributes per TE TTP (Tunnel Termination Point).";
+ leaf discontinuity-time {
+ type yang:date-and-time;
+ description
+ "The time of 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.";
+ }
+ container tunnel-termination-point {
+ description
+ "Contains statistics attributes at the TE TTP level.";
+ /* Administrative attributes */
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was enabled.";
+ }
+ leaf maintenance-clears {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was taken out of maintenance.";
+ }
+ leaf maintenance-sets {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was put in maintenance.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was modified.";
+ }
+ /* Operational attributes */
+ leaf downs {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was set to an operational state
+ of 'down'.";
+ }
+ leaf ups {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was set to an operational state
+ of 'up'.";
+ }
+ leaf in-service-clears {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was taken out of service
+ (TE tunnel was released).";
+ }
+ leaf in-service-sets {
+ type yang:counter32;
+ description
+ "Number of times that a TTP was put in service by a TE
+ tunnel (TE tunnel was set up).";
+ }
+ }
+ // tunnel-termination-point
+ container local-link-connectivity {
+ description
+ "Contains statistics attributes at the TE LLCL (Local Link
+ Connectivity List) level.";
+ leaf creates {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was created.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'create' operation";
+ }
+ leaf deletes {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was deleted.";
+ reference
+ "RFC 6241: Network Configuration Protocol (NETCONF),
+ Section 7.2, 'delete' operation";
+ }
+ leaf disables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was disabled.";
+ }
+ leaf enables {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was enabled.";
+ }
+ leaf modifies {
+ type yang:counter32;
+ description
+ "Number of times that an LLCL entry was modified.";
+ }
+ }
+ // local-link-connectivity
+ }
+ // statistics-per-ttp
+
+ grouping te-link-augment {
+ description
+ "Augmentation for a TE link.";
+ uses te-link-config;
+ uses te-link-state-derived;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-link;
+ }
+ }
+ // te-link-augment
+
+ grouping te-link-config {
+ description
+ "TE link configuration grouping.";
+ choice bundle-stack-level {
+ description
+ "The TE link can be partitioned into bundled links or
+ component links.";
+ case bundle {
+ container bundled-links {
+ description
+ "A set of bundled links.";
+ reference
+ "RFC 4201: Link Bundling in MPLS Traffic
+ Engineering (TE)";
+ list bundled-link {
+ key "sequence";
+ description
+ "Specifies a bundled interface that is
+ further partitioned.";
+ leaf sequence {
+ type uint32;
+ description
+ "Identifies the sequence in the bundle.";
+ }
+ }
+ }
+ }
+ case component {
+ container component-links {
+ description
+ "A set of component links.";
+ list component-link {
+ key "sequence";
+ description
+ "Specifies a component interface that is
+ sufficient to unambiguously identify the
+ appropriate resources.";
+ leaf sequence {
+ type uint32;
+ description
+ "Identifies the sequence in the bundle.";
+ }
+ leaf src-interface-ref {
+ type string;
+ description
+ "Reference to a component link interface on the
+ source node.";
+ }
+ leaf des-interface-ref {
+ type string;
+ description
+ "Reference to a component link interface on the
+ destination node.";
+ }
+ }
+ }
+ }
+ }
+ // bundle-stack-level
+ leaf-list te-link-template {
+ if-feature "template";
+ type leafref {
+ path "../../../../te/templates/link-template/name";
+ }
+ description
+ "The reference to a TE link template.";
+ }
+ uses te-link-config-attributes;
+ }
+ // te-link-config
+
+ grouping te-link-config-attributes {
+ description
+ "Link configuration attributes in a TE topology.";
+ container te-link-attributes {
+ description
+ "Link attributes in a TE topology.";
+ leaf access-type {
+ type te-types:te-link-access-type;
+ description
+ "Link access type, which can be point-to-point or
+ multi-access.";
+ }
+ container external-domain {
+ description
+ "For an inter-domain link, specifies the attributes of
+ the remote end of the link, to facilitate the signaling at
+ the local end.";
+ uses nw:network-ref;
+ leaf remote-te-node-id {
+ type te-types:te-node-id;
+ description
+ "Remote TE node identifier, used together with
+ 'remote-te-link-tp-id' to identify the remote Link
+ Termination Point (LTP) in a different domain.";
+ }
+ leaf remote-te-link-tp-id {
+ type te-types:te-tp-id;
+ description
+ "Remote TE LTP identifier, used together with
+ 'remote-te-node-id' to identify the remote LTP in a
+ different domain.";
+ }
+ }
+ leaf is-abstract {
+ type empty;
+ description
+ "Present if the link is abstract.";
+ }
+ leaf name {
+ type string;
+ description
+ "Link name.";
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ description
+ "Attributes of the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ uses te-link-underlay-attributes;
+ }
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-link-info-attributes;
+ }
+ // te-link-attributes
+ }
+ // te-link-config-attributes
+
+ grouping te-link-info-attributes {
+ description
+ "Advertised TE information attributes.";
+ leaf link-index {
+ type uint64;
+ description
+ "The link identifier. If OSPF is used, this object
+ represents an ospfLsdbID. If IS-IS is used, this object
+ represents an isisLSPID. If a locally configured link is
+ used, this object represents a unique value, which is
+ locally defined in a router.";
+ }
+ leaf administrative-group {
+ type te-types:admin-groups;
+ description
+ "Administrative group or color of the link.
+ This attribute covers both administrative groups (defined
+ in RFCs 3630 and 5305) and Extended Administrative Groups
+ (defined in RFC 7308).";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering
+ RFC 7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE)";
+ }
+ uses interface-switching-capability-list;
+ uses te-types:label-set-info;
+ leaf link-protection-type {
+ type identityref {
+ base te-types:link-protection-type;
+ }
+ description
+ "Link Protection Type desired for this link.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+ container max-link-bandwidth {
+ uses te-types:te-bandwidth;
+ description
+ "Maximum bandwidth that can be seen on this link in this
+ direction. Units are in bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ container max-resv-link-bandwidth {
+ uses te-types:te-bandwidth;
+ description
+ "Maximum amount of bandwidth that can be reserved in this
+ direction in this link. Units are in bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ list unreserved-bandwidth {
+ key "priority";
+ max-elements 8;
+ description
+ "Unreserved bandwidth for priority levels 0-7. Units are in
+ bytes per second.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Priority.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ leaf te-default-metric {
+ type uint32;
+ description
+ "Traffic Engineering metric.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+ leaf te-delay-metric {
+ type uint32;
+ description
+ "Traffic Engineering delay metric.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+ }
+ leaf te-igp-metric {
+ type uint32;
+ description
+ "IGP metric used for Traffic Engineering.";
+ reference
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+ second MPLS Traffic Engineering (TE) Metric";
+ }
+ container te-srlgs {
+ description
+ "Contains a list of SRLGs.";
+ leaf-list value {
+ type te-types:srlg;
+ description
+ "SRLG value.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+ }
+ container te-nsrlgs {
+ if-feature "nsrlg";
+ description
+ "Contains a list of NSRLGs (Non-Shared Risk Link Groups).
+ When an abstract TE link is configured, this list specifies
+ the request that underlay TE paths need to be mutually
+ disjoint with other TE links in the same groups.";
+ leaf-list id {
+ type uint32;
+ description
+ "NSRLG ID, uniquely configured within a topology.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ }
+ }
+ }
+ // te-link-info-attributes
+
+ grouping te-link-iscd-attributes {
+ description
+ "TE link ISCD attributes.";
+ reference
+ "RFC 4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS), Section 1.4";
+ list max-lsp-bandwidth {
+ key "priority";
+ max-elements 8;
+ description
+ "Maximum Label Switched Path (LSP) bandwidth at
+ priorities 0-7.";
+ leaf priority {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "Priority.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ }
+ // te-link-iscd-attributes
+
+ grouping te-link-state-derived {
+ description
+ "Link state attributes in a TE topology.";
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the link.";
+ }
+ leaf is-transitional {
+ type empty;
+ config false;
+ description
+ "Present if the link is transitional; used as an
+ alternative approach in lieu of 'inter-layer-lock-id'
+ for path computation in a TE topology covering multiple
+ layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ uses information-source-per-link-attributes;
+ list information-source-entry {
+ key "information-source information-source-instance";
+ config false;
+ description
+ "A list of information sources learned, including the source
+ that is used.";
+ uses information-source-per-link-attributes;
+ uses te-link-info-attributes;
+ }
+ container recovery {
+ config false;
+ description
+ "Status of the recovery process.";
+ leaf restoration-status {
+ type te-types:te-recovery-status;
+ description
+ "Restoration status.";
+ }
+ leaf protection-status {
+ type te-types:te-recovery-status;
+ description
+ "Protection status.";
+ }
+ }
+ container underlay {
+ if-feature "te-topology-hierarchy";
+ config false;
+ description
+ "State attributes for the TE link underlay.";
+ leaf dynamic {
+ type boolean;
+ description
+ "'true' if the underlay is dynamically created.";
+ }
+ leaf committed {
+ type boolean;
+ description
+ "'true' if the underlay is committed.";
+ }
+ }
+ }
+ // te-link-state-derived
+
+ grouping te-link-underlay-attributes {
+ description
+ "Attributes for the TE link underlay.";
+ reference
+ "RFC 4206: Label Switched Paths (LSP) Hierarchy with
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Traffic Engineering (TE)";
+ leaf enabled {
+ type boolean;
+ description
+ "'true' if the underlay is enabled.
+ 'false' if the underlay is disabled.";
+ }
+ container primary-path {
+ description
+ "The service path on the underlay topology that
+ supports this link.";
+ uses nw:network-ref;
+ list path-element {
+ key "path-element-id";
+ description
+ "A list of path elements describing the service path.";
+ leaf path-element-id {
+ type uint32;
+ description
+ "To identify the element in a path.";
+ }
+ uses te-path-element;
+ }
+ }
+ // primary-path
+ list backup-path {
+ key "index";
+ description
+ "A list of backup service paths on the underlay topology that
+ protect the underlay primary path. If the primary path is
+ not protected, the list contains zero elements. If the
+ primary path is protected, the list contains one or more
+ elements.";
+ leaf index {
+ type uint32;
+ description
+ "A sequence number to identify a backup path.";
+ }
+ uses nw:network-ref;
+ list path-element {
+ key "path-element-id";
+ description
+ "A list of path elements describing the backup service
+ path.";
+ leaf path-element-id {
+ type uint32;
+ description
+ "To identify the element in a path.";
+ }
+ uses te-path-element;
+ }
+ }
+ // backup-path
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ description
+ "Underlay protection type desired for this link.";
+ }
+ container tunnel-termination-points {
+ description
+ "Underlay TTPs desired for this link.";
+ leaf source {
+ type binary;
+ description
+ "Source TTP identifier.";
+ }
+ leaf destination {
+ type binary;
+ description
+ "Destination TTP identifier.";
+ }
+ }
+ container tunnels {
+ description
+ "Underlay TE tunnels supporting this TE link.";
+ leaf sharing {
+ type boolean;
+ default "true";
+ description
+ "'true' if the underlay tunnel can be shared with other
+ TE links;
+ 'false' if the underlay tunnel is dedicated to this
+ TE link.
+ This leaf is the default option for all TE tunnels
+ and may be overridden by the per-TE-tunnel value.";
+ }
+ list tunnel {
+ key "tunnel-name";
+ description
+ "Zero, one, or more underlay TE tunnels that support this
+ TE link.";
+ leaf tunnel-name {
+ type string;
+ description
+ "A tunnel name uniquely identifies an underlay TE tunnel,
+ used together with the 'source-node' value for this
+ link.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+ leaf sharing {
+ type boolean;
+ description
+ "'true' if the underlay tunnel can be shared with other
+ TE links;
+ 'false' if the underlay tunnel is dedicated to this
+ TE link.";
+ }
+ }
+ // tunnel
+ }
+ // tunnels
+ }
+ // te-link-underlay-attributes
+
+ grouping te-node-augment {
+ description
+ "Augmentation for a TE node.";
+ uses te-node-config;
+ uses te-node-state-derived;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-node;
+ }
+ list tunnel-termination-point {
+ key "tunnel-tp-id";
+ description
+ "A termination point can terminate a tunnel.";
+ leaf tunnel-tp-id {
+ type binary;
+ description
+ "TTP identifier.";
+ }
+ uses te-node-tunnel-termination-point-config;
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the TTP.";
+ }
+ uses geolocation-container;
+ container statistics {
+ config false;
+ description
+ "Statistics data.";
+ uses statistics-per-ttp;
+ }
+ // Relationship to other TTPs
+ list supporting-tunnel-termination-point {
+ key "node-ref tunnel-tp-ref";
+ description
+ "Identifies the TTPs on which this TTP depends.";
+ leaf node-ref {
+ type inet:uri;
+ description
+ "This leaf identifies the node in which the supporting
+ TTP is present.
+ This node is either the supporting node or a node in
+ an underlay topology.";
+ }
+ leaf tunnel-tp-ref {
+ type binary;
+ description
+ "Reference to a TTP that is in either the supporting node
+ or a node in an underlay topology.";
+ }
+ }
+ // supporting-tunnel-termination-point
+ }
+ // tunnel-termination-point
+ }
+ // te-node-augment
+
+ grouping te-node-config {
+ description
+ "TE node configuration grouping.";
+ leaf-list te-node-template {
+ if-feature "template";
+ type leafref {
+ path "../../../../te/templates/node-template/name";
+ }
+ description
+ "The reference to a TE node template.";
+ }
+ uses te-node-config-attributes;
+ }
+ // te-node-config
+
+ grouping te-node-config-attributes {
+ description
+ "Configuration node attributes in a TE topology.";
+ container te-node-attributes {
+ description
+ "Contains node attributes in a TE topology.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-node-connectivity-matrices;
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-config-attributes
+
+ grouping te-node-config-attributes-template {
+ description
+ "Configuration node attributes for a template in a TE
+ topology.";
+ container te-node-attributes {
+ description
+ "Contains node attributes in a TE topology.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the link.";
+ }
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-config-attributes-template
+
+ grouping te-node-connectivity-matrices {
+ description
+ "Connectivity matrix on a TE node.";
+ container connectivity-matrices {
+ description
+ "Contains a connectivity matrix on a TE node.";
+ leaf number-of-entries {
+ type uint16;
+ description
+ "The number of connectivity matrix entries.
+ If this number is specified in the configuration request,
+ the number is the requested number of entries, which may
+ not all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ list connectivity-matrix {
+ key "id";
+ description
+ "Represents a node's switching limitations, i.e.,
+ limitations in the interconnecting network TE links
+ across the node.";
+ reference
+ "RFC 7579: General Network Element Constraint Encoding
+ for GMPLS-Controlled Networks";
+ leaf id {
+ type uint32;
+ description
+ "Identifies the connectivity matrix entry.";
+ }
+ }
+ // connectivity-matrix
+ }
+ // connectivity-matrices
+ }
+ // te-node-connectivity-matrices
+
+ grouping te-node-connectivity-matrix-attributes {
+ description
+ "Termination point references of a connectivity matrix entry.";
+ container from {
+ description
+ "Reference to a source LTP.";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ container to {
+ description
+ "Reference to a destination LTP.";
+ leaf tp-ref {
+ type leafref {
+ path "../../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "Relative reference to a termination point.";
+ }
+ uses te-types:label-set-info;
+ }
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ // te-node-connectivity-matrix-attributes
+
+ grouping te-node-info-attributes {
+ description
+ "Advertised TE information attributes.";
+ leaf domain-id {
+ type uint32;
+ description
+ "Identifies the domain to which this node belongs.
+ This attribute is used to support inter-domain links.";
+ reference
+ "RFC 5152: A Per-Domain Path Computation Method for
+ Establishing Inter-Domain Traffic Engineering (TE)
+ Label Switched Paths (LSPs)
+ RFC 5316: ISIS Extensions in Support of Inter-Autonomous
+ System (AS) MPLS and GMPLS Traffic Engineering
+ RFC 5392: OSPF Extensions in Support of Inter-Autonomous
+ System (AS) MPLS and GMPLS Traffic Engineering";
+ }
+ leaf is-abstract {
+ type empty;
+ description
+ "Present if the node is abstract; not present if the node
+ is actual.";
+ }
+ leaf name {
+ type string;
+ description
+ "Node name.";
+ }
+ leaf-list signaling-address {
+ type inet:ip-address;
+ description
+ "The node's signaling address.";
+ }
+ container underlay-topology {
+ if-feature "te-topology-hierarchy";
+ description
+ "When an abstract node encapsulates a topology, the
+ attributes in this container point to said topology.";
+ uses nw:network-ref;
+ }
+ }
+ // te-node-info-attributes
+
+ grouping te-node-state-derived {
+ description
+ "Node state attributes in a TE topology.";
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the node.";
+ }
+ uses geolocation-container;
+ leaf is-multi-access-dr {
+ type empty;
+ config false;
+ description
+ "The presence of this attribute indicates that this TE node
+ is a pseudonode elected as a designated router.";
+ reference
+ "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
+ Environments
+ RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2";
+ }
+ uses information-source-per-node-attributes;
+ list information-source-entry {
+ key "information-source information-source-instance";
+ config false;
+ description
+ "A list of information sources learned, including the source
+ that is used.";
+ uses information-source-per-node-attributes;
+ uses te-node-connectivity-matrices;
+ uses te-node-info-attributes;
+ }
+ }
+ // te-node-state-derived
+
+ grouping te-node-tunnel-termination-point-config {
+ description
+ "Termination capability of a TTP on a TE node.";
+ uses te-node-tunnel-termination-point-config-attributes;
+ container local-link-connectivities {
+ description
+ "Contains an LLCL for a TTP on a TE node.";
+ leaf number-of-entries {
+ type uint16;
+ description
+ "The number of LLCL entries.
+ If this number is specified in the configuration request,
+ the number is the requested number of entries, which may
+ not all be listed in the list;
+ if this number is reported in the state data,
+ the number is the current number of operational entries.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ }
+ // te-node-tunnel-termination-point-config
+
+ grouping te-node-tunnel-termination-point-config-attributes {
+ description
+ "Configuration attributes of a TTP on a TE node.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the TTP.";
+ }
+ leaf name {
+ type string;
+ description
+ "A descriptive name for the TTP.";
+ }
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for this interface.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by this interface.";
+ }
+ leaf-list inter-layer-lock-id {
+ type uint32;
+ description
+ "Inter-layer lock ID, used for path computation in a TE
+ topology covering multiple layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ description
+ "The protection type that this TTP is capable of.";
+ }
+ container client-layer-adaptation {
+ description
+ "Contains capability information to support a client-layer
+ adaptation in a multi-layer topology.";
+ list switching-capability {
+ key "switching-capability encoding";
+ description
+ "List of supported switching capabilities.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ leaf switching-capability {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ description
+ "Switching capability for the client-layer adaptation.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ description
+ "Encoding supported by the client-layer adaptation.";
+ }
+ uses te-types:te-bandwidth;
+ }
+ }
+ }
+ // te-node-tunnel-termination-point-config-attributes
+
+ grouping te-node-tunnel-termination-point-llc-list {
+ description
+ "LLCL of a TTP on a TE node.";
+ list local-link-connectivity {
+ key "link-tp-ref";
+ description
+ "The termination capabilities between the TTP and the LTP.
+ This capability information can be used to compute
+ the tunnel path.
+ The Interface Adjustment Capability Descriptors (IACDs)
+ (defined in RFC 6001) on each LTP can be derived from
+ this list.";
+ reference
+ "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ leaf link-tp-ref {
+ type leafref {
+ path "../../../../../nt:termination-point/nt:tp-id";
+ }
+ description
+ "LTP.";
+ }
+ uses te-types:label-set-info;
+ uses connectivity-matrix-entry-path-attributes;
+ }
+ }
+ // te-node-tunnel-termination-point-llc-list
+
+ grouping te-path-element {
+ description
+ "A group of attributes defining an element in a TE path,
+ such as a TE node, TE link, TE atomic resource, or label.";
+ uses te-types:explicit-route-hop;
+ }
+ // te-path-element
+
+ grouping te-termination-point-augment {
+ description
+ "Augmentation for a TE termination point.";
+ leaf te-tp-id {
+ type te-types:te-tp-id;
+ description
+ "An identifier that uniquely identifies a TE termination
+ point.";
+ }
+ container te {
+ must '../te-tp-id';
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-termination-point-config;
+ leaf oper-status {
+ type te-types:te-oper-status;
+ config false;
+ description
+ "The current operational state of the LTP.";
+ }
+ uses geolocation-container;
+ }
+ }
+ // te-termination-point-augment
+
+ grouping te-termination-point-config {
+ description
+ "TE termination point configuration grouping.";
+ leaf admin-status {
+ type te-types:te-admin-status;
+ description
+ "The administrative state of the LTP.";
+ }
+ leaf name {
+ type string;
+ description
+ "A descriptive name for the LTP.";
+ }
+ uses interface-switching-capability-list;
+ leaf inter-domain-plug-id {
+ type binary;
+ description
+ "A network-wide unique number that identifies on the
+ network a connection that supports a given inter-domain
+ TE link. This is a more flexible alternative to specifying
+ 'remote-te-node-id' and 'remote-te-link-tp-id' on a TE link
+ when the provider either does not know 'remote-te-node-id'
+ and 'remote-te-link-tp-id' or needs to give the client the
+ flexibility to mix and match multiple topologies.";
+ }
+ leaf-list inter-layer-lock-id {
+ type uint32;
+ description
+ "Inter-layer lock ID, used for path computation in a TE
+ topology covering multiple layers or multiple regions.";
+ reference
+ "RFC 5212: Requirements for GMPLS-Based Multi-Region and
+ Multi-Layer Networks (MRN/MLN)
+ RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
+ for Multi-Layer and Multi-Region Networks (MLN/MRN)";
+ }
+ }
+ // te-termination-point-config
+
+ grouping te-topologies-augment {
+ description
+ "Augmentation for TE topologies.";
+ container te {
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ container templates {
+ description
+ "Configuration parameters for templates used for a TE
+ topology.";
+ list node-template {
+ if-feature "template";
+ key "name";
+ leaf name {
+ type te-types:te-template-name;
+ description
+ "The name to identify a TE node template.";
+ }
+ description
+ "The list of TE node templates used to define sharable
+ and reusable TE node attributes.";
+ uses template-attributes;
+ uses te-node-config-attributes-template;
+ }
+ // node-template
+ list link-template {
+ if-feature "template";
+ key "name";
+ leaf name {
+ type te-types:te-template-name;
+ description
+ "The name to identify a TE link template.";
+ }
+ description
+ "The list of TE link templates used to define sharable
+ and reusable TE link attributes.";
+ uses template-attributes;
+ uses te-link-config-attributes;
+ }
+ // link-template
+ }
+ // templates
+ }
+ // te
+ }
+ // te-topologies-augment
+
+ grouping te-topology-augment {
+ description
+ "Augmentation for a TE topology.";
+ uses te-types:te-topology-identifier;
+ container te {
+ must '../te-topology-identifier/provider-id'
+ + ' and ../te-topology-identifier/client-id'
+ + ' and ../te-topology-identifier/topology-id';
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-topology-config;
+ uses geolocation-container;
+ }
+ }
+ // te-topology-augment
+
+ grouping te-topology-config {
+ description
+ "TE topology configuration grouping.";
+ leaf name {
+ type string;
+ description
+ "Name of the TE topology. This attribute is optional and can
+ be specified by the operator to describe the TE topology,
+ which can be useful when 'network-id' (RFC 8345) is not
+ descriptive and not modifiable because of being generated
+ by the system.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ description
+ "Specifies a preference for this topology. A lower number
+ indicates a higher preference.";
+ }
+ leaf optimization-criterion {
+ type identityref {
+ base te-types:objective-function-type;
+ }
+ description
+ "Optimization criterion applied to this topology.";
+ reference
+ "RFC 3272: Overview and Principles of Internet Traffic
+ Engineering";
+ }
+ list nsrlg {
+ if-feature "nsrlg";
+ key "id";
+ description
+ "List of NSRLGs (Non-Shared Risk Link Groups).";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS)
+ Recovery";
+ leaf id {
+ type uint32;
+ description
+ "Identifies the NSRLG entry.";
+ }
+ leaf disjointness {
+ type te-types:te-path-disjointness;
+ description
+ "The type of resource disjointness.";
+ }
+ }
+ // nsrlg
+ }
+ // te-topology-config
+
+ grouping template-attributes {
+ description
+ "Common attributes for all templates.";
+ leaf priority {
+ type uint16;
+ description
+ "The preference value for resolving conflicts between
+ different templates. When two or more templates specify
+ values for one configuration attribute, the value from the
+ template with the highest priority is used.
+ A lower number indicates a higher priority. The highest
+ priority is 0.";
+ }
+ leaf reference-change-policy {
+ type enumeration {
+ enum no-action {
+ description
+ "When an attribute changes in this template, the
+ configuration node referring to this template does
+ not take any action.";
+ }
+ enum not-allowed {
+ description
+ "When any configuration object has a reference to this
+ template, changing this template is not allowed.";
+ }
+ enum cascade {
+ description
+ "When an attribute changes in this template, the
+ configuration object referring to this template applies
+ the new attribute value to the corresponding
+ configuration.";
+ }
+ }
+ description
+ "This attribute specifies the action taken for a
+ configuration node that has a reference to this template.";
+ }
+ }
+ // template-attributes
+
+ /*
+ * Data nodes
+ */
+
+ augment "/nw:networks/nw:network/nw:network-types" {
+ description
+ "Introduces a new network type for a TE topology.";
+ container te-topology {
+ presence "Indicates a TE topology";
+ description
+ "Its presence identifies the TE topology type.";
+ }
+ }
+
+ augment "/nw:networks" {
+ description
+ "Augmentation parameters for TE topologies.";
+ uses te-topologies-augment;
+ }
+
+ augment "/nw:networks/nw:network" {
+ when 'nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for a TE topology.";
+ uses te-topology-augment;
+ }
+
+ augment "/nw:networks/nw:network/nw:node" {
+ when '../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the node level.";
+ leaf te-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of a node in the TE topology.
+ A node is specific to a topology to which it belongs.";
+ }
+ container te {
+ must '../te-node-id' {
+ description
+ "'te-node-id' is mandatory.";
+ }
+ must 'count(../nw:supporting-node)<=1' {
+ description
+ "For a node in a TE topology, there cannot be more
+ than one supporting node. If multiple nodes are
+ abstracted, the 'underlay-topology' field is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-node-augment;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nt:link" {
+ when '../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the link level.";
+ container te {
+ must 'count(../nt:supporting-link)<=1' {
+ description
+ "For a link in a TE topology, there cannot be more
+ than one supporting link. If one or more link paths are
+ abstracted, the underlay is used.";
+ }
+ presence "TE support";
+ description
+ "Indicates TE support.";
+ uses te-link-augment;
+ }
+ }
+
+ augment "/nw:networks/nw:network/nw:node/"
+ + "nt:termination-point" {
+ when '../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Configuration parameters for TE at the termination point
+ level.";
+ uses te-termination-point-augment;
+ }
+ /** Decheng bypass exception
+ augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
+ + "bundle/bundled-links/bundled-link" {
+ when '../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for a TE bundled link.";
+ leaf src-tp-ref {
+ type leafref {
+ path "../../../../../nw:node[nw:node-id = "
+ + "current()/../../../../nt:source/"
+ + "nt:source-node]/"
+ + "nt:termination-point/nt:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same source node.";
+ }
+ leaf des-tp-ref {
+ type leafref {
+ path "../../../../../nw:node[nw:node-id = "
+ + "current()/../../../../nt:destination/"
+ + "nt:dest-node]/"
+ + "nt:termination-point/nt:tp-id";
+ require-instance true;
+ }
+ description
+ "Reference to another TE termination point on the
+ same destination node.";
+ }
+ } **/
+
+ augment "/nw:networks/nw:network/nw:node/te/"
+ + "information-source-entry/connectivity-matrices/"
+ + "connectivity-matrix" {
+ when '../../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
+ + "connectivity-matrices/connectivity-matrix" {
+ when '../../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for the TE node connectivity matrix.";
+ uses te-node-connectivity-matrix-attributes;
+ }
+
+ augment "/nw:networks/nw:network/nw:node/te/"
+ + "tunnel-termination-point/local-link-connectivities" {
+ when '../../../../nw:network-types/tet:te-topology' {
+ description
+ "Augmentation parameters apply only for networks with a
+ TE topology type.";
+ }
+ description
+ "Augmentation for TE node TTP LLCs (Local Link
+ Connectivities).";
+ uses te-node-tunnel-termination-point-llc-list;
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te-types@2020-06-10.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te-types@2020-06-10.yang
new file mode 100644
index 0000000..60f5258
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te-types@2020-06-10.yang
@@ -0,0 +1,3379 @@
+module ietf-te-types {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te-types";
+ prefix te-types;
+
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ //reference
+ // "RFC 6991: Common YANG Data Types";
+ }
+ import ietf-routing-types {
+ prefix rt-types;
+ //reference
+ // "RFC 8294: Common YANG Data Types for the Routing Area";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group";
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Rakesh Gandhi
+ <mailto:rgandhi@cisco.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Xufeng Liu
+ <mailto:xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>";
+ description
+ "This YANG module contains a collection of generally useful
+ YANG data type definitions specific to TE. The model fully
+ conforms to the Network Management Datastore Architecture
+ (NMDA).
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2020 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC 8776; see the
+ RFC itself for full legal notices.";
+
+ revision 2020-06-10 {
+ description
+ "Latest revision of TE types.";
+ reference
+ "RFC 8776: Common YANG Data Types for Traffic Engineering";
+ }
+
+ /**
+ * Typedefs
+ */
+
+ typedef admin-group {
+ type yang:hex-string {
+ /* 01:02:03:04 */
+ length "1..11";
+ }
+ description
+ "Administrative group / resource class / color representation
+ in 'hex-string' type.
+ The most significant byte in the hex-string is the farthest
+ to the left in the byte sequence. Leading zero bytes in the
+ configured value may be omitted for brevity.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering
+ RFC 7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE)";
+ }
+
+ typedef admin-groups {
+ type union {
+ type admin-group;
+ type extended-admin-group;
+ }
+ description
+ "Derived types for TE administrative groups.";
+ }
+
+ typedef extended-admin-group {
+ type yang:hex-string;
+ description
+ "Extended administrative group / resource class / color
+ representation in 'hex-string' type.
+ The most significant byte in the hex-string is the farthest
+ to the left in the byte sequence. Leading zero bytes in the
+ configured value may be omitted for brevity.";
+ reference
+ "RFC 7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE)";
+ }
+
+ typedef path-attribute-flags {
+ type union {
+ type identityref {
+ base session-attributes-flags;
+ }
+ type identityref {
+ base lsp-attributes-flags;
+ }
+ }
+ description
+ "Path attributes flags type.";
+ }
+
+ typedef performance-metrics-normality {
+ type enumeration {
+ enum unknown {
+ value 0;
+ description
+ "Unknown.";
+ }
+ enum normal {
+ value 1;
+ description
+ "Normal. Indicates that the anomalous bit is not set.";
+ }
+ enum abnormal {
+ value 2;
+ description
+ "Abnormal. Indicates that the anomalous bit is set.";
+ }
+ }
+ description
+ "Indicates whether a performance metric is normal (anomalous
+ bit not set), abnormal (anomalous bit set), or unknown.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ }
+
+ typedef srlg {
+ type uint32;
+ description
+ "SRLG type.";
+ reference
+ "RFC 4203: OSPF Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)
+ RFC 5307: IS-IS Extensions in Support of Generalized
+ Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ typedef te-common-status {
+ type enumeration {
+ enum up {
+ description
+ "Enabled.";
+ }
+ enum down {
+ description
+ "Disabled.";
+ }
+ enum testing {
+ description
+ "In some test mode.";
+ }
+ enum preparing-maintenance {
+ description
+ "The resource is disabled in the control plane to prepare
+ for a graceful shutdown for maintenance purposes.";
+ reference
+ "RFC 5817: Graceful Shutdown in MPLS and Generalized MPLS
+ Traffic Engineering Networks";
+ }
+ enum maintenance {
+ description
+ "The resource is disabled in the data plane for maintenance
+ purposes.";
+ }
+ enum unknown {
+ description
+ "Status is unknown.";
+ }
+ }
+ description
+ "Defines a type representing the common states of a TE
+ resource.";
+ }
+
+ typedef te-bandwidth {
+ type string {
+ pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
+ + '[pP](\+)?(12[0-7]|'
+ + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+'
+ + '(,(0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|'
+ + '1(\.([\da-fA-F]{0,5}[02468aAcCeE]?)?)?'
+ + '[pP](\+)?(12[0-7]|'
+ + '1[01]\d|0?\d?\d)?)|0[xX][\da-fA-F]{1,8}|\d+))*';
+ }
+ description
+ "This is the generic bandwidth type. It is a string containing
+ a list of numbers separated by commas, where each of these
+ numbers can be non-negative decimal, hex integer, or
+ hex float:
+
+ (dec | hex | float)[*(','(dec | hex | float))]
+
+ For the packet-switching type, the string encoding follows
+ the type 'bandwidth-ieee-float32' as defined in RFC 8294
+ (e.g., 0x1p10), where the units are in bytes per second.
+
+ For the Optical Transport Network (OTN) switching type,
+ a list of integers can be used, such as '0,2,3,1', indicating
+ two ODU0s and one ODU3. ('ODU' stands for 'Optical Data
+ Unit'.) For Dense Wavelength Division Multiplexing (DWDM),
+ a list of pairs of slot numbers and widths can be used,
+ such as '0,2,3,3', indicating a frequency slot 0 with
+ slot width 2 and a frequency slot 3 with slot width 3.
+ Canonically, the string is represented as all lowercase and in
+ hex, where the prefix '0x' precedes the hex number.";
+ reference
+ "RFC 8294: Common YANG Data Types for the Routing Area
+ ITU-T Recommendation G.709: Interfaces for the
+ optical transport network";
+ }
+
+ typedef te-ds-class {
+ type uint8 {
+ range "0..7";
+ }
+ description
+ "The Differentiated Services Class-Type of traffic.";
+ reference
+ "RFC 4124: Protocol Extensions for Support of Diffserv-aware
+ MPLS Traffic Engineering, Section 4.3.1";
+ }
+
+ typedef te-global-id {
+ type uint32;
+ description
+ "An identifier to uniquely identify an operator, which can be
+ either a provider or a client.
+ The definition of this type is taken from RFCs 6370 and 5003.
+ This attribute type is used solely to provide a globally
+ unique context for TE topologies.";
+ reference
+ "RFC 5003: Attachment Individual Identifier (AII) Types for
+ Aggregation
+ RFC 6370: MPLS Transport Profile (MPLS-TP) Identifiers";
+ }
+
+ typedef te-hop-type {
+ type enumeration {
+ enum loose {
+ description
+ "A loose hop in an explicit path.";
+ }
+ enum strict {
+ description
+ "A strict hop in an explicit path.";
+ }
+ }
+ description
+ "Enumerated type for specifying loose or strict paths.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.3.3";
+ }
+
+ typedef te-link-access-type {
+ type enumeration {
+ enum point-to-point {
+ description
+ "The link is point-to-point.";
+ }
+ enum multi-access {
+ description
+ "The link is multi-access, including broadcast and NBMA.";
+ }
+ }
+ description
+ "Defines a type representing the access type of a TE link.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2";
+ }
+
+ typedef te-label-direction {
+ type enumeration {
+ enum forward {
+ description
+ "Label allocated for the forward LSP direction.";
+ }
+ enum reverse {
+ description
+ "Label allocated for the reverse LSP direction.";
+ }
+ }
+ description
+ "Enumerated type for specifying the forward or reverse
+ label.";
+ }
+
+ typedef te-link-direction {
+ type enumeration {
+ enum incoming {
+ description
+ "The explicit route represents an incoming link on
+ a node.";
+ }
+ enum outgoing {
+ description
+ "The explicit route represents an outgoing link on
+ a node.";
+ }
+ }
+ description
+ "Enumerated type for specifying the direction of a link on
+ a node.";
+ }
+
+ typedef te-metric {
+ type uint32;
+ description
+ "TE metric.";
+ reference
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+ second MPLS Traffic Engineering (TE) Metric";
+ }
+
+ typedef te-node-id {
+ type yang:dotted-quad;
+ description
+ "A type representing the identifier for a node in a TE
+ topology.
+ The identifier is represented as 4 octets in dotted-quad
+ notation.
+ This attribute MAY be mapped to the Router Address TLV
+ described in Section 2.4.1 of RFC 3630, the TE Router ID
+ described in Section 3 of RFC 6827, the Traffic Engineering
+ Router ID TLV described in Section 4.3 of RFC 5305, or the
+ TE Router ID TLV described in Section 3.2.1 of RFC 6119.
+ The reachability of such a TE node MAY be achieved by a
+ mechanism such as that described in Section 6.2 of RFC 6827.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2, Section 2.4.1
+ RFC 5305: IS-IS Extensions for Traffic Engineering,
+ Section 4.3
+ RFC 6119: IPv6 Traffic Engineering in IS-IS, Section 3.2.1
+ RFC 6827: Automatically Switched Optical Network (ASON)
+ Routing for OSPFv2 Protocols, Section 3";
+ }
+
+ typedef te-oper-status {
+ type te-common-status;
+ description
+ "Defines a type representing the operational status of
+ a TE resource.";
+ }
+
+ typedef te-admin-status {
+ type te-common-status;
+ description
+ "Defines a type representing the administrative status of
+ a TE resource.";
+ }
+
+ typedef te-path-disjointness {
+ type bits {
+ bit node {
+ position 0;
+ description
+ "Node disjoint.";
+ }
+ bit link {
+ position 1;
+ description
+ "Link disjoint.";
+ }
+ bit srlg {
+ position 2;
+ description
+ "SRLG (Shared Risk Link Group) disjoint.";
+ }
+ }
+ description
+ "Type of the resource disjointness for a TE tunnel path.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ typedef te-recovery-status {
+ type enumeration {
+ enum normal {
+ description
+ "Both the recovery span and the working span are fully
+ allocated and active, data traffic is being
+ transported over (or selected from) the working
+ span, and no trigger events are reported.";
+ }
+ enum recovery-started {
+ description
+ "The recovery action has been started but not completed.";
+ }
+ enum recovery-succeeded {
+ description
+ "The recovery action has succeeded. The working span has
+ reported a failure/degrade condition, and the user traffic
+ is being transported (or selected) on the recovery span.";
+ }
+ enum recovery-failed {
+ description
+ "The recovery action has failed.";
+ }
+ enum reversion-started {
+ description
+ "The reversion has started.";
+ }
+ enum reversion-succeeded {
+ description
+ "The reversion action has succeeded.";
+ }
+ enum reversion-failed {
+ description
+ "The reversion has failed.";
+ }
+ enum recovery-unavailable {
+ description
+ "The recovery is unavailable, as a result of either an
+ operator's lockout command or a failure condition
+ detected on the recovery span.";
+ }
+ enum recovery-admin {
+ description
+ "The operator has issued a command to switch the user
+ traffic to the recovery span.";
+ }
+ enum wait-to-restore {
+ description
+ "The recovery domain is recovering from a failure/degrade
+ condition on the working span that is being controlled by
+ the Wait-to-Restore (WTR) timer.";
+ }
+ }
+ description
+ "Defines the status of a recovery action.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)
+ RFC 6378: MPLS Transport Profile (MPLS-TP) Linear Protection";
+ }
+
+ typedef te-template-name {
+ type string {
+ pattern '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+ }
+ description
+ "A type for the name of a TE node template or TE link
+ template.";
+ }
+
+ typedef te-topology-event-type {
+ type enumeration {
+ enum add {
+ value 0;
+ description
+ "A TE node or TE link has been added.";
+ }
+ enum remove {
+ value 1;
+ description
+ "A TE node or TE link has been removed.";
+ }
+ enum update {
+ value 2;
+ description
+ "A TE node or TE link has been updated.";
+ }
+ }
+ description
+ "TE event type for notifications.";
+ }
+
+ typedef te-topology-id {
+ type union {
+ type string {
+ length "0";
+ // empty string
+ }
+ type string {
+ pattern '([a-zA-Z0-9\-_.]+:)*'
+ + '/?([a-zA-Z0-9\-_.]+)(/[a-zA-Z0-9\-_.]+)*';
+ }
+ }
+ description
+ "An identifier for a topology.
+ It is optional to have one or more prefixes at the beginning,
+ separated by colons. The prefixes can be 'network-types' as
+ defined in the 'ietf-network' module in RFC 8345, to help the
+ user better understand the topology before further inquiry
+ is made.";
+ reference
+ "RFC 8345: A YANG Data Model for Network Topologies";
+ }
+
+ typedef te-tp-id {
+ type union {
+ type uint32;
+ // Unnumbered
+ type inet:ip-address;
+ // IPv4 or IPv6 address
+ }
+ description
+ "An identifier for a TE link endpoint on a node.
+ This attribute is mapped to a local or remote link identifier
+ as defined in RFCs 3630 and 5305.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 5305: IS-IS Extensions for Traffic Engineering";
+ }
+
+ /* TE features */
+
+ feature p2mp-te {
+ description
+ "Indicates support for Point-to-Multipoint TE (P2MP-TE).";
+ reference
+ "RFC 4875: Extensions to Resource Reservation Protocol -
+ Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+ Label Switched Paths (LSPs)";
+ }
+
+ feature frr-te {
+ description
+ "Indicates support for TE Fast Reroute (FRR).";
+ reference
+ "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+ }
+
+ feature extended-admin-groups {
+ description
+ "Indicates support for TE link extended administrative
+ groups.";
+ reference
+ "RFC 7308: Extended Administrative Groups in MPLS Traffic
+ Engineering (MPLS-TE)";
+ }
+
+ feature named-path-affinities {
+ description
+ "Indicates support for named path affinities.";
+ }
+
+ feature named-extended-admin-groups {
+ description
+ "Indicates support for named extended administrative groups.";
+ }
+
+ feature named-srlg-groups {
+ description
+ "Indicates support for named SRLG groups.";
+ }
+
+ feature named-path-constraints {
+ description
+ "Indicates support for named path constraints.";
+ }
+
+ feature path-optimization-metric {
+ description
+ "Indicates support for path optimization metrics.";
+ }
+
+ feature path-optimization-objective-function {
+ description
+ "Indicates support for path optimization objective functions.";
+ }
+
+ /*
+ * Identities
+ */
+
+ identity session-attributes-flags {
+ description
+ "Base identity for the RSVP-TE session attributes flags.";
+ }
+
+ identity local-protection-desired {
+ base session-attributes-flags;
+ description
+ "Local protection is desired.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.7.1";
+ }
+
+ identity se-style-desired {
+ base session-attributes-flags;
+ description
+ "Shared explicit style, to allow the LSP to be established
+ and share resources with the old LSP.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity local-recording-desired {
+ base session-attributes-flags;
+ description
+ "Label recording is desired.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.7.1";
+ }
+
+ identity bandwidth-protection-desired {
+ base session-attributes-flags;
+ description
+ "Requests FRR bandwidth protection on LSRs, if present.";
+ reference
+ "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+ }
+
+ identity node-protection-desired {
+ base session-attributes-flags;
+ description
+ "Requests FRR node protection on LSRs, if present.";
+ reference
+ "RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP Tunnels";
+ }
+
+ identity path-reevaluation-request {
+ base session-attributes-flags;
+ description
+ "This flag indicates that a path re-evaluation (of the
+ current path in use) is requested. Note that this does
+ not trigger any LSP reroutes but instead just signals a
+ request to evaluate whether a preferable path exists.";
+ reference
+ "RFC 4736: Reoptimization of Multiprotocol Label Switching
+ (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched
+ Path (LSP)";
+ }
+
+ identity soft-preemption-desired {
+ base session-attributes-flags;
+ description
+ "Soft preemption of LSP resources is desired.";
+ reference
+ "RFC 5712: MPLS Traffic Engineering Soft Preemption";
+ }
+
+ identity lsp-attributes-flags {
+ description
+ "Base identity for LSP attributes flags.";
+ }
+
+ identity end-to-end-rerouting-desired {
+ base lsp-attributes-flags;
+ description
+ "Indicates end-to-end rerouting behavior for an LSP
+ undergoing establishment. This MAY also be used to
+ specify the behavior of end-to-end LSP recovery for
+ established LSPs.";
+ reference
+ "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+ RSVP-TE
+ RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+ Using Resource Reservation Protocol Traffic Engineering
+ (RSVP-TE)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity boundary-rerouting-desired {
+ base lsp-attributes-flags;
+ description
+ "Indicates boundary rerouting behavior for an LSP undergoing
+ establishment. This MAY also be used to specify
+ segment-based LSP recovery through nested crankback for
+ established LSPs. The boundary Area Border Router (ABR) /
+ Autonomous System Border Router (ASBR) can decide to forward
+ the PathErr message upstream to either an upstream boundary
+ ABR/ASBR or the ingress LSR. Alternatively, it can try to
+ select another egress boundary LSR.";
+ reference
+ "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+ RSVP-TE
+ RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+ Using Resource Reservation Protocol Traffic Engineering
+ (RSVP-TE)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity segment-based-rerouting-desired {
+ base lsp-attributes-flags;
+ description
+ "Indicates segment-based rerouting behavior for an LSP
+ undergoing establishment. This MAY also be used to specify
+ segment-based LSP recovery for established LSPs.";
+ reference
+ "RFC 4920: Crankback Signaling Extensions for MPLS and GMPLS
+ RSVP-TE
+ RFC 5420: Encoding of Attributes for MPLS LSP Establishment
+ Using Resource Reservation Protocol Traffic Engineering
+ (RSVP-TE)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity lsp-integrity-required {
+ base lsp-attributes-flags;
+ description
+ "Indicates that LSP integrity is required.";
+ reference
+ "RFC 4875: Extensions to Resource Reservation Protocol -
+ Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+ Label Switched Paths (LSPs)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity contiguous-lsp-desired {
+ base lsp-attributes-flags;
+ description
+ "Indicates that a contiguous LSP is desired.";
+ reference
+ "RFC 5151: Inter-Domain MPLS and GMPLS Traffic Engineering --
+ Resource Reservation Protocol-Traffic Engineering (RSVP-TE)
+ Extensions
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity lsp-stitching-desired {
+ base lsp-attributes-flags;
+ description
+ "Indicates that LSP stitching is desired.";
+ reference
+ "RFC 5150: Label Switched Path Stitching with Generalized
+ Multiprotocol Label Switching Traffic Engineering (GMPLS TE)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity pre-planned-lsp-flag {
+ base lsp-attributes-flags;
+ description
+ "Indicates that the LSP MUST be provisioned in the
+ control plane only.";
+ reference
+ "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions for
+ Multi-Layer and Multi-Region Networks (MLN/MRN)
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity non-php-behavior-flag {
+ base lsp-attributes-flags;
+ description
+ "Indicates that non-PHP (non-Penultimate Hop Popping) behavior
+ for the LSP is desired.";
+ reference
+ "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
+ Mapping for RSVP-TE Label Switched Paths
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity oob-mapping-flag {
+ base lsp-attributes-flags;
+ description
+ "Indicates that signaling of the egress binding information is
+ out of band (e.g., via the Border Gateway Protocol (BGP)).";
+ reference
+ "RFC 6511: Non-Penultimate Hop Popping Behavior and Out-of-Band
+ Mapping for RSVP-TE Label Switched Paths
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity entropy-label-capability {
+ base lsp-attributes-flags;
+ description
+ "Indicates entropy label capability.";
+ reference
+ "RFC 6790: The Use of Entropy Labels in MPLS Forwarding
+ RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)";
+ }
+
+ identity oam-mep-entity-desired {
+ base lsp-attributes-flags;
+ description
+ "OAM Maintenance Entity Group End Point (MEP) entities
+ desired.";
+ reference
+ "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
+ Administration, and Maintenance (OAM) Configuration";
+ }
+
+ identity oam-mip-entity-desired {
+ base lsp-attributes-flags;
+ description
+ "OAM Maintenance Entity Group Intermediate Points (MIP)
+ entities desired.";
+ reference
+ "RFC 7260: GMPLS RSVP-TE Extensions for Operations,
+ Administration, and Maintenance (OAM) Configuration";
+ }
+
+ identity srlg-collection-desired {
+ base lsp-attributes-flags;
+ description
+ "SRLG collection desired.";
+ reference
+ "RFC 7570: Label Switched Path (LSP) Attribute in the Explicit
+ Route Object (ERO)
+ RFC 8001: RSVP-TE Extensions for Collecting Shared Risk
+ Link Group (SRLG) Information";
+ }
+
+ identity loopback-desired {
+ base lsp-attributes-flags;
+ description
+ "This flag indicates that a particular node on the LSP is
+ required to enter loopback mode. This can also be
+ used to specify the loopback state of the node.";
+ reference
+ "RFC 7571: GMPLS RSVP-TE Extensions for Lock Instruct and
+ Loopback";
+ }
+
+ identity p2mp-te-tree-eval-request {
+ base lsp-attributes-flags;
+ description
+ "P2MP-TE tree re-evaluation request.";
+ reference
+ "RFC 8149: RSVP Extensions for Reoptimization of Loosely Routed
+ Point-to-Multipoint Traffic Engineering Label Switched Paths
+ (LSPs)";
+ }
+
+ identity rtm-set-desired {
+ base lsp-attributes-flags;
+ description
+ "Residence Time Measurement (RTM) attribute flag requested.";
+ reference
+ "RFC 8169: Residence Time Measurement in MPLS Networks";
+ }
+
+ identity link-protection-type {
+ description
+ "Base identity for the link protection type.";
+ }
+
+ identity link-protection-unprotected {
+ base link-protection-type;
+ description
+ "Unprotected link type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity link-protection-extra-traffic {
+ base link-protection-type;
+ description
+ "Extra-Traffic protected link type.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity link-protection-shared {
+ base link-protection-type;
+ description
+ "Shared protected link type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity link-protection-1-for-1 {
+ base link-protection-type;
+ description
+ "One-for-one (1:1) protected link type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity link-protection-1-plus-1 {
+ base link-protection-type;
+ description
+ "One-plus-one (1+1) protected link type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity link-protection-enhanced {
+ base link-protection-type;
+ description
+ "A compound link protection type derived from the underlay
+ TE tunnel protection configuration supporting the TE link.";
+ }
+
+ identity association-type {
+ description
+ "Base identity for the tunnel association.";
+ }
+
+ identity association-type-recovery {
+ base association-type;
+ description
+ "Association type for recovery, used to associate LSPs of the
+ same tunnel for recovery.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery
+ RFC 6780: RSVP ASSOCIATION Object Extensions";
+ }
+
+ identity association-type-resource-sharing {
+ base association-type;
+ description
+ "Association type for resource sharing, used to enable
+ resource sharing during make-before-break.";
+ reference
+ "RFC 4873: GMPLS Segment Recovery
+ RFC 6780: RSVP ASSOCIATION Object Extensions";
+ }
+
+ identity association-type-double-sided-bidir {
+ base association-type;
+ description
+ "Association type for double-sided bidirectional LSPs,
+ used to associate two LSPs of two tunnels that are
+ independently configured on either endpoint.";
+ reference
+ "RFC 7551: RSVP-TE Extensions for Associated Bidirectional
+ Label Switched Paths (LSPs)";
+ }
+
+ identity association-type-single-sided-bidir {
+ base association-type;
+ description
+ "Association type for single-sided bidirectional LSPs,
+ used to associate two LSPs of two tunnels, where one
+ tunnel is configured on one side/endpoint and the other
+ tunnel is dynamically created on the other endpoint.";
+ reference
+ "RFC 6780: RSVP ASSOCIATION Object Extensions
+ RFC 7551: RSVP-TE Extensions for Associated Bidirectional
+ Label Switched Paths (LSPs)";
+ }
+
+ identity objective-function-type {
+ description
+ "Base objective function type.";
+ }
+
+ identity of-minimize-cost-path {
+ base objective-function-type;
+ description
+ "Objective function for minimizing path cost.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity of-minimize-load-path {
+ base objective-function-type;
+ description
+ "Objective function for minimizing the load on one or more
+ paths.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity of-maximize-residual-bandwidth {
+ base objective-function-type;
+ description
+ "Objective function for maximizing residual bandwidth.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity of-minimize-agg-bandwidth-consumption {
+ base objective-function-type;
+ description
+ "Objective function for minimizing aggregate bandwidth
+ consumption.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity of-minimize-load-most-loaded-link {
+ base objective-function-type;
+ description
+ "Objective function for minimizing the load on the link that
+ is carrying the highest load.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity of-minimize-cost-path-set {
+ base objective-function-type;
+ description
+ "Objective function for minimizing the cost on a path set.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity path-computation-method {
+ description
+ "Base identity for supported path computation mechanisms.";
+ }
+
+ identity path-locally-computed {
+ base path-computation-method;
+ description
+ "Indicates a constrained-path LSP in which the
+ path is computed by the local LER.";
+ reference
+ "RFC 3272: Overview and Principles of Internet Traffic
+ Engineering, Section 5.4";
+ }
+
+ identity path-externally-queried {
+ base path-computation-method;
+ description
+ "Constrained-path LSP in which the path is obtained by
+ querying an external source, such as a PCE server.
+ In the case that an LSP is defined to be externally queried,
+ it may also have associated explicit definitions (provided
+ to the external source to aid computation). The path that is
+ returned by the external source may require further local
+ computation on the device.";
+ reference
+ "RFC 3272: Overview and Principles of Internet Traffic
+ Engineering
+ RFC 4657: Path Computation Element (PCE) Communication
+ Protocol Generic Requirements";
+ }
+
+ identity path-explicitly-defined {
+ base path-computation-method;
+ description
+ "Constrained-path LSP in which the path is
+ explicitly specified as a collection of strict and/or loose
+ hops.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+ RFC 3272: Overview and Principles of Internet Traffic
+ Engineering";
+ }
+
+ identity lsp-metric-type {
+ description
+ "Base identity for the LSP metric specification types.";
+ }
+
+ identity lsp-metric-relative {
+ base lsp-metric-type;
+ description
+ "The metric specified for the LSPs to which this identity
+ refers is specified as a value relative to the IGP metric
+ cost to the LSP's tail end.";
+ reference
+ "RFC 4657: Path Computation Element (PCE) Communication
+ Protocol Generic Requirements";
+ }
+
+ identity lsp-metric-absolute {
+ base lsp-metric-type;
+ description
+ "The metric specified for the LSPs to which this identity
+ refers is specified as an absolute value.";
+ reference
+ "RFC 4657: Path Computation Element (PCE) Communication
+ Protocol Generic Requirements";
+ }
+
+ identity lsp-metric-inherited {
+ base lsp-metric-type;
+ description
+ "The metric for the LSPs to which this identity refers is
+ not specified explicitly; rather, it is directly inherited
+ from the IGP cost.";
+ reference
+ "RFC 4657: Path Computation Element (PCE) Communication
+ Protocol Generic Requirements";
+ }
+
+ identity te-tunnel-type {
+ description
+ "Base identity from which specific tunnel types are derived.";
+ }
+
+ identity te-tunnel-p2p {
+ base te-tunnel-type;
+ description
+ "TE Point-to-Point (P2P) tunnel type.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity te-tunnel-p2mp {
+ base te-tunnel-type;
+ description
+ "TE P2MP tunnel type.";
+ reference
+ "RFC 4875: Extensions to Resource Reservation Protocol -
+ Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE
+ Label Switched Paths (LSPs)";
+ }
+
+ identity tunnel-action-type {
+ description
+ "Base identity from which specific tunnel action types
+ are derived.";
+ }
+
+ identity tunnel-action-resetup {
+ base tunnel-action-type;
+ description
+ "TE tunnel action that tears down the tunnel's current LSP
+ (if any) and attempts to re-establish a new LSP.";
+ }
+
+ identity tunnel-action-reoptimize {
+ base tunnel-action-type;
+ description
+ "TE tunnel action that reoptimizes the placement of the
+ tunnel LSP(s).";
+ }
+
+ identity tunnel-action-switchpath {
+ base tunnel-action-type;
+ description
+ "TE tunnel action that switches the tunnel's LSP to use the
+ specified path.";
+ }
+
+ identity te-action-result {
+ description
+ "Base identity from which specific TE action results
+ are derived.";
+ }
+
+ identity te-action-success {
+ base te-action-result;
+ description
+ "TE action was successful.";
+ }
+
+ identity te-action-fail {
+ base te-action-result;
+ description
+ "TE action failed.";
+ }
+
+ identity tunnel-action-inprogress {
+ base te-action-result;
+ description
+ "TE action is in progress.";
+ }
+
+ identity tunnel-admin-state-type {
+ description
+ "Base identity for TE tunnel administrative states.";
+ }
+
+ identity tunnel-admin-state-up {
+ base tunnel-admin-state-type;
+ description
+ "Tunnel's administrative state is up.";
+ }
+
+ identity tunnel-admin-state-down {
+ base tunnel-admin-state-type;
+ description
+ "Tunnel's administrative state is down.";
+ }
+
+ identity tunnel-state-type {
+ description
+ "Base identity for TE tunnel states.";
+ }
+
+ identity tunnel-state-up {
+ base tunnel-state-type;
+ description
+ "Tunnel's state is up.";
+ }
+
+ identity tunnel-state-down {
+ base tunnel-state-type;
+ description
+ "Tunnel's state is down.";
+ }
+
+ identity lsp-state-type {
+ description
+ "Base identity for TE LSP states.";
+ }
+
+ identity lsp-path-computing {
+ base lsp-state-type;
+ description
+ "State path computation is in progress.";
+ }
+
+ identity lsp-path-computation-ok {
+ base lsp-state-type;
+ description
+ "State path computation was successful.";
+ }
+
+ identity lsp-path-computation-failed {
+ base lsp-state-type;
+ description
+ "State path computation failed.";
+ }
+
+ identity lsp-state-setting-up {
+ base lsp-state-type;
+ description
+ "State is being set up.";
+ }
+
+ identity lsp-state-setup-ok {
+ base lsp-state-type;
+ description
+ "State setup was successful.";
+ }
+
+ identity lsp-state-setup-failed {
+ base lsp-state-type;
+ description
+ "State setup failed.";
+ }
+
+ identity lsp-state-up {
+ base lsp-state-type;
+ description
+ "State is up.";
+ }
+
+ identity lsp-state-tearing-down {
+ base lsp-state-type;
+ description
+ "State is being torn down.";
+ }
+
+ identity lsp-state-down {
+ base lsp-state-type;
+ description
+ "State is down.";
+ }
+
+ identity path-invalidation-action-type {
+ description
+ "Base identity for TE path invalidation action types.";
+ }
+
+ identity path-invalidation-action-drop {
+ base path-invalidation-action-type;
+ description
+ "Upon invalidation of the TE tunnel path, the tunnel remains
+ valid, but any packet mapped over the tunnel is dropped.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 2.5";
+ }
+
+ identity path-invalidation-action-teardown {
+ base path-invalidation-action-type;
+ description
+ "TE path invalidation action teardown.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 2.5";
+ }
+
+ identity lsp-restoration-type {
+ description
+ "Base identity from which LSP restoration types are derived.";
+ }
+
+ identity lsp-restoration-restore-any {
+ base lsp-restoration-type;
+ description
+ "Any LSP affected by a failure is restored.";
+ }
+
+ identity lsp-restoration-restore-all {
+ base lsp-restoration-type;
+ description
+ "Affected LSPs are restored after all LSPs of the tunnel are
+ broken.";
+ }
+
+ identity restoration-scheme-type {
+ description
+ "Base identity for LSP restoration schemes.";
+ }
+
+ identity restoration-scheme-preconfigured {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is preconfigured prior to the failure.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity restoration-scheme-precomputed {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is precomputed prior to the failure.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity restoration-scheme-presignaled {
+ base restoration-scheme-type;
+ description
+ "Restoration LSP is presignaled prior to the failure.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity lsp-protection-type {
+ description
+ "Base identity from which LSP protection types are derived.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-unprotected {
+ base lsp-protection-type;
+ description
+ "'Unprotected' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-reroute-extra {
+ base lsp-protection-type;
+ description
+ "'(Full) Rerouting' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-reroute {
+ base lsp-protection-type;
+ description
+ "'Rerouting without Extra-Traffic' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-1-for-n {
+ base lsp-protection-type;
+ description
+ "'1:N Protection with Extra-Traffic' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-1-for-1 {
+ base lsp-protection-type;
+ description
+ "LSP protection '1:1 Protection Type'.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-unidir-1-plus-1 {
+ base lsp-protection-type;
+ description
+ "'1+1 Unidirectional Protection' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-bidir-1-plus-1 {
+ base lsp-protection-type;
+ description
+ "'1+1 Bidirectional Protection' LSP protection type.";
+ reference
+ "RFC 4872: RSVP-TE Extensions in Support of End-to-End
+ Generalized Multi-Protocol Label Switching (GMPLS) Recovery";
+ }
+
+ identity lsp-protection-extra-traffic {
+ base lsp-protection-type;
+ description
+ "Extra-Traffic LSP protection type.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity lsp-protection-state {
+ description
+ "Base identity of protection states for reporting purposes.";
+ }
+
+ identity normal {
+ base lsp-protection-state;
+ description
+ "Normal state.";
+ }
+
+ identity signal-fail-of-protection {
+ base lsp-protection-state;
+ description
+ "The protection transport entity has a signal fail condition
+ that is of higher priority than the forced switchover
+ command.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity lockout-of-protection {
+ base lsp-protection-state;
+ description
+ "A Loss of Protection (LoP) command is active.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity forced-switch {
+ base lsp-protection-state;
+ description
+ "A forced switchover command is active.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity signal-fail {
+ base lsp-protection-state;
+ description
+ "There is a signal fail condition on either the working path
+ or the protection path.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity signal-degrade {
+ base lsp-protection-state;
+ description
+ "There is a signal degrade condition on either the working
+ path or the protection path.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity manual-switch {
+ base lsp-protection-state;
+ description
+ "A manual switchover command is active.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity wait-to-restore {
+ base lsp-protection-state;
+ description
+ "A WTR timer is running.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity do-not-revert {
+ base lsp-protection-state;
+ description
+ "A Do Not Revert (DNR) condition is active because of
+ non-revertive behavior.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity failure-of-protocol {
+ base lsp-protection-state;
+ description
+ "LSP protection is not working because of a protocol failure
+ condition.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity protection-external-commands {
+ description
+ "Base identity from which protection-related external commands
+ used for troubleshooting purposes are derived.";
+ }
+
+ identity action-freeze {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command that prevents any switchover action from being taken
+ and, as such, freezes the current state.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity clear-freeze {
+ base protection-external-commands;
+ description
+ "An action that clears the active freeze state.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity action-lockout-of-normal {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command to ensure that the normal traffic is not allowed
+ to use the protection transport entity.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity clear-lockout-of-normal {
+ base protection-external-commands;
+ description
+ "An action that clears the active lockout of the
+ normal state.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity action-lockout-of-protection {
+ base protection-external-commands;
+ description
+ "A temporary configuration action initiated by an operator
+ command to ensure that the protection transport entity is
+ temporarily not available to transport a traffic signal
+ (either normal or Extra-Traffic).";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity action-forced-switch {
+ base protection-external-commands;
+ description
+ "A switchover action initiated by an operator command to switch
+ the Extra-Traffic signal, the normal traffic signal, or the
+ null signal to the protection transport entity, unless a
+ switchover command of equal or higher priority is in effect.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity action-manual-switch {
+ base protection-external-commands;
+ description
+ "A switchover action initiated by an operator command to switch
+ the Extra-Traffic signal, the normal traffic signal, or
+ the null signal to the protection transport entity, unless
+ a fault condition exists on other transport entities or a
+ switchover command of equal or higher priority is in effect.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity action-exercise {
+ base protection-external-commands;
+ description
+ "An action that starts testing whether or not APS communication
+ is operating correctly. It is of lower priority than any
+ other state or command.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity clear {
+ base protection-external-commands;
+ description
+ "An action that clears the active near-end lockout of a
+ protection, forced switchover, manual switchover, WTR state,
+ or exercise command.";
+ reference
+ "RFC 4427: Recovery (Protection and Restoration) Terminology
+ for Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+
+ identity switching-capabilities {
+ description
+ "Base identity for interface switching capabilities.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity switching-psc1 {
+ base switching-capabilities;
+ description
+ "Packet-Switch Capable-1 (PSC-1).";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity switching-evpl {
+ base switching-capabilities;
+ description
+ "Ethernet Virtual Private Line (EVPL).";
+ reference
+ "RFC 6004: Generalized MPLS (GMPLS) Support for Metro Ethernet
+ Forum and G.8011 Ethernet Service Switching";
+ }
+
+ identity switching-l2sc {
+ base switching-capabilities;
+ description
+ "Layer-2 Switch Capable (L2SC).";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity switching-tdm {
+ base switching-capabilities;
+ description
+ "Time-Division-Multiplex Capable (TDM).";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity switching-otn {
+ base switching-capabilities;
+ description
+ "OTN-TDM capable.";
+ reference
+ "RFC 7138: Traffic Engineering Extensions to OSPF for GMPLS
+ Control of Evolving G.709 Optical Transport Networks";
+ }
+
+ identity switching-dcsc {
+ base switching-capabilities;
+ description
+ "Data Channel Switching Capable (DCSC).";
+ reference
+ "RFC 6002: Generalized MPLS (GMPLS) Data Channel
+ Switching Capable (DCSC) and Channel Set Label Extensions";
+ }
+
+ identity switching-lsc {
+ base switching-capabilities;
+ description
+ "Lambda-Switch Capable (LSC).";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity switching-fsc {
+ base switching-capabilities;
+ description
+ "Fiber-Switch Capable (FSC).";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-types {
+ description
+ "Base identity for encoding types.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-packet {
+ base lsp-encoding-types;
+ description
+ "Packet LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-ethernet {
+ base lsp-encoding-types;
+ description
+ "Ethernet LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-pdh {
+ base lsp-encoding-types;
+ description
+ "ANSI/ETSI PDH LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-sdh {
+ base lsp-encoding-types;
+ description
+ "SDH ITU-T G.707 / SONET ANSI T1.105 LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-digital-wrapper {
+ base lsp-encoding-types;
+ description
+ "Digital Wrapper LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-lambda {
+ base lsp-encoding-types;
+ description
+ "Lambda (photonic) LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-fiber {
+ base lsp-encoding-types;
+ description
+ "Fiber LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-fiber-channel {
+ base lsp-encoding-types;
+ description
+ "FiberChannel LSP encoding.";
+ reference
+ "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Functional Description";
+ }
+
+ identity lsp-encoding-oduk {
+ base lsp-encoding-types;
+ description
+ "G.709 ODUk (Digital Path) LSP encoding.";
+ reference
+ "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Extensions for G.709 Optical Transport Networks
+ Control";
+ }
+
+ identity lsp-encoding-optical-channel {
+ base lsp-encoding-types;
+ description
+ "G.709 Optical Channel LSP encoding.";
+ reference
+ "RFC 4328: Generalized Multi-Protocol Label Switching (GMPLS)
+ Signaling Extensions for G.709 Optical Transport Networks
+ Control";
+ }
+
+ identity lsp-encoding-line {
+ base lsp-encoding-types;
+ description
+ "Line (e.g., 8B/10B) LSP encoding.";
+ reference
+ "RFC 6004: Generalized MPLS (GMPLS) Support for Metro
+ Ethernet Forum and G.8011 Ethernet Service Switching";
+ }
+
+ identity path-signaling-type {
+ description
+ "Base identity from which specific LSP path setup types
+ are derived.";
+ }
+
+ identity path-setup-static {
+ base path-signaling-type;
+ description
+ "Static LSP provisioning path setup.";
+ }
+
+ identity path-setup-rsvp {
+ base path-signaling-type;
+ description
+ "RSVP-TE signaling path setup.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity path-setup-sr {
+ base path-signaling-type;
+ description
+ "Segment-routing path setup.";
+ }
+
+ identity path-scope-type {
+ description
+ "Base identity from which specific path scope types are
+ derived.";
+ }
+
+ identity path-scope-segment {
+ base path-scope-type;
+ description
+ "Path scope segment.";
+ reference
+ "RFC 4873: GMPLS Segment Recovery";
+ }
+
+ identity path-scope-end-to-end {
+ base path-scope-type;
+ description
+ "Path scope end to end.";
+ reference
+ "RFC 4873: GMPLS Segment Recovery";
+ }
+
+ identity route-usage-type {
+ description
+ "Base identity for route usage.";
+ }
+
+ identity route-include-object {
+ base route-usage-type;
+ description
+ "'Include route' object.";
+ }
+
+ identity route-exclude-object {
+ base route-usage-type;
+ description
+ "'Exclude route' object.";
+ reference
+ "RFC 4874: Exclude Routes - Extension to Resource ReserVation
+ Protocol-Traffic Engineering (RSVP-TE)";
+ }
+
+ identity route-exclude-srlg {
+ base route-usage-type;
+ description
+ "Excludes SRLGs.";
+ reference
+ "RFC 4874: Exclude Routes - Extension to Resource ReserVation
+ Protocol-Traffic Engineering (RSVP-TE)";
+ }
+
+ identity path-metric-type {
+ description
+ "Base identity for the path metric type.";
+ }
+
+ identity path-metric-te {
+ base path-metric-type;
+ description
+ "TE path metric.";
+ reference
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+ second MPLS Traffic Engineering (TE) Metric";
+ }
+
+ identity path-metric-igp {
+ base path-metric-type;
+ description
+ "IGP path metric.";
+ reference
+ "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
+ second MPLS Traffic Engineering (TE) Metric";
+ }
+
+ identity path-metric-hop {
+ base path-metric-type;
+ description
+ "Hop path metric.";
+ }
+
+ identity path-metric-delay-average {
+ base path-metric-type;
+ description
+ "Average unidirectional link delay.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+ }
+
+ identity path-metric-delay-minimum {
+ base path-metric-type;
+ description
+ "Minimum unidirectional link delay.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+ }
+
+ identity path-metric-residual-bandwidth {
+ base path-metric-type;
+ description
+ "Unidirectional Residual Bandwidth, which is defined to be
+ Maximum Bandwidth (RFC 3630) minus the bandwidth currently
+ allocated to LSPs.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2
+ RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
+ }
+
+ identity path-metric-optimize-includes {
+ base path-metric-type;
+ description
+ "A metric that optimizes the number of included resources
+ specified in a set.";
+ }
+
+ identity path-metric-optimize-excludes {
+ base path-metric-type;
+ description
+ "A metric that optimizes to a maximum the number of excluded
+ resources specified in a set.";
+ }
+
+ identity path-tiebreaker-type {
+ description
+ "Base identity for the path tiebreaker type.";
+ }
+
+ identity path-tiebreaker-minfill {
+ base path-tiebreaker-type;
+ description
+ "Min-Fill LSP path placement.";
+ }
+
+ identity path-tiebreaker-maxfill {
+ base path-tiebreaker-type;
+ description
+ "Max-Fill LSP path placement.";
+ }
+
+ identity path-tiebreaker-random {
+ base path-tiebreaker-type;
+ description
+ "Random LSP path placement.";
+ }
+
+ identity resource-affinities-type {
+ description
+ "Base identity for resource class affinities.";
+ reference
+ "RFC 2702: Requirements for Traffic Engineering Over MPLS";
+ }
+
+ identity resource-aff-include-all {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel, all of which must be present for a link
+ to be acceptable.";
+ reference
+ "RFC 2702: Requirements for Traffic Engineering Over MPLS
+ RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity resource-aff-include-any {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel, any of which must be present for a link
+ to be acceptable.";
+ reference
+ "RFC 2702: Requirements for Traffic Engineering Over MPLS
+ RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity resource-aff-exclude-any {
+ base resource-affinities-type;
+ description
+ "The set of attribute filters associated with a
+ tunnel, any of which renders a link unacceptable.";
+ reference
+ "RFC 2702: Requirements for Traffic Engineering Over MPLS
+ RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+
+ identity te-optimization-criterion {
+ description
+ "Base identity for the TE optimization criteria.";
+ reference
+ "RFC 3272: Overview and Principles of Internet Traffic
+ Engineering";
+ }
+
+ identity not-optimized {
+ base te-optimization-criterion;
+ description
+ "Optimization is not applied.";
+ }
+
+ identity cost {
+ base te-optimization-criterion;
+ description
+ "Optimized on cost.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity delay {
+ base te-optimization-criterion;
+ description
+ "Optimized on delay.";
+ reference
+ "RFC 5541: Encoding of Objective Functions in the Path
+ Computation Element Communication Protocol (PCEP)";
+ }
+
+ identity path-computation-srlg-type {
+ description
+ "Base identity for SRLG path computation.";
+ }
+
+ identity srlg-ignore {
+ base path-computation-srlg-type;
+ description
+ "Ignores SRLGs in the path computation.";
+ }
+
+ identity srlg-strict {
+ base path-computation-srlg-type;
+ description
+ "Includes a strict SRLG check in the path computation.";
+ }
+
+ identity srlg-preferred {
+ base path-computation-srlg-type;
+ description
+ "Includes a preferred SRLG check in the path computation.";
+ }
+
+ identity srlg-weighted {
+ base path-computation-srlg-type;
+ description
+ "Includes a weighted SRLG check in the path computation.";
+ }
+
+ /**
+ * TE bandwidth groupings
+ **/
+
+ grouping te-bandwidth {
+ description
+ "This grouping defines the generic TE bandwidth.
+ For some known data-plane technologies, specific modeling
+ structures are specified. The string-encoded 'te-bandwidth'
+ type is used for unspecified technologies.
+ The modeling structure can be augmented later for other
+ technologies.";
+ container te-bandwidth {
+ description
+ "Container that specifies TE bandwidth. The choices
+ can be augmented for specific data-plane technologies.";
+ choice technology {
+ default "generic";
+ description
+ "Data-plane technology type.";
+ case generic {
+ leaf generic {
+ type te-bandwidth;
+ description
+ "Bandwidth specified in a generic format.";
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * TE label groupings
+ **/
+
+ grouping te-label {
+ description
+ "This grouping defines the generic TE label.
+ The modeling structure can be augmented for each technology.
+ For unspecified technologies, 'rt-types:generalized-label'
+ is used.";
+ container te-label {
+ description
+ "Container that specifies the TE label. The choices can
+ be augmented for specific data-plane technologies.";
+ choice technology {
+ default "generic";
+ description
+ "Data-plane technology type.";
+ case generic {
+ leaf generic {
+ type rt-types:generalized-label;
+ description
+ "TE label specified in a generic format.";
+ }
+ }
+ }
+ leaf direction {
+ type te-label-direction;
+ default "forward";
+ description
+ "Label direction.";
+ }
+ }
+ }
+
+ grouping te-topology-identifier {
+ description
+ "Augmentation for a TE topology.";
+ container te-topology-identifier {
+ description
+ "TE topology identifier container.";
+ leaf provider-id {
+ type te-global-id;
+ default "0";
+ description
+ "An identifier to uniquely identify a provider.
+ If omitted, it assumes that the topology provider ID
+ value = 0 (the default).";
+ }
+ leaf client-id {
+ type te-global-id;
+ default "0";
+ description
+ "An identifier to uniquely identify a client.
+ If omitted, it assumes that the topology client ID
+ value = 0 (the default).";
+ }
+ leaf topology-id {
+ type te-topology-id;
+ default "";
+ description
+ "When the datastore contains several topologies,
+ 'topology-id' distinguishes between them. If omitted,
+ the default (empty) string for this leaf is assumed.";
+ }
+ }
+ }
+
+ /**
+ * TE performance metrics groupings
+ **/
+
+ grouping performance-metrics-one-way-delay-loss {
+ description
+ "Performance Metrics (PM) information in real time that can
+ be applicable to links or connections. PM defined in this
+ grouping are applicable to generic TE PM as well as packet TE
+ PM.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ leaf one-way-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "One-way delay or latency in microseconds.";
+ }
+ leaf one-way-delay-normality {
+ type te-types:performance-metrics-normality;
+ description
+ "One-way delay normality.";
+ }
+ }
+
+ grouping performance-metrics-two-way-delay-loss {
+ description
+ "PM information in real time that can be applicable to links or
+ connections. PM defined in this grouping are applicable to
+ generic TE PM as well as packet TE PM.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ leaf two-way-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ description
+ "Two-way delay or latency in microseconds.";
+ }
+ leaf two-way-delay-normality {
+ type te-types:performance-metrics-normality;
+ description
+ "Two-way delay normality.";
+ }
+ }
+
+ grouping performance-metrics-one-way-bandwidth {
+ description
+ "PM information in real time that can be applicable to links.
+ PM defined in this grouping are applicable to generic TE PM
+ as well as packet TE PM.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ leaf one-way-residual-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Residual bandwidth that subtracts tunnel reservations from
+ Maximum Bandwidth (or link capacity) (RFC 3630) and
+ provides an aggregated remainder across QoS classes.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2";
+ }
+ leaf one-way-residual-bandwidth-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Residual bandwidth normality.";
+ }
+ leaf one-way-available-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Available bandwidth that is defined to be residual
+ bandwidth minus the measured bandwidth used for the
+ actual forwarding of non-RSVP-TE LSP packets. For a
+ bundled link, available bandwidth is defined to be the
+ sum of the component link available bandwidths.";
+ }
+ leaf one-way-available-bandwidth-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Available bandwidth normality.";
+ }
+ leaf one-way-utilized-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Bandwidth utilization that represents the actual
+ utilization of the link (i.e., as measured in the router).
+ For a bundled link, bandwidth utilization is defined to
+ be the sum of the component link bandwidth utilizations.";
+ }
+ leaf one-way-utilized-bandwidth-normality {
+ type te-types:performance-metrics-normality;
+ default "normal";
+ description
+ "Bandwidth utilization normality.";
+ }
+ }
+
+ grouping one-way-performance-metrics {
+ description
+ "One-way PM throttle grouping.";
+ leaf one-way-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "One-way delay or latency in microseconds.";
+ }
+ leaf one-way-residual-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Residual bandwidth that subtracts tunnel reservations from
+ Maximum Bandwidth (or link capacity) (RFC 3630) and
+ provides an aggregated remainder across QoS classes.";
+ reference
+ "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
+ Version 2";
+ }
+ leaf one-way-available-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Available bandwidth that is defined to be residual
+ bandwidth minus the measured bandwidth used for the
+ actual forwarding of non-RSVP-TE LSP packets. For a
+ bundled link, available bandwidth is defined to be the
+ sum of the component link available bandwidths.";
+ }
+ leaf one-way-utilized-bandwidth {
+ type rt-types:bandwidth-ieee-float32;
+ units "bytes per second";
+ default "0x0p0";
+ description
+ "Bandwidth utilization that represents the actual
+ utilization of the link (i.e., as measured in the router).
+ For a bundled link, bandwidth utilization is defined to
+ be the sum of the component link bandwidth utilizations.";
+ }
+ }
+
+ grouping two-way-performance-metrics {
+ description
+ "Two-way PM throttle grouping.";
+ leaf two-way-delay {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Two-way delay or latency in microseconds.";
+ }
+ }
+
+ grouping performance-metrics-thresholds {
+ description
+ "Grouping for configurable thresholds for measured
+ attributes.";
+ uses one-way-performance-metrics;
+ uses two-way-performance-metrics;
+ }
+
+ grouping performance-metrics-attributes {
+ description
+ "Contains PM attributes.";
+ container performance-metrics-one-way {
+ description
+ "One-way link performance information in real time.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ uses performance-metrics-one-way-delay-loss;
+ uses performance-metrics-one-way-bandwidth;
+ }
+ container performance-metrics-two-way {
+ description
+ "Two-way link performance information in real time.";
+ reference
+ "RFC 6374: Packet Loss and Delay Measurement for MPLS
+ Networks";
+ uses performance-metrics-two-way-delay-loss;
+ }
+ }
+
+ grouping performance-metrics-throttle-container {
+ description
+ "Controls PM throttling.";
+ container throttle {
+ must 'suppression-interval >= measure-interval' {
+ error-message "'suppression-interval' cannot be less than "
+ + "'measure-interval'.";
+ description
+ "Constraint on 'suppression-interval' and
+ 'measure-interval'.";
+ }
+ description
+ "Link performance information in real time.";
+ reference
+ "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions
+ RFC 7823: Performance-Based Path Selection for Explicitly
+ Routed Label Switched Paths (LSPs) Using TE Metric
+ Extensions
+ RFC 8570: IS-IS Traffic Engineering (TE) Metric Extensions";
+ leaf one-way-delay-offset {
+ type uint32 {
+ range "0..16777215";
+ }
+ default "0";
+ description
+ "Offset value to be added to the measured delay value.";
+ }
+ leaf measure-interval {
+ type uint32;
+ default "30";
+ description
+ "Interval, in seconds, to measure the extended metric
+ values.";
+ }
+ leaf advertisement-interval {
+ type uint32;
+ default "0";
+ description
+ "Interval, in seconds, to advertise the extended metric
+ values.";
+ }
+ leaf suppression-interval {
+ type uint32 {
+ range "1..max";
+ }
+ default "120";
+ description
+ "Interval, in seconds, to suppress advertisement of the
+ extended metric values.";
+ reference
+ "RFC 8570: IS-IS Traffic Engineering (TE) Metric
+ Extensions, Section 6";
+ }
+ container threshold-out {
+ uses performance-metrics-thresholds;
+ description
+ "If the measured parameter falls outside an upper bound
+ for all but the minimum-delay metric (or a lower bound
+ for the minimum-delay metric only) and the advertised
+ value is not already outside that bound, an 'anomalous'
+ announcement (anomalous bit set) will be triggered.";
+ }
+ container threshold-in {
+ uses performance-metrics-thresholds;
+ description
+ "If the measured parameter falls inside an upper bound
+ for all but the minimum-delay metric (or a lower bound
+ for the minimum-delay metric only) and the advertised
+ value is not already inside that bound, a 'normal'
+ announcement (anomalous bit cleared) will be triggered.";
+ }
+ container threshold-accelerated-advertisement {
+ description
+ "When the difference between the last advertised value and
+ the current measured value exceeds this threshold, an
+ 'anomalous' announcement (anomalous bit set) will be
+ triggered.";
+ uses performance-metrics-thresholds;
+ }
+ }
+ }
+
+ /**
+ * TE tunnel generic groupings
+ **/
+
+ grouping explicit-route-hop {
+ description
+ "The explicit route entry grouping.";
+ choice type {
+ description
+ "The explicit route entry type.";
+ case numbered-node-hop {
+ container numbered-node-hop {
+ leaf node-id {
+ type te-node-id;
+ mandatory true;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ default "strict";
+ description
+ "Strict or loose hop.";
+ }
+ description
+ "Numbered node route hop.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+ RFC 3477: Signalling Unnumbered Links in Resource
+ ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+ }
+ }
+ case numbered-link-hop {
+ container numbered-link-hop {
+ leaf link-tp-id {
+ type te-tp-id;
+ mandatory true;
+ description
+ "TE Link Termination Point (LTP) identifier.";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ default "strict";
+ description
+ "Strict or loose hop.";
+ }
+ leaf direction {
+ type te-link-direction;
+ default "outgoing";
+ description
+ "Link route object direction.";
+ }
+ description
+ "Numbered link explicit route hop.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+ RFC 3477: Signalling Unnumbered Links in Resource
+ ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+ }
+ }
+ case unnumbered-link-hop {
+ container unnumbered-link-hop {
+ leaf link-tp-id {
+ type te-tp-id;
+ mandatory true;
+ description
+ "TE LTP identifier. The combination of the TE link ID
+ and the TE node ID is used to identify an unnumbered
+ TE link.";
+ }
+ leaf node-id {
+ type te-node-id;
+ mandatory true;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ default "strict";
+ description
+ "Strict or loose hop.";
+ }
+ leaf direction {
+ type te-link-direction;
+ default "outgoing";
+ description
+ "Link route object direction.";
+ }
+ description
+ "Unnumbered link explicit route hop.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
+ Section 4.3, EXPLICIT_ROUTE in RSVP-TE
+ RFC 3477: Signalling Unnumbered Links in Resource
+ ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+ }
+ }
+ case as-number {
+ container as-number-hop {
+ leaf as-number {
+ type inet:as-number;
+ mandatory true;
+ description
+ "The Autonomous System (AS) number.";
+ }
+ leaf hop-type {
+ type te-hop-type;
+ default "strict";
+ description
+ "Strict or loose hop.";
+ }
+ description
+ "AS explicit route hop.";
+ }
+ }
+ case label {
+ container label-hop {
+ description
+ "Label hop type.";
+ uses te-label;
+ }
+ description
+ "The label explicit route hop type.";
+ }
+ }
+ }
+
+ grouping record-route-state {
+ description
+ "The Record Route grouping.";
+ leaf index {
+ type uint32;
+ description
+ "Record Route hop index. The index is used to
+ identify an entry in the list. The order of entries
+ is defined by the user without relying on key values.";
+ }
+ choice type {
+ description
+ "The Record Route entry type.";
+ case numbered-node-hop {
+ container numbered-node-hop {
+ description
+ "Numbered node route hop container.";
+ leaf node-id {
+ type te-node-id;
+ mandatory true;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf-list flags {
+ type path-attribute-flags;
+ description
+ "Path attributes flags.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+ RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+ Tunnels
+ RFC 4561: Definition of a Record Route Object (RRO)
+ Node-Id Sub-Object";
+ }
+ }
+ description
+ "Numbered node route hop.";
+ }
+ case numbered-link-hop {
+ container numbered-link-hop {
+ description
+ "Numbered link route hop container.";
+ leaf link-tp-id {
+ type te-tp-id;
+ mandatory true;
+ description
+ "Numbered TE LTP identifier.";
+ }
+ leaf-list flags {
+ type path-attribute-flags;
+ description
+ "Path attributes flags.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+ RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+ Tunnels
+ RFC 4561: Definition of a Record Route Object (RRO)
+ Node-Id Sub-Object";
+ }
+ }
+ description
+ "Numbered link route hop.";
+ }
+ case unnumbered-link-hop {
+ container unnumbered-link-hop {
+ leaf link-tp-id {
+ type te-tp-id;
+ mandatory true;
+ description
+ "TE LTP identifier. The combination of the TE link ID
+ and the TE node ID is used to identify an unnumbered
+ TE link.";
+ }
+ leaf node-id {
+ type te-node-id;
+ description
+ "The identifier of a node in the TE topology.";
+ }
+ leaf-list flags {
+ type path-attribute-flags;
+ description
+ "Path attributes flags.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+ RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+ Tunnels
+ RFC 4561: Definition of a Record Route Object (RRO)
+ Node-Id Sub-Object";
+ }
+ description
+ "Unnumbered link Record Route hop.";
+ reference
+ "RFC 3477: Signalling Unnumbered Links in Resource
+ ReSerVation Protocol - Traffic Engineering (RSVP-TE)";
+ }
+ description
+ "Unnumbered link route hop.";
+ }
+ case label {
+ container label-hop {
+ description
+ "Label route hop type.";
+ uses te-label;
+ leaf-list flags {
+ type path-attribute-flags;
+ description
+ "Path attributes flags.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels
+ RFC 4090: Fast Reroute Extensions to RSVP-TE for LSP
+ Tunnels
+ RFC 4561: Definition of a Record Route Object (RRO)
+ Node-Id Sub-Object";
+ }
+ }
+ description
+ "The label Record Route entry types.";
+ }
+ }
+ }
+
+ grouping label-restriction-info {
+ description
+ "Label set item information.";
+ leaf restriction {
+ type enumeration {
+ enum inclusive {
+ description
+ "The label or label range is inclusive.";
+ }
+ enum exclusive {
+ description
+ "The label or label range is exclusive.";
+ }
+ }
+ default "inclusive";
+ description
+ "Indicates whether the list item is inclusive or exclusive.";
+ }
+ leaf index {
+ type uint32;
+ description
+ "The index of the label restriction list entry.";
+ }
+ container label-start {
+ must "(not(../label-end/te-label/direction) and"
+ + " not(te-label/direction))"
+ + " or "
+ + "(../label-end/te-label/direction = te-label/direction)"
+ + " or "
+ + "(not(te-label/direction) and"
+ + " (../label-end/te-label/direction = 'forward'))"
+ + " or "
+ + "(not(../label-end/te-label/direction) and"
+ + " (te-label/direction = 'forward'))" {
+ error-message "'label-start' and 'label-end' must have the "
+ + "same direction.";
+ }
+ description
+ "This is the starting label if a label range is specified.
+ This is the label value if a single label is specified,
+ in which case the 'label-end' attribute is not set.";
+ uses te-label;
+ }
+ container label-end {
+ must "(not(../label-start/te-label/direction) and"
+ + " not(te-label/direction))"
+ + " or "
+ + "(../label-start/te-label/direction = te-label/direction)"
+ + " or "
+ + "(not(te-label/direction) and"
+ + " (../label-start/te-label/direction = 'forward'))"
+ + " or "
+ + "(not(../label-start/te-label/direction) and"
+ + " (te-label/direction = 'forward'))" {
+ error-message "'label-start' and 'label-end' must have the "
+ + "same direction.";
+ }
+ description
+ "This is the ending label if a label range is specified.
+ This attribute is not set if a single label is specified.";
+ uses te-label;
+ }
+ container label-step {
+ description
+ "The step increment between labels in the label range.
+ The label start/end values will have to be consistent
+ with the sign of label step. For example,
+ 'label-start' < 'label-end' enforces 'label-step' > 0
+ 'label-start' > 'label-end' enforces 'label-step' < 0.";
+ choice technology {
+ default "generic";
+ description
+ "Data-plane technology type.";
+ case generic {
+ leaf generic {
+ type int32;
+ default "1";
+ description
+ "Label range step.";
+ }
+ }
+ }
+ }
+ leaf range-bitmap {
+ type yang:hex-string;
+ description
+ "When there are gaps between 'label-start' and 'label-end',
+ this attribute is used to specify the positions
+ of the used labels. This is represented in big endian as
+ 'hex-string'.
+ The most significant byte in the hex-string is the farthest
+ to the left in the byte sequence. Leading zero bytes in the
+ configured value may be omitted for brevity.
+ Each bit position in the 'range-bitmap' 'hex-string' maps
+ to a label in the range derived from 'label-start'.
+
+ For example, assuming that 'label-start' = 16000 and
+ 'range-bitmap' = 0x01000001, then:
+
+ - bit position (0) is set, and the corresponding mapped
+ label from the range is 16000 + (0 * 'label-step') or
+ 16000 for default 'label-step' = 1.
+ - bit position (24) is set, and the corresponding mapped
+ label from the range is 16000 + (24 * 'label-step') or
+ 16024 for default 'label-step' = 1.";
+ }
+ }
+
+ grouping label-set-info {
+ description
+ "Grouping for the list of label restrictions specifying what
+ labels may or may not be used.";
+ container label-restrictions {
+ description
+ "The label restrictions container.";
+ list label-restriction {
+ key "index";
+ description
+ "The absence of the label restrictions container implies
+ that all labels are acceptable; otherwise, only restricted
+ labels are available.";
+ reference
+ "RFC 7579: General Network Element Constraint Encoding
+ for GMPLS-Controlled Networks";
+ uses label-restriction-info;
+ }
+ }
+ }
+
+ grouping optimization-metric-entry {
+ description
+ "Optimization metrics configuration grouping.";
+ leaf metric-type {
+ type identityref {
+ base path-metric-type;
+ }
+ description
+ "Identifies the 'metric-type' that the path computation
+ process uses for optimization.";
+ }
+ leaf weight {
+ type uint8;
+ default "1";
+ description
+ "TE path metric normalization weight.";
+ }
+ container explicit-route-exclude-objects {
+ when "../metric-type = "
+ + "'te-types:path-metric-optimize-excludes'";
+ description
+ "Container for the 'exclude route' object list.";
+ uses path-route-exclude-objects;
+ }
+ container explicit-route-include-objects {
+ when "../metric-type = "
+ + "'te-types:path-metric-optimize-includes'";
+ description
+ "Container for the 'include route' object list.";
+ uses path-route-include-objects;
+ }
+ }
+
+ grouping common-constraints {
+ description
+ "Common constraints grouping that can be set on
+ a constraint set or directly on the tunnel.";
+ uses te-bandwidth {
+ description
+ "A requested bandwidth to use for path computation.";
+ }
+ leaf link-protection {
+ type identityref {
+ base link-protection-type;
+ }
+ default "te-types:link-protection-unprotected";
+ description
+ "Link protection type required for the links included
+ in the computed path.";
+ reference
+ "RFC 4202: Routing Extensions in Support of
+ Generalized Multi-Protocol Label Switching (GMPLS)";
+ }
+ leaf setup-priority {
+ type uint8 {
+ range "0..7";
+ }
+ default "7";
+ description
+ "TE LSP requested setup priority.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+ leaf hold-priority {
+ type uint8 {
+ range "0..7";
+ }
+ default "7";
+ description
+ "TE LSP requested hold priority.";
+ reference
+ "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
+ }
+ leaf signaling-type {
+ type identityref {
+ base path-signaling-type;
+ }
+ default "te-types:path-setup-rsvp";
+ description
+ "TE tunnel path signaling type.";
+ }
+ }
+
+ grouping tunnel-constraints {
+ description
+ "Tunnel constraints grouping that can be set on
+ a constraint set or directly on the tunnel.";
+ uses te-topology-identifier;
+ uses common-constraints;
+ }
+
+ grouping path-constraints-route-objects {
+ description
+ "List of route entries to be included or excluded when
+ performing the path computation.";
+ container explicit-route-objects-always {
+ description
+ "Container for the 'exclude route' object list.";
+ list route-object-exclude-always {
+ key "index";
+ ordered-by user;
+ description
+ "List of route objects to always exclude from the path
+ computation.";
+ leaf index {
+ type uint32;
+ description
+ "Explicit Route Object index. The index is used to
+ identify an entry in the list. The order of entries
+ is defined by the user without relying on key values.";
+ }
+ uses explicit-route-hop;
+ }
+ list route-object-include-exclude {
+ key "index";
+ ordered-by user;
+ description
+ "List of route objects to include or exclude in the path
+ computation.";
+ leaf explicit-route-usage {
+ type identityref {
+ base route-usage-type;
+ }
+ default "te-types:route-include-object";
+ description
+ "Indicates whether to include or exclude the
+ route object. The default is to include it.";
+ }
+ leaf index {
+ type uint32;
+ description
+ "Route object include-exclude index. The index is used
+ to identify an entry in the list. The order of entries
+ is defined by the user without relying on key values.";
+ }
+ uses explicit-route-hop {
+ augment "type" {
+ case srlg {
+ container srlg {
+ description
+ "SRLG container.";
+ leaf srlg {
+ type uint32;
+ description
+ "SRLG value.";
+ }
+ }
+ description
+ "An SRLG value to be included or excluded.";
+ }
+ description
+ "Augmentation for a generic explicit route for SRLG
+ exclusion.";
+ }
+ }
+ }
+ }
+ }
+
+ grouping path-route-include-objects {
+ description
+ "List of route objects to be included when performing
+ the path computation.";
+ list route-object-include-object {
+ key "index";
+ ordered-by user;
+ description
+ "List of Explicit Route Objects to be included in the
+ path computation.";
+ leaf index {
+ type uint32;
+ description
+ "Route object entry index. The index is used to
+ identify an entry in the list. The order of entries
+ is defined by the user without relying on key values.";
+ }
+ uses explicit-route-hop;
+ }
+ }
+
+ grouping path-route-exclude-objects {
+ description
+ "List of route objects to be excluded when performing
+ the path computation.";
+ list route-object-exclude-object {
+ key "index";
+ ordered-by user;
+ description
+ "List of Explicit Route Objects to be excluded in the
+ path computation.";
+ leaf index {
+ type uint32;
+ description
+ "Route object entry index. The index is used to
+ identify an entry in the list. The order of entries
+ is defined by the user without relying on key values.";
+ }
+ uses explicit-route-hop {
+ augment "type" {
+ case srlg {
+ container srlg {
+ description
+ "SRLG container.";
+ leaf srlg {
+ type uint32;
+ description
+ "SRLG value.";
+ }
+ }
+ description
+ "An SRLG value to be included or excluded.";
+ }
+ description
+ "Augmentation for a generic explicit route for SRLG
+ exclusion.";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-metric-bounds {
+ description
+ "TE path metric bounds grouping.";
+ container path-metric-bounds {
+ description
+ "TE path metric bounds container.";
+ list path-metric-bound {
+ key "metric-type";
+ description
+ "List of TE path metric bounds.";
+ leaf metric-type {
+ type identityref {
+ base path-metric-type;
+ }
+ description
+ "Identifies an entry in the list of 'metric-type' items
+ bound for the TE path.";
+ }
+ leaf upper-bound {
+ type uint64;
+ default "0";
+ description
+ "Upper bound on the end-to-end TE path metric. A zero
+ indicates an unbounded upper limit for the specific
+ 'metric-type'.";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-optimization {
+ description
+ "TE generic path optimization grouping.";
+ container optimizations {
+ description
+ "The objective function container that includes
+ attributes to impose when computing a TE path.";
+ choice algorithm {
+ description
+ "Optimizations algorithm.";
+ case metric {
+ if-feature "path-optimization-metric";
+ /* Optimize by metric */
+ list optimization-metric {
+ key "metric-type";
+ description
+ "TE path metric type.";
+ uses optimization-metric-entry;
+ }
+ /* Tiebreakers */
+ container tiebreakers {
+ description
+ "Container for the list of tiebreakers.";
+ list tiebreaker {
+ key "tiebreaker-type";
+ description
+ "The list of tiebreaker criteria to apply on an
+ equally favored set of paths, in order to pick
+ the best.";
+ leaf tiebreaker-type {
+ type identityref {
+ base path-metric-type;
+ }
+ description
+ "Identifies an entry in the list of tiebreakers.";
+ }
+ }
+ }
+ }
+ case objective-function {
+ if-feature "path-optimization-objective-function";
+ /* Objective functions */
+ container objective-function {
+ description
+ "The objective function container that includes
+ attributes to impose when computing a TE path.";
+ leaf objective-function-type {
+ type identityref {
+ base objective-function-type;
+ }
+ default "te-types:of-minimize-cost-path";
+ description
+ "Objective function entry.";
+ }
+ }
+ }
+ }
+ }
+ }
+
+ grouping generic-path-affinities {
+ description
+ "Path affinities grouping.";
+ container path-affinities-values {
+ description
+ "Path affinities represented as values.";
+ list path-affinities-value {
+ key "usage";
+ description
+ "List of named affinity constraints.";
+ leaf usage {
+ type identityref {
+ base resource-affinities-type;
+ }
+ description
+ "Identifies an entry in the list of value affinity
+ constraints.";
+ }
+ leaf value {
+ type admin-groups;
+ default "";
+ description
+ "The affinity value. The default is empty.";
+ }
+ }
+ }
+ container path-affinity-names {
+ description
+ "Path affinities represented as names.";
+ list path-affinity-name {
+ key "usage";
+ description
+ "List of named affinity constraints.";
+ leaf usage {
+ type identityref {
+ base resource-affinities-type;
+ }
+ description
+ "Identifies an entry in the list of named affinity
+ constraints.";
+ }
+ list affinity-name {
+ key "name";
+ leaf name {
+ type string;
+ description
+ "Identifies a named affinity entry.";
+ }
+ description
+ "List of named affinities.";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-srlgs {
+ description
+ "Path SRLG grouping.";
+ container path-srlgs-lists {
+ description
+ "Path SRLG properties container.";
+ list path-srlgs-list {
+ key "usage";
+ description
+ "List of SRLG values to be included or excluded.";
+ leaf usage {
+ type identityref {
+ base route-usage-type;
+ }
+ description
+ "Identifies an entry in a list of SRLGs to either
+ include or exclude.";
+ }
+ leaf-list values {
+ type srlg;
+ description
+ "List of SRLG values.";
+ }
+ }
+ }
+ container path-srlgs-names {
+ description
+ "Container for the list of named SRLGs.";
+ list path-srlgs-name {
+ key "usage";
+ description
+ "List of named SRLGs to be included or excluded.";
+ leaf usage {
+ type identityref {
+ base route-usage-type;
+ }
+ description
+ "Identifies an entry in a list of named SRLGs to either
+ include or exclude.";
+ }
+ leaf-list names {
+ type string;
+ description
+ "List of named SRLGs.";
+ }
+ }
+ }
+ }
+
+ grouping generic-path-disjointness {
+ description
+ "Path disjointness grouping.";
+ leaf disjointness {
+ type te-path-disjointness;
+ description
+ "The type of resource disjointness.
+ When configured for a primary path, the disjointness level
+ applies to all secondary LSPs. When configured for a
+ secondary path, the disjointness level overrides the level
+ configured for the primary path.";
+ }
+ }
+
+ grouping common-path-constraints-attributes {
+ description
+ "Common path constraints configuration grouping.";
+ uses common-constraints;
+ uses generic-path-metric-bounds;
+ uses generic-path-affinities;
+ uses generic-path-srlgs;
+ }
+
+ grouping generic-path-constraints {
+ description
+ "Global named path constraints configuration grouping.";
+ container path-constraints {
+ description
+ "TE named path constraints container.";
+ uses common-path-constraints-attributes;
+ uses generic-path-disjointness;
+ }
+ }
+
+ grouping generic-path-properties {
+ description
+ "TE generic path properties grouping.";
+ container path-properties {
+ config false;
+ description
+ "The TE path properties.";
+ list path-metric {
+ key "metric-type";
+ description
+ "TE path metric type.";
+ leaf metric-type {
+ type identityref {
+ base path-metric-type;
+ }
+ description
+ "TE path metric type.";
+ }
+ leaf accumulative-value {
+ type uint64;
+ description
+ "TE path metric accumulative value.";
+ }
+ }
+ uses generic-path-affinities;
+ uses generic-path-srlgs;
+ container path-route-objects {
+ description
+ "Container for the list of route objects either returned by
+ the computation engine or actually used by an LSP.";
+ list path-route-object {
+ key "index";
+ ordered-by user;
+ description
+ "List of route objects either returned by the computation
+ engine or actually used by an LSP.";
+ leaf index {
+ type uint32;
+ description
+ "Route object entry index. The index is used to
+ identify an entry in the list. The order of entries
+ is defined by the user without relying on key
+ values.";
+ }
+ uses explicit-route-hop;
+ }
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-te@2021-02-20.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-te@2021-02-20.yang
new file mode 100644
index 0000000..22ba908
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-te@2021-02-20.yang
@@ -0,0 +1,1796 @@
+module ietf-te {
+ yang-version 1.1;
+ namespace "urn:ietf:params:xml:ns:yang:ietf-te";
+
+ /* Replace with IANA when assigned */
+
+ prefix te;
+
+ /* Import TE generic types */
+
+ import ietf-te-types {
+ prefix te-types;
+ //reference
+ // "RFC8776: Common YANG Data Types for Traffic Engineering.";
+ }
+ import ietf-inet-types {
+ prefix inet;
+ //reference
+ // "RFC6991: Common YANG Data Types.";
+ }
+ import ietf-yang-types {
+ prefix yang;
+ //reference
+ // "RFC6991: Common YANG Data Types.";
+ }
+
+ organization
+ "IETF Traffic Engineering Architecture and Signaling (TEAS)
+ Working Group.";
+ contact
+ "WG Web: <http://tools.ietf.org/wg/teas/>
+ WG List: <mailto:teas@ietf.org>
+
+ Editor: Tarek Saad
+ <mailto:tsaad@juniper.net>
+
+ Editor: Rakesh Gandhi
+ <mailto:rgandhi@cisco.com>
+
+ Editor: Vishnu Pavan Beeram
+ <mailto:vbeeram@juniper.net>
+
+ Editor: Himanshu Shah
+ <mailto:hshah@ciena.com>
+
+ Editor: Xufeng Liu
+ <mailto: xufeng.liu.ietf@gmail.com>
+
+ Editor: Igor Bryskin
+ <mailto:i_bryskin@yahoo.com>";
+ description
+ "YANG data module for TE configuration, state, and RPCs.
+ The model fully conforms to the Network Management
+ Datastore Architecture (NMDA).
+
+ Copyright (c) 2019 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ // RFC Ed.: replace XXXX with actual RFC number and remove this
+ // note.
+ // RFC Ed.: update the date below with the date of RFC publication
+ // and remove this note.
+
+ revision 2021-02-20 {
+ description
+ "Latest update to TE generic YANG module.";
+ reference
+ "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
+ and Interfaces.";
+ }
+
+ identity path-computation-error-reason {
+ description
+ "Base identity for path computation error reasons.";
+ }
+
+ identity path-computation-error-no-topology {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because there is no topology
+ with the provided the topology-identifier.";
+ }
+
+ identity path-computation-error-no-dependent-server {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because one or more dependent
+ path computation servers are unavailable.
+ The dependent path computation server could be
+ a BRPC downstream PCE or a child PCE.";
+ reference
+ "RFC5441, RFC 8685";
+ }
+
+ identity path-computation-error-pce-unavailable {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because PCE is not available.";
+ reference
+ "RFC5440";
+ }
+
+ identity path-computation-error-no-inclusion-hop {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because there is no
+ node or link provided by one or more inclusion hops.";
+ reference
+ "RFC8685";
+ }
+
+ identity path-computation-error-destination-unknown-in-domain {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because the destination node is
+ unknown in indicated destination domain.";
+ reference
+ "RFC8685";
+ }
+
+ identity path-computation-error-no-resource {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because there is no
+ available resource in one or more domains.";
+ reference
+ "RFC8685";
+ }
+
+ identity path-computation-error-child-pce-unresponsive {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because child PCE is not
+ responsive.";
+ reference
+ "RFC8685";
+ }
+
+ identity path-computation-error-destination-domain-unknown {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because the destination domain
+ was unknown.";
+ reference
+ "RFC8685";
+ }
+
+ identity path-computation-error-p2mp {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because of P2MP reachability
+ problem.";
+ reference
+ "RFC8306";
+ }
+
+ identity path-computation-error-no-gco-migration {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because of no GCO migration
+ path found.";
+ reference
+ "RFC5557";
+ }
+
+ identity path-computation-error-no-gco-solution {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because of no GCO solution
+ found.";
+ reference
+ "RFC5557";
+ }
+
+ identity path-computation-error-path-not-found {
+ base path-computation-error-reason;
+ description
+ "Path computation no path found error reason.";
+ reference
+ "RFC5440";
+ }
+
+ identity path-computation-error-pks-expansion {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because of PKS expansion
+ failure.";
+ reference
+ "RFC5520";
+ }
+
+ identity path-computation-error-brpc-chain-unavailable {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because PCE BRPC chain
+ unavailable.";
+ reference
+ "RFC5441";
+ }
+
+ identity path-computation-error-source-unknown {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because source node is unknown.";
+ reference
+ "RFC5440";
+ }
+
+ identity path-computation-error-destination-unknown {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because destination node is
+ unknown.";
+ reference
+ "RFC5440";
+ }
+
+ identity path-computation-error-no-server {
+ base path-computation-error-reason;
+ description
+ "Path computation has failed because path computation
+ server is unavailable.";
+ reference
+ "RFC5440";
+ }
+
+ identity tunnel-actions-type {
+ description
+ "TE tunnel actions type.";
+ }
+
+ identity tunnel-action-reoptimize {
+ base tunnel-actions-type;
+ description
+ "Reoptimize tunnel action type.";
+ }
+
+ identity tunnel-admin-auto {
+ base te-types:tunnel-admin-state-type;
+ description
+ "Tunnel administrative auto state. The administrative status in
+ state datastore transitions to 'tunnel-admin-up' when the tunnel
+ used by the client layer, and to 'tunnel-admin-down' when it is
+ not used by the client layer.";
+ }
+
+ identity association-type-diversity {
+ base te-types:association-type;
+ description
+ "Association Type diversity used to associate LSPs whose paths
+ are to be diverse from each other.";
+ reference
+ "ID.ietf-pce-association-diversity.";
+ }
+
+ identity path-metric-loss {
+ base te-types:path-metric-type;
+ description
+ "The path loss (as a packet percentage) metric type that
+ encodes a function of the unidirectional loss metrics of all
+ links traversed by a P2P path.";
+ reference "RFC8233";
+ }
+
+ identity protocol-origin-type {
+ description
+ "Base identity for protocol origin type.";
+ }
+ identity protocol-origin-api {
+ base protocol-origin-type;
+ description
+ "Protocol origin is via Application Programmable Interface
+ (API).";
+ }
+ identity protocol-origin-pcep {
+ base protocol-origin-type;
+ description
+ "Protocol origin is Path Computation Engine Protocol (PCEP).";
+ reference "RFC5440";
+ }
+ identity protocol-origin-bgp {
+ base protocol-origin-type;
+ description
+ "Protocol origin is Border Gateway Protocol (BGP).";
+ reference "RFC5512";
+ }
+
+ typedef tunnel-ref {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:name";
+ }
+ description
+ "This type is used by data models that need to reference
+ configured TE tunnel.";
+ }
+
+ typedef path-ref {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/te:name";
+ }
+ /** FIXME leafref inside union is not supported
+ type union {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/"
+ + "te:primary-paths/te:primary-path/te:name";
+ }
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/"
+ + "te:secondary-paths/te:secondary-path/te:name";
+ }
+ } **/
+ description
+ "This type is used by data models that need to reference
+ configured primary or secondary path of a TE tunnel.";
+ }
+
+ typedef te-gen-node-id {
+ type union {
+ type te-types:te-node-id;
+ type inet:ip-address;
+ }
+ description
+ "Generic type that identifies a node in a TE topology.";
+ }
+
+ /**
+ * TE tunnel generic groupings
+ */
+
+ grouping te-generic-node-id {
+ description
+ "A reusable grouping for a TE generic node identifier.";
+ leaf id {
+ type te-gen-node-id;
+ description
+ "The identifier of the node. Can be represented as IP
+ address or dotted quad address.";
+ }
+ leaf type {
+ type enumeration {
+ enum ip {
+ description
+ "IP address representation of the node identifier.";
+ }
+ enum dotted-quad {
+ description
+ "Dotted quad address representation of the node
+ identifier.";
+ }
+ }
+ description
+ "Type of node identifier representation.";
+ }
+ }
+
+ grouping primary-path {
+ description
+ "The tunnel primary path properties.";
+ uses path-common-properties;
+ uses path-preference;
+ uses k-requested-paths;
+ uses path-compute-info;
+ uses path-state;
+ }
+
+ grouping primary-reverse-path {
+ description
+ "The tunnel primary reverse path properties.";
+ reference
+ "RFC7551";
+ uses path-common-properties;
+ uses path-compute-info;
+ uses path-state;
+ }
+
+ grouping secondary-path {
+ description
+ "The tunnel secondary path properties.";
+ uses path-common-properties;
+ uses path-preference;
+ uses path-compute-info;
+ uses protection-restoration-properties;
+ uses path-state;
+ }
+
+ grouping secondary-reverse-path {
+ description
+ "The tunnel secondary reverse path properties.";
+ uses path-common-properties;
+ uses path-preference;
+ uses path-compute-info;
+ uses protection-restoration-properties;
+ uses path-state;
+ }
+
+ grouping path-common-properties {
+ description
+ "Common path attributes.";
+ leaf name {
+ type string;
+ description
+ "TE path name.";
+ }
+ leaf path-computation-method {
+ type identityref {
+ base te-types:path-computation-method;
+ }
+ default "te-types:path-locally-computed";
+ description
+ "The method used for computing the path, either
+ locally computed, queried from a server or not
+ computed at all (explicitly configured).";
+ }
+ container path-computation-server {
+ when "derived-from-or-self(../path-computation-method, "
+ + "'te-types:path-externally-queried')" {
+ description
+ "The path-computation server when the path is
+ externally queried.";
+ }
+ uses te-generic-node-id;
+ description
+ "Address of the external path computation
+ server.";
+ }
+ leaf compute-only {
+ type empty;
+ description
+ "When set, the path is computed and updated whenever
+ the topology is updated. No resources are committed
+ or reserved in the network.";
+ }
+ leaf use-path-computation {
+ when "derived-from-or-self(../path-computation-method, "
+ + "'te-types:path-locally-computed')";
+ type boolean;
+ default "true";
+ description
+ "When 'true' indicates the path is dynamically computed and/or
+ validated against the Traffic-Engineering Database (TED),
+ and when 'false' indicates no validation against the TED is
+ required.";
+ }
+ leaf lockdown {
+ type empty;
+ description
+ "Indicates no reoptimization to be attempted for this path.";
+ }
+ leaf path-scope {
+ type identityref {
+ base te-types:path-scope-type;
+ }
+ default "te-types:path-scope-end-to-end";
+ config false;
+ description
+ "Path scope if segment or an end-to-end path.";
+ }
+ }
+
+ /* This grouping will be re-used in path-computation rpc */
+
+ grouping path-compute-info {
+ description
+ "Attributes used for path computation request.";
+ uses tunnel-associations-properties;
+ uses te-types:generic-path-optimization;
+ leaf named-path-constraint {
+ if-feature "te-types:named-path-constraints";
+ type leafref {
+ path "/te:te/te:globals/te:named-path-constraints/"
+ + "te:named-path-constraint/te:name";
+ }
+ description
+ "Reference to a globally defined named path constraint set.";
+ }
+ uses path-constraints-common;
+ }
+
+ /* This grouping will be re-used in path-computation rpc */
+
+ grouping path-preference {
+ description
+ "The path preference.";
+ leaf preference {
+ type uint8 {
+ range "1..255";
+ }
+ default "1";
+ description
+ "Specifies a preference for this path. The lower the number
+ higher the preference.";
+ }
+ }
+
+ /* This grouping will be re-used in path-computation rpc */
+
+ grouping k-requested-paths {
+ description
+ "The k-shortest paths requests.";
+ leaf k-requested-paths {
+ type uint8;
+ default "1";
+ description
+ "The number of k-shortest-paths requested from the path
+ computation server and returned sorted by its optimization
+ objective. The value 0 all possible paths.";
+ }
+ }
+
+ grouping path-properties {
+ description
+ "TE computed path properties grouping.";
+ uses te-types:generic-path-properties {
+ augment "path-properties" {
+ description
+ "additional path properties returned by path computation.";
+ uses te-types:te-bandwidth;
+ leaf disjointness-type {
+ type te-types:te-path-disjointness;
+ config false;
+ description
+ "The type of resource disjointness.
+ When reported for a primary path, it represents the
+ minimum level of disjointness of all the secondary
+ paths.
+ When reported for a secondary path, it represents the
+ disjointness of the secondary path.";
+ }
+ }
+ }
+ }
+
+ grouping path-state {
+ description
+ "TE per path state parameters.";
+ uses path-computation-response;
+ uses lsp-provisioning-error-info {
+ augment "lsp-provisioning-error-infos/"
+ + "lsp-provisioning-error-info" {
+ description
+ "Augmentation of LSP provisioning information under a
+ specific path.";
+ leaf lsp-id {
+ type uint16;
+ description
+ "The LSP-ID for which path computation was performed.";
+ }
+ }
+ }
+ container lsps {
+ config false;
+ description
+ "The TE LSPs container.";
+ list lsp {
+ key "node lsp-id";
+ description
+ "List of LSPs associated with the tunnel.";
+ leaf tunnel-name {
+ type leafref {
+ path "/te:te/te:lsps/te:lsp/te:tunnel-name";
+ }
+ description "TE tunnel name.";
+ }
+ leaf node {
+ type leafref {
+ path "/te:te/te:lsps/te:lsp/te:node";
+ }
+ description "The node where the LSP state resides on.";
+ }
+ leaf lsp-id {
+ type leafref {
+ path "/te:te/te:lsps/te:lsp/te:lsp-id";
+ }
+ description "The TE LSP identifier.";
+ }
+ }
+ }
+ }
+
+ /* This grouping will be re-used in path-computation rpc */
+
+ grouping path-computation-response {
+ description
+ "Attributes reported by path computation response.";
+ container computed-paths-properties {
+ config false;
+ description
+ "Computed path properties container.";
+ list computed-path-properties {
+ key "k-index";
+ description
+ "List of computed paths.";
+ leaf k-index {
+ type uint8;
+ description
+ "The k-th path returned from the computation server.
+ A lower k value path is more optimal than higher k
+ value path(s)";
+ }
+ uses path-properties {
+ description
+ "The TE path computed properties.";
+ }
+ }
+ }
+ container computed-path-error-infos {
+ config false;
+ description
+ "Path computation information container.";
+ list computed-path-error-info {
+ description
+ "List of path computation info entries.";
+ leaf error-description {
+ type string;
+ description
+ "Textual representation of the error occurred during
+ path computation.";
+ }
+ leaf error-timestamp {
+ type yang:date-and-time;
+ description
+ "Timestamp of last path computation attempt.";
+ }
+ leaf error-reason {
+ type identityref {
+ base path-computation-error-reason;
+ }
+ description
+ "Reason for the path computation error.";
+ }
+ }
+ }
+ }
+
+ grouping lsp-provisioning-error-info {
+ description
+ "Grouping for LSP provisioning error information.";
+ container lsp-provisioning-error-infos {
+ config false;
+ description
+ "LSP provisioning error information.";
+ list lsp-provisioning-error-info {
+ description
+ "List of LSP provisioning error info entries.";
+ leaf error-description {
+ type string;
+ description
+ "Textual representation of the error occurred during
+ path computation.";
+ }
+ leaf error-timestamp {
+ type yang:date-and-time;
+ description
+ "Timestamp of when the reported error occurred.";
+ }
+ leaf error-node-id {
+ type te-types:te-node-id;
+ default "0.0.0.0";
+ description
+ "Node identifier of node where error occurred.";
+ }
+ leaf error-link-id {
+ type te-types:te-tp-id;
+ default "0";
+ description
+ "Link ID where the error occurred.";
+ }
+ }
+ }
+ }
+
+ grouping protection-restoration-properties-state {
+ description
+ "Protection parameters grouping.";
+ leaf lockout-of-normal {
+ type boolean;
+ default "false";
+ description
+ "When set to 'True', it represents a lockout of normal
+ traffic external command. When set to 'False', it
+ represents a clear lockout of normal traffic external
+ command. The lockout of normal traffic command applies
+ to this Tunnel.";
+ reference
+ "RFC4427";
+ }
+ leaf freeze {
+ type boolean;
+ default "false";
+ description
+ "When set to 'True', it represents a freeze external command.
+ When set to 'False', it represents a clear freeze external
+ command. The freeze command applies to all the Tunnels which
+ are sharing the protection resources with this Tunnel.";
+ reference
+ "RFC4427";
+ }
+ leaf lsp-protection-role {
+ type enumeration {
+ enum working {
+ description
+ "A working LSP must be a primary LSP whilst a protecting
+ LSP can be either a primary or a secondary LSP. Also,
+ known as protected LSPs when working LSPs are associated
+ with protecting LSPs.";
+ }
+ enum protecting {
+ description
+ "A secondary LSP is an LSP that has been provisioned
+ in the control plane only; e.g. resource allocation
+ has not been committed at the data plane.";
+ }
+ }
+ default "working";
+ description
+ "LSP role type.";
+ reference
+ "RFC4872, section 4.2.1";
+ }
+ leaf lsp-protection-state {
+ type identityref {
+ base te-types:lsp-protection-state;
+ }
+ default "te-types:normal";
+ description
+ "The state of the APS state machine controlling which
+ tunnels is using the resources of the protecting LSP.";
+ }
+ leaf protection-group-ingress-node-id {
+ type te-types:te-node-id;
+ default "0.0.0.0";
+ description
+ "Indicates the te-node-id of the protection group
+ ingress node when the APS state represents an external
+ command (LoP, SF, MS) applied to it or a WTR timer
+ running on it. If the external command is not applied to
+ the ingress node or the WTR timer is not running on it,
+ this attribute is not specified. A value 0.0.0.0 is used
+ when the te-node-id of the protection group ingress node is
+ unknown (e.g., because the ingress node is outside the scope
+ of control of the server)";
+ }
+ leaf protection-group-egress-node-id {
+ type te-types:te-node-id;
+ default "0.0.0.0";
+ description
+ "Indicates the te-node-id of the protection group egress node
+ when the APS state represents an external command (LoP, SF,
+ MS) applied to it or a WTR timer running on it. If the
+ external command is not applied to the ingress node or
+ the WTR timer is not running on it, this attribute is not
+ specified. A value 0.0.0.0 is used when the te-node-id of
+ the protection group ingress node is unknown (e.g., because
+ the ingress node is outside the scope of control of the
+ server)";
+ }
+ }
+
+ grouping protection-restoration-properties {
+ description
+ "Protection and restoration parameters.";
+ container protection {
+ description
+ "Protection parameters.";
+ leaf enable {
+ type boolean;
+ default "false";
+ description
+ "A flag to specify if LSP protection is enabled.";
+ reference
+ "RFC4427";
+ }
+ leaf protection-type {
+ type identityref {
+ base te-types:lsp-protection-type;
+ }
+ default "te-types:lsp-protection-unprotected";
+ description
+ "LSP protection type.";
+ }
+ leaf protection-reversion-disable {
+ type boolean;
+ default "false";
+ description
+ "Disable protection reversion to working path.";
+ }
+ leaf hold-off-time {
+ type uint32;
+ units "milli-seconds";
+ default "0";
+ description
+ "The time between the declaration of an SF or SD condition
+ and the initialization of the protection switching
+ algorithm.";
+ reference
+ "RFC4427";
+ }
+ leaf wait-to-revert {
+ type uint16;
+ units "seconds";
+ description
+ "Time to wait before attempting LSP reversion.";
+ reference
+ "RFC4427";
+ }
+ leaf aps-signal-id {
+ type uint8 {
+ range "1..255";
+ }
+ default "1";
+ description
+ "The APS signal number used to reference the traffic of this
+ tunnel. The default value for normal traffic is 1.
+ The default value for extra-traffic is 255. If not specified,
+ non-default values can be assigned by the server,
+ if and only if, the server controls both endpoints.";
+ reference
+ "RFC4427";
+ }
+ }
+ container restoration {
+ description
+ "Restoration parameters.";
+ leaf enable {
+ type boolean;
+ default "false";
+ description
+ "A flag to specify if LSP restoration is enabled.";
+ reference
+ "RFC4427";
+ }
+ leaf restoration-type {
+ type identityref {
+ base te-types:lsp-restoration-type;
+ }
+ default "te-types:lsp-restoration-restore-any";
+ description
+ "LSP restoration type.";
+ }
+ leaf restoration-scheme {
+ type identityref {
+ base te-types:restoration-scheme-type;
+ }
+ default "te-types:restoration-scheme-preconfigured";
+ description
+ "LSP restoration scheme.";
+ }
+ leaf restoration-reversion-disable {
+ type boolean;
+ default "false";
+ description
+ "Disable restoration reversion to working path.";
+ }
+ leaf hold-off-time {
+ type uint32;
+ units "milli-seconds";
+ description
+ "The time between the declaration of an SF or SD condition
+ and the initialization of the protection switching
+ algorithm.";
+ reference
+ "RFC4427";
+ }
+ leaf wait-to-restore {
+ type uint16;
+ units "seconds";
+ description
+ "Time to wait before attempting LSP restoration.";
+ reference
+ "RFC4427";
+ }
+ leaf wait-to-revert {
+ type uint16;
+ units "seconds";
+ description
+ "Time to wait before attempting LSP reversion.";
+ reference
+ "RFC4427";
+ }
+ }
+ }
+ grouping tunnel-associations-properties {
+ description
+ "TE tunnel association grouping.";
+ container association-objects {
+ description
+ "TE tunnel associations.";
+ list association-object {
+ key "association-key";
+ unique "type id source/id source/type";
+ description
+ "List of association base objects.";
+ reference
+ "RFC4872";
+ leaf association-key {
+ type string;
+ description
+ "Association key used to identify a specific
+ association in the list";
+ }
+ leaf type {
+ type identityref {
+ base te-types:association-type;
+ }
+ description
+ "Association type.";
+ reference
+ "RFC4872";
+ }
+ leaf id {
+ type uint16;
+ description
+ "Association identifier.";
+ reference
+ "RFC4872";
+ }
+ container source {
+ uses te-generic-node-id;
+ description
+ "Association source.";
+ reference
+ "RFC4872";
+ }
+ }
+ list association-object-extended {
+ key "association-key";
+ unique
+ "type id source/id source/type global-source extended-id";
+ description
+ "List of extended association objects.";
+ reference
+ "RFC6780";
+ leaf association-key {
+ type string;
+ description
+ "Association key used to identify a specific
+ association in the list";
+ }
+ leaf type {
+ type identityref {
+ base te-types:association-type;
+ }
+ description
+ "Association type.";
+ reference
+ "RFC4872, RFC6780";
+ }
+ leaf id {
+ type uint16;
+ description
+ "Association identifier.";
+ reference
+ "RFC4872, RFC6780";
+ }
+ container source {
+ uses te-generic-node-id;
+ description
+ "Association source.";
+ reference
+ "RFC4872, RFC6780";
+ }
+ leaf global-source {
+ type uint32;
+ description
+ "Association global source.";
+ reference
+ "RFC6780";
+ }
+ leaf extended-id {
+ type yang:hex-string;
+ description
+ "Association extended identifier.";
+ reference
+ "RFC6780";
+ }
+ }
+ }
+ }
+
+ /* TE tunnel configuration/state grouping */
+ /* This grouping will be re-used in path-computation rpc */
+
+ grouping tunnel-hierarchy-properties {
+ description
+ "A grouping for TE tunnel hierarchy information.";
+ container hierarchy {
+ description
+ "Container for TE hierarchy related information.";
+ container dependency-tunnels {
+ description
+ "List of tunnels that this tunnel can be potentially
+ dependent on.";
+ list dependency-tunnel {
+ key "name";
+ description
+ "A tunnel entry that this tunnel can potentially depend
+ on.";
+ leaf name {
+ type leafref {
+ path "/te:te/te:tunnels/te:tunnel/te:name";
+ require-instance false;
+ }
+ description
+ "Dependency tunnel name. The tunnel may not have been
+ instantiated yet.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ default "te-types:lsp-encoding-packet";
+ description
+ "The LSP encoding type for the dependency tunnel.";
+ reference
+ "RFC3945";
+ }
+ leaf switching-type {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ default "te-types:switching-psc1";
+ description
+ "The LSP switching type for the dependency tunnel.";
+ reference
+ "RFC3945";
+ }
+ }
+ }
+ container hierarchical-link {
+ description
+ "Identifies a hierarchical link (in client layer)
+ that this tunnel is associated with.";
+ reference
+ "RFC4206";
+ leaf local-te-node-id {
+ type te-types:te-node-id;
+ default "0.0.0.0";
+ description
+ "The local TE node identifier.";
+ }
+ leaf local-te-link-tp-id {
+ type te-types:te-tp-id;
+ default "0";
+ description
+ "The local TE link termination point identifier.";
+ }
+ leaf remote-te-node-id {
+ type te-types:te-node-id;
+ default "0.0.0.0";
+ description
+ "Remote TE node identifier.";
+ }
+ uses te-types:te-topology-identifier;
+ }
+ }
+ }
+
+ grouping tunnel-properties {
+ description
+ "Top level grouping for tunnel properties.";
+ leaf operational-state {
+ type identityref {
+ base te-types:tunnel-state-type;
+ }
+ config false;
+ description
+ "TE tunnel operational state.";
+ }
+ leaf name {
+ type string;
+ description
+ "TE tunnel name.";
+ }
+ leaf identifier {
+ type uint32;
+ description
+ "TE tunnel Identifier.";
+ reference
+ "RFC3209";
+ }
+ leaf description {
+ type string;
+ default "None";
+ description
+ "Textual description for this TE tunnel.";
+ }
+ leaf encoding {
+ type identityref {
+ base te-types:lsp-encoding-types;
+ }
+ default "te-types:lsp-encoding-packet";
+ description
+ "LSP encoding type.";
+ reference
+ "RFC3945";
+ }
+ leaf switching-type {
+ type identityref {
+ base te-types:switching-capabilities;
+ }
+ default "te-types:switching-psc1";
+ description
+ "LSP switching type.";
+ reference
+ "RFC3945";
+ }
+ leaf admin-state {
+ type identityref {
+ base te-types:tunnel-admin-state-type;
+ }
+ default "te-types:tunnel-admin-state-up";
+ description
+ "TE tunnel administrative state.";
+ }
+ leaf reoptimize-timer {
+ type uint16;
+ units "seconds";
+ description
+ "Frequency of reoptimization of a traffic engineered LSP.";
+ }
+ leaf source {
+ type te-types:te-node-id;
+ description
+ "TE tunnel source node ID.";
+ }
+ leaf destination {
+ type te-types:te-node-id;
+ description
+ "TE tunnel destination node identifier.";
+ }
+ container controller {
+ description
+ "Contains tunnel data relevant to external controller(s).
+ This target node may be augmented by external module(s),
+ for example, to add data for PCEP initiated and/or
+ delegated tunnels.";
+ leaf protocol-origin {
+ type identityref {
+ base protocol-origin-type;
+ }
+ description
+ "The protocol origin for instantiating the tunnel.";
+ }
+ leaf controller-entity-id {
+ type string;
+ description
+ "An identifier unique within the scope of visibility that
+ associated with the entity that controls the tunnel";
+ reference "RFC8232";
+ }
+ }
+ leaf src-tunnel-tp-id {
+ type binary;
+ description
+ "TE tunnel source termination point identifier.";
+ }
+ leaf dst-tunnel-tp-id {
+ type binary;
+ description
+ "TE tunnel destination termination point identifier.";
+ }
+ leaf bidirectional {
+ type boolean;
+ default "false";
+ description
+ "Indicates a bidirectional co-routed LSP.";
+ }
+ uses tunnel-associations-properties;
+ uses protection-restoration-properties;
+ uses te-types:tunnel-constraints;
+ uses tunnel-hierarchy-properties;
+ container primary-paths {
+ description
+ "The set of primary paths.";
+ list primary-path {
+ key "name";
+ description
+ "List of primary paths for this tunnel.";
+ uses primary-path;
+ container primary-reverse-path {
+ description
+ "The reverse primary path properties.";
+ uses primary-reverse-path;
+ container candidate-secondary-reverse-paths {
+ description
+ "The set of referenced candidate reverse secondary paths
+ from the full set of secondary reverse paths which may be
+ used for this primary path.";
+ list candidate-secondary-reverse-path {
+ key "secondary-path";
+ ordered-by user;
+ description
+ "List of candidate secondary reverse path(s)";
+ leaf secondary-path {
+ type leafref {
+ path "../../../../../../te:secondary-reverse-paths/"
+ + "te:secondary-reverse-path/te:name";
+ }
+ description
+ "A reference to the secondary reverse path that
+ should be utilised when the containing primary
+ reverse path option is in use.";
+ }
+ }
+ }
+ }
+ container candidate-secondary-paths {
+ description
+ "The set of candidate secondary paths which may be used
+ for this primary path. When secondary paths are specified
+ in the list the path of the secondary LSP in use must be
+ restricted to those path options referenced. The
+ priority of the secondary paths is specified within the
+ list. Higher priority values are less preferred - that is
+ to say that a path with priority 0 is the most preferred
+ path. In the case that the list is empty, any secondary
+ path option may be utilised when the current primary path
+ is in use.";
+ list candidate-secondary-path {
+ key "secondary-path";
+ ordered-by user;
+ description
+ "List of candidate secondary paths for this tunnel.";
+ leaf secondary-path {
+ type leafref {
+ path "../../../../../te:secondary-paths/"
+ + "te:secondary-path/te:name";
+ }
+ description
+ "A reference to the secondary path that should be
+ utilised when the containing primary path option is
+ in use.";
+ }
+ leaf active {
+ type boolean;
+ config false;
+ description
+ "Indicates the current active path option that has
+ been selected of the candidate secondary paths.";
+ }
+ }
+ }
+ }
+ }
+ container secondary-paths {
+ description
+ "The set of secondary paths.";
+ list secondary-path {
+ key "name";
+ description
+ "List of secondary paths for this tunnel.";
+ uses secondary-path;
+ }
+ }
+ container secondary-reverse-paths {
+ description
+ "The set of secondary reverse paths.";
+ list secondary-reverse-path {
+ key "name";
+ description
+ "List of secondary paths for this tunnel.";
+ uses secondary-reverse-path;
+ }
+ }
+ }
+ grouping tunnel-actions {
+ /** FIXME TODO Decheng actions is not supported
+ description
+ "Tunnel actions.";
+ action tunnel-action {
+ description
+ "Tunnel action.";
+ input {
+ leaf action-type {
+ type identityref {
+ base tunnel-actions-type;
+ }
+ description
+ "Tunnel action type.";
+ }
+ }
+ output {
+ leaf action-result {
+ type identityref {
+ base te-types:te-action-result;
+ }
+ description
+ "The result of the tunnel action operation.";
+ }
+ }
+ } **/
+ }
+
+ grouping tunnel-protection-actions {
+ /** FIXME TODO Decheng actions is not supported
+ description
+ "Protection external command actions.";
+ action protection-external-commands {
+ input {
+ leaf protection-external-command {
+ type identityref {
+ base te-types:protection-external-commands;
+ }
+ description
+ "Protection external command.";
+ }
+ leaf protection-group-ingress-node-id {
+ type te-types:te-node-id;
+ description
+ "When specified, indicates whether the action is
+ applied on ingress node.
+ By default, if neither ingress nor egress node-id
+ is set, the action applies to ingress node only.";
+ }
+ leaf protection-group-egress-node-id {
+ type te-types:te-node-id;
+ description
+ "When specified, indicates whether the action is
+ applied on egress node.
+ By default, if neither ingress nor egress node-id
+ is set, the action applies to ingress node only.";
+ }
+ leaf path-ref {
+ type path-ref;
+ description
+ "Indicates to which path the external command applies to.";
+ }
+ leaf traffic-type {
+ type enumeration {
+ enum normal-traffic {
+ description
+ "The manual-switch or forced-switch command applies to
+ the normal traffic (this Tunnel).";
+ }
+ enum null-traffic {
+ description
+ "The manual-switch or forced-switch command applies to
+ the null traffic.";
+ }
+ enum extra-traffic {
+ description
+ "The manual-switch or forced-switch command applies to
+ the extra traffic (the extra-traffic Tunnel sharing
+ protection bandwidth with this Tunnel).";
+ }
+ }
+ description
+ "Indicates whether the manual-switch or forced-switch
+ commands applies to the normal traffic, the null traffic
+ or the extra-traffic.";
+ reference
+ "RFC4427";
+ }
+ leaf extra-traffic-tunnel-ref {
+ type tunnel-ref;
+ description
+ "In case there are multiple extra-traffic tunnels sharing
+ protection bandwidth with this Tunnel (m:n protection),
+ represents which extra-traffic Tunnel the manual-switch or
+ forced-switch to extra-traffic command applies to.";
+ }
+ }
+ } **/
+ }
+
+ /*** End of TE tunnel groupings ***/
+ /**
+ * LSP related generic groupings
+ */
+
+ grouping lsp-record-route-information-state {
+ description
+ "LSP Recorded route information grouping.";
+ container lsp-record-route-information {
+ description
+ "RSVP recorded route object information.";
+ list lsp-record-route-information {
+ when "../../origin-type = 'ingress'" {
+ description
+ "Applicable on ingress LSPs only.";
+ }
+ key "index";
+ description
+ "Record route list entry.";
+ uses te-types:record-route-state;
+ }
+ }
+ }
+
+ grouping lsps-grouping {
+ description
+ "LSPs state operational data grouping.";
+ container lsps {
+ config false;
+ description
+ "TE LSPs state container.";
+ list lsp {
+ key "tunnel-name";
+ //key "tunnel-name lsp-id node";
+ unique "source destination tunnel-id lsp-id "
+ + "extended-tunnel-id";
+ description
+ "List of LSPs associated with the tunnel.";
+ leaf tunnel-name {
+ type string;
+ description "The TE tunnel name.";
+ }
+ leaf lsp-id {
+ type uint16;
+ description
+ "Identifier used in the SENDER_TEMPLATE and the FILTER_SPEC
+ that can be changed to allow a sender to share resources
+ with itself.";
+ reference
+ "RFC3209";
+ }
+ leaf node {
+ type te-types:te-node-id;
+ description
+ "The node where the TE LSP state resides on.";
+ }
+ uses lsp-properties-state;
+ uses lsp-record-route-information-state;
+ }
+ }
+ }
+
+ /*** End of TE LSP groupings ***/
+ /**
+ * TE global generic groupings
+ */
+ /* Global named admin-groups configuration data */
+
+ grouping named-admin-groups-properties {
+ description
+ "Global named administrative groups configuration
+ grouping.";
+ leaf name {
+ type string;
+ description
+ "A string name that uniquely identifies a TE
+ interface named admin-group.";
+ }
+ leaf bit-position {
+ type uint32;
+ description
+ "Bit position representing the administrative group.";
+ reference
+ "RFC3209 and RFC7308";
+ }
+ }
+
+ grouping named-admin-groups {
+ description
+ "Global named administrative groups configuration
+ grouping.";
+ container named-admin-groups {
+ description
+ "TE named admin groups container.";
+ list named-admin-group {
+ if-feature "te-types:extended-admin-groups";
+ if-feature "te-types:named-extended-admin-groups";
+ key "name";
+ description
+ "List of named TE admin-groups.";
+ uses named-admin-groups-properties;
+ }
+ }
+ }
+
+ /* Global named admin-srlgs configuration data */
+
+ grouping named-srlgs {
+ description
+ "Global named SRLGs configuration grouping.";
+ container named-srlgs {
+ description
+ "TE named SRLGs container.";
+ list named-srlg {
+ if-feature "te-types:named-srlg-groups";
+ key "name";
+ description
+ "A list of named SRLG groups.";
+ leaf name {
+ type string;
+ description
+ "A string name that uniquely identifies a TE
+ interface named SRLG.";
+ }
+ leaf value {
+ type te-types:srlg;
+ description
+ "An SRLG value.";
+ }
+ leaf cost {
+ type uint32;
+ description
+ "SRLG associated cost. Used during path to append
+ the path cost when traversing a link with this SRLG.";
+ }
+ }
+ }
+ }
+
+ /* Global named paths constraints configuration data */
+
+ grouping path-constraints-common {
+ description
+ "Global named path constraints configuration
+ grouping.";
+ uses te-types:common-path-constraints-attributes;
+ uses te-types:generic-path-disjointness;
+ uses te-types:path-constraints-route-objects;
+ container path-in-segment {
+ presence "The end-to-end tunnel starts in a previous domain;
+ this tunnel is a segment in the current domain.";
+ description
+ "If an end-to-end tunnel crosses multiple domains using
+ the same technology, some additional constraints have to be
+ taken in consideration in each domain.
+ This tunnel is a segment that needs to be coordinated
+ with previous segment stitched on head-end side.";
+ uses te-types:label-set-info;
+ }
+ container path-out-segment {
+ presence
+ "The end-to-end tunnel is not terminated in this domain;
+ this tunnel is a segment in the current domain.";
+ description
+ "If an end-to-end tunnel crosses multiple domains using
+ the same technology, some additional constraints have to be
+ taken in consideration in each domain.
+ This tunnel is a segment that needs to be coordinated
+ with previous segment stitched on head-end side.";
+ uses te-types:label-set-info;
+ }
+ }
+
+ grouping named-path-constraints {
+ description
+ "Global named path constraints configuration
+ grouping.";
+ container named-path-constraints {
+ description
+ "TE named path constraints container.";
+ list named-path-constraint {
+ if-feature "te-types:named-path-constraints";
+ key "name";
+ leaf name {
+ type string;
+ description
+ "A string name that uniquely identifies a
+ path constraint set.";
+ }
+ uses path-constraints-common;
+ description
+ "A list of named path constraints.";
+ }
+ }
+ }
+
+ /* TE globals container data */
+
+ grouping globals-grouping {
+ description
+ "Globals TE system-wide configuration data grouping.";
+ container globals {
+ description
+ "Globals TE system-wide configuration data container.";
+ uses named-admin-groups;
+ uses named-srlgs;
+ uses named-path-constraints;
+ }
+ }
+
+ /* TE tunnels container data */
+
+ grouping tunnels-grouping {
+ description
+ "Tunnels TE configuration data grouping.";
+ container tunnels {
+ description
+ "Tunnels TE configuration data container.";
+ list tunnel {
+ key "name";
+ description
+ "The list of TE tunnels.";
+ uses tunnel-properties;
+ uses tunnel-actions;
+ uses tunnel-protection-actions;
+ }
+ }
+ }
+
+ /* TE LSPs ephemeral state container data */
+
+ grouping lsp-properties-state {
+ description
+ "LSPs state operational data grouping.";
+ leaf source {
+ type te-types:te-node-id;
+ description
+ "Tunnel sender address extracted from
+ SENDER_TEMPLATE object.";
+ reference
+ "RFC3209";
+ }
+ leaf destination {
+ type te-types:te-node-id;
+ description
+ "The tunnel endpoint address extracted from SESSION object.";
+ reference
+ "RFC3209";
+ }
+ leaf tunnel-id {
+ type uint16;
+ description
+ "The tunnel identifier used in the SESSION that remains constant
+ over the life of the tunnel.";
+ reference
+ "RFC3209";
+ }
+ leaf extended-tunnel-id {
+ type yang:dotted-quad;
+ description
+ "The LSP Extended Tunnel ID.";
+ reference
+ "RFC3209";
+ }
+ leaf operational-state {
+ type identityref {
+ base te-types:lsp-state-type;
+ }
+ description
+ "The LSP operational state.";
+ }
+ leaf signaling-type {
+ type identityref {
+ base te-types:path-signaling-type;
+ }
+ description
+ "The signaling protocol used to set up this LSP.";
+ }
+ leaf origin-type {
+ type enumeration {
+ enum ingress {
+ description
+ "Origin ingress.";
+ }
+ enum egress {
+ description
+ "Origin egress.";
+ }
+ enum transit {
+ description
+ "Origin transit.";
+ }
+ }
+ default "ingress";
+ description
+ "The origin of the LSP relative to the location of the local
+ switch in the path.";
+ }
+ leaf lsp-resource-status {
+ type enumeration {
+ enum primary {
+ description
+ "A primary LSP is a fully established LSP for which the
+ resource allocation has been committed at the data
+ plane.";
+ }
+ enum secondary {
+ description
+ "A secondary LSP is an LSP that has been provisioned
+ in the control plane only; e.g. resource allocation
+ has not been committed at the data plane.";
+ }
+ }
+ default "primary";
+ description
+ "LSP resource allocation state.";
+ reference
+ "RFC4872, section 4.2.1";
+ }
+ uses protection-restoration-properties-state;
+ }
+
+ /*** End of TE global groupings ***/
+ /**
+ * TE container
+ */
+
+ container te {
+ presence "Enable TE feature.";
+ description
+ "TE global container.";
+ /* TE Global Data */
+ uses globals-grouping;
+
+ /* TE Tunnel Data */
+ uses tunnels-grouping;
+
+ /* TE LSPs Data */
+ uses lsps-grouping;
+ }
+
+ /* TE Tunnel RPCs/execution Data */
+
+ rpc tunnels-path-compute {
+ description
+ "TE tunnels RPC nodes.";
+ input {
+ container path-compute-info {
+ /* An external path compute module may augment this target. */
+ description
+ "RPC input information.";
+ }
+ }
+ output {
+ container path-compute-result {
+ /* An external path compute module may augment this target. */
+ description
+ "RPC output information.";
+ }
+ }
+ }
+
+ rpc tunnels-actions {
+ description
+ "TE tunnels actions RPC";
+ input {
+ container tunnel-info {
+ description
+ "TE tunnel information.";
+ choice filter-type {
+ mandatory true;
+ description
+ "Filter choice.";
+ case all-tunnels {
+ leaf all {
+ type empty;
+ mandatory true;
+ description
+ "Apply action on all TE tunnels.";
+ }
+ }
+ case one-tunnel {
+ leaf tunnel {
+ type tunnel-ref;
+ description
+ "Apply action on the specific TE tunnel.";
+ }
+ }
+ }
+ }
+ container action-info {
+ description
+ "TE tunnel action information.";
+ leaf action {
+ type identityref {
+ base tunnel-actions-type;
+ }
+ description
+ "The action type.";
+ }
+ leaf disruptive {
+ when "derived-from-or-self(../action, "
+ + "'te:tunnel-action-reoptimize')";
+ type empty;
+ description
+ "Specifies whether or not the reoptimization action
+ is allowed to be disruptive.";
+ }
+ }
+ }
+ output {
+ leaf action-result {
+ type identityref {
+ base te-types:te-action-result;
+ }
+ description
+ "The result of the tunnel action operation.";
+ }
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-service@2021-01-11.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-service@2021-01-11.yang
new file mode 100644
index 0000000..f3a02a4
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-service@2021-01-11.yang
@@ -0,0 +1,244 @@
+module ietf-trans-client-service {
+ /* TODO: FIXME */
+ yang-version 1.1;
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-service";
+ prefix "clntsvc";
+
+ import ietf-te-types {
+ prefix "te-types";
+ //reference "RFC 8776 - Traffic Engineering Common YANG Types";
+ }
+
+ import ietf-layer1-types {
+ prefix "layer1-types";
+ //reference "RFC ZZZZ - A YANG Data Model for Layer 1 Types";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ //reference "RFC 6991 - Common YANG Data Types";
+ }
+
+ import ietf-trans-client-svc-types {
+ prefix "clntsvc-types";
+ //reference "RFC XXXX - A YANG Data Model for
+ // Transport Network Client Signals";
+ }
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Aihua Guo (aihuaguo.ietf@gmail.com);
+ Italo Busi (italo.busi@huawei.com);
+ Anton Snitser (antons@sedonasys.com);
+ Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+ Yunbin Xu (xuyunbin@caict.ac.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (Xufeng_Liu@jabil.com);
+ Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+ ";
+
+ description
+ "This module defines a YANG data model for describing
+ transport network client services. The model fully conforms
+ to the Network Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+ revision 2021-01-11 {
+ description
+ "version -04 as a WG document";
+ reference
+ "draft-ietf-ccamp-client-signal-yang";
+ }
+
+ /*
+ * Groupings
+ */
+ grouping client-svc-access-parameters {
+ description
+ "Transport network client signals access parameters";
+
+ leaf access-node-id {
+ type te-types:te-node-id;
+ description
+ "The identifier of the access node in the underlying
+ transport network topology.";
+ }
+
+ leaf access-ltp-id {
+ type te-types:te-tp-id;
+ description
+ "The TE link termination point identifier, used together with
+ access-node-id to identify the access LTP.";
+ }
+
+ leaf client-signal {
+ type identityref {
+ base layer1-types:client-signal;
+ }
+ description
+ "Identify the client signal type associated with this port";
+ }
+
+ }
+
+ grouping client-svc-tunnel-parameters {
+ description
+ "Transport network client signals tunnel parameters";
+
+ leaf tunnel-name {
+ type string;
+ description
+ "TE tunnel instance name.";
+ }
+ }
+
+ grouping client-svc-instance-config {
+ description
+ "Configuration parameters for client services.";
+ leaf client-svc-name {
+ type string;
+ description
+ "Identifier of the p2p transport network client signals.";
+ }
+
+ leaf client-svc-title {
+ type string;
+ description
+ "Name of the p2p transport network client signals.";
+ }
+
+ leaf client-svc-descr {
+ type string;
+ description
+ "Description of the transport network client signals.";
+ }
+
+ leaf client-svc-customer {
+ type string;
+ description
+ "Customer of the transport network client signals.";
+ }
+
+ container resilience {
+ description "Place holder for resilience functionalities";
+ }
+
+ uses te-types:te-topology-identifier;
+
+ leaf admin-status {
+ type identityref {
+ base te-types:tunnel-admin-state-type;
+ }
+ default te-types:tunnel-admin-state-up;
+ description "Client signals administrative state.";
+ }
+
+ container src-access-ports {
+ description
+ "Source access port of a client signal.";
+ uses client-svc-access-parameters;
+ }
+ container dst-access-ports {
+ description
+ "Destination access port of a client signal.";
+ uses client-svc-access-parameters;
+ }
+
+ leaf direction {
+ type identityref {
+ base clntsvc-types:direction;
+ }
+ description "Uni-dir or Bi-dir for the client signal.";
+ }
+
+ list svc-tunnels {
+ key tunnel-name;
+ description
+ "List of the TE Tunnels supporting the client signal.";
+ uses client-svc-tunnel-parameters;
+ }
+ }
+
+ grouping client-svc-instance-state {
+ description
+ "State parameters for client services.";
+ leaf operational-state {
+ type identityref {
+ base te-types:tunnel-state-type;
+ }
+ config false;
+ description "Client signal operational state.";
+ }
+ leaf provisioning-state {
+ type identityref {
+ base te-types:lsp-state-type;
+ }
+ config false;
+ description "Client signal provisioning state.";
+ }
+ leaf creation-time {
+ type yang:date-and-time;
+ config false;
+ description "The time of the client signal be created.";
+ }
+ leaf last-updated-time {
+ type yang:date-and-time;
+ config false;
+ description "The time of the client signal's latest update.";
+ }
+ leaf created-by {
+ type string;
+ config false;
+ description
+ "The client signal is created by whom,
+ can be a system or staff ID.";
+ }
+ leaf last-updated-by {
+ type string;
+ config false;
+ description
+ "The client signal is last updated by whom,
+ can be a system or staff ID.";
+ }
+ leaf owned-by {
+ type string;
+ config false;
+ description
+ "The client signal is owned by whom,
+ can be a system ID.";
+ }
+ }
+
+ /*
+ * Data nodes
+ */
+
+ container client-svc {
+ description
+ "Transport client services.";
+
+ list client-svc-instances {
+ key client-svc-name;
+ description
+ "The list of p2p transport client service instances";
+
+ uses client-svc-instance-config;
+ uses client-svc-instance-state;
+ }
+ }
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-svc-types@2019-11-03.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-svc-types@2019-11-03.yang
new file mode 100644
index 0000000..46baa8b
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-trans-client-svc-types@2019-11-03.yang
@@ -0,0 +1,62 @@
+module ietf-trans-client-svc-types {
+ namespace "urn:ietf:params:xml:ns:yang:ietf-trans-client-svc-types";
+ prefix "clntsvc-types";
+
+ organization
+ "Internet Engineering Task Force (IETF) CCAMP WG";
+ contact
+ "
+ ID-draft editor:
+ Haomian Zheng (zhenghaomian@huawei.com);
+ Aihua Guo (aihuaguo.ietf@gmail.com);
+ Italo Busi (italo.busi@huawei.com);
+ Anton Snitser (antons@sedonasys.com);
+ Francesco Lazzeri (francesco.lazzeri@ericsson.com);
+ Yunbin Xu (xuyunbin@caict.ac.cn);
+ Yang Zhao (zhaoyangyjy@chinamobile.com);
+ Xufeng Liu (Xufeng_Liu@jabil.com);
+ Giuseppe Fioccola (giuseppe.fioccola@huawei.com);
+ ";
+
+ description
+ "This module defines a YANG data model for describing
+ transport network client types. The model fully conforms
+ to the Network Management Datastore Architecture (NMDA).
+
+ Copyright (c) 2019 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
+ (https://trustee.ietf.org/license-info).
+ This version of this YANG module is part of RFC XXXX; see
+ the RFC itself for full legal notices.";
+
+ revision 2019-11-03 {
+ description
+ "version -01 as a WG document";
+ reference
+ "draft-ietf-ccamp-client-signal-yang";
+ }
+
+ identity direction {
+ description
+ "Direction information of Client Signal.";
+ }
+
+ identity bidirectional {
+ base direction;
+ description
+ "Client Signal is bi-directional.";
+ }
+
+ identity unidirectional {
+ base direction;
+ description
+ "Client Signal is uni-directional.";
+ }
+
+}
diff --git a/actn-interface-tools/actn-model/src/main/yang/ietf-yang-types@2021-04-14.yang b/actn-interface-tools/actn-model/src/main/yang/ietf-yang-types@2021-04-14.yang
new file mode 100644
index 0000000..a23d1e2
--- /dev/null
+++ b/actn-interface-tools/actn-model/src/main/yang/ietf-yang-types@2021-04-14.yang
@@ -0,0 +1,756 @@
+module ietf-yang-types {
+
+ namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
+ prefix "yang";
+
+ organization
+ "IETF Network Modeling (NETMOD) Working Group";
+
+ contact
+ "WG Web: <https://datatracker.ietf.org/wg/netmod/>
+ WG List: <mailto:netmod@ietf.org>
+
+ Editor: Juergen Schoenwaelder
+ <mailto:j.schoenwaelder@jacobs-university.de>";
+
+ description
+ "This module contains a collection of generally useful derived
+ YANG data types.
+
+ The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
+ NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
+ 'MAY', and 'OPTIONAL' in this document are to be interpreted as
+ described in BCP 14 (RFC 2119) (RFC 8174) when, and only when,
+ they appear in all capitals, as shown here.
+
+ Copyright (c) 2021 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
+ (https://trustee.ietf.org/license-info).
+
+ This version of this YANG module is part of RFC XXXX;
+ see the RFC itself for full legal notices.";
+
+ revision 2021-04-14 {
+ description
+ "This revision adds the following new data types:
+ - date, time
+ - hours32, minutes32, seconds32, centiseconds32, milliseconds32,
+ - microseconds32, microseconds64, nanoseconds32, nanoseconds64
+ - revision-identifier
+ - percent, percent-i32, percent-u32";
+ reference
+ "RFC XXXX: Common YANG Data Types";
+ }
+
+ 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 instantiation 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 instance 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
+ instance 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 instantiation 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 instance 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
+ instance 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)";
+ }
+
+ /*** collection of types related to date and time ***/
+
+ typedef date-and-time {
+ type string {
+ pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'
+ + 'T(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.\d+)?'
+ + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?';
+ }
+ 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 time-offset -00:00 indicates that the date-and-time
+ value is reported in UTC and that the local time zone
+ reference point is unknown. The time-offsets +00:00 and Z
+ both indicate that the date-and-time value is reported in
+ UTC and that the local time reference point is UTC (see RFC
+ 3339 section 4.3).
+
+ (c) The canonical format (see below) of date-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, i.e., date-and-time values must be reported in UTC.";
+ 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 date {
+ type string {
+ pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])'
+ + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?';
+ }
+ description
+ "The date type represents a time-interval of the length
+ of a day, i.e., 24 hours.
+
+ The date type is compatible with the date XML schema
+ type with the following notable exceptions:
+
+ (a) The date type does not allow negative years.
+
+ (b) The time-offset -00:00 indicates that the date value is
+ reported in UTC and that the local time zone reference point
+ is unknown. The time-offsets +00:00 and Z both indicate that
+ the date value is reported in UTC and that the local time
+ reference point is UTC (see RFC 3339 section 4.3).
+
+ (c) The canonical format (see below) of data values
+ differs from the canonical format used by the date XML
+ schema type, which requires all times to be in UTC using
+ the time-offset 'Z'.
+
+ The canonical format for date 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 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 values with an unknown time zone (usually referring
+ to the notion of local time) uses the time-offset -00:00,
+ i.e., date values must be reported in UTC.";
+ reference
+ "RFC 3339: Date and Time on the Internet: Timestamps
+ XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+ }
+
+ /*
+ * DISCUSS:
+ * - XML schema seems to use a different canonical format, we
+ * need to take a closer look how to define the canonical format
+ * given that a date really identifies a 24 hour interval and
+ * what XSD means with 'interval midpoint'.
+ */
+
+ typedef time {
+ type string {
+ pattern '(0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9](\.\d+)?'
+ + '(Z|[\+\-]((1[0-3]|0[0-9]):([0-5][0-9])|14:00))?';
+ }
+ description
+ "The time type represents an instance of time of zero-duration
+ that recurs every day.
+
+ The time type is compatible with the time XML schema
+ type with the following notable exceptions:
+
+ (a) The time-offset -00:00 indicates that the time value is
+ reported in UTC and that the local time zone reference point
+ is unknown. The time-offsets +00:00 and Z both indicate that
+ the time value is reported in UTC and that the local time
+ reference point is UTC (see RFC 3339 section 4.3).
+
+ (c) The canonical format (see below) of time values
+ differs from the canonical format used by the time XML
+ schema type, which requires all times to be in UTC using
+ the time-offset 'Z'.
+
+ The canonical format for 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 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
+ time values with an unknown time zone (usually referring
+ to the notion of local time) uses the time-offset -00:00,
+ i.e., time values must be reported in UTC.";
+ reference
+ "RFC 3339: Date and Time on the Internet: Timestamps
+ XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
+ }
+
+ typedef hours32 {
+ type int32;
+ units "hours";
+ description
+ "A period of time, measured in units of hours.
+
+ The maximum time period that can be expressed is in the
+ range [89478485 days 08:00:00 to 89478485 days 07:00:00].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef minutes32 {
+ type int32;
+ units "minutes";
+ description
+ "A period of time, measured in units of minutes.
+
+ The maximum time period that can be expressed is in the
+ range [-1491308 days 2:08:00 to 1491308 days 2:07:00].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef seconds32 {
+ type int32;
+ units "seconds";
+ description
+ "A period of time, measured in units of seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-24855 days 03:14:08 to 24855 days 03:14:07].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef centiseconds32 {
+ type int32;
+ units "centiseconds";
+ description
+ "A period of time, measured in units of 10^-2 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-248 days 13:13:56 to 248 days 13:13:56].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef milliseconds32 {
+ type int32;
+ units "milliseconds";
+ description
+ "A period of time, measured in units of 10^-3 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-24 days 20:31:23 to 24 days 20:31:23].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef microseconds32 {
+ type int32;
+ units "microseconds";
+ description
+ "A period of time, measured in units of 10^-6 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-00:35:47 to 00:35:47].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef microseconds64 {
+ type int64;
+ units "microseconds";
+ description
+ "A period of time, measured in units of 10^-6 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-106751991 days 04:00:54 to 106751991 days 04:00:54].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef nanoseconds32 {
+ type int32;
+ units "nanoseconds";
+ description
+ "A period of time, measured in units of 10^-9 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-00:00:02 to 00:00:02].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ typedef nanoseconds64 {
+ type int64;
+ units "nanoseconds";
+ description
+ "A period of time, measured in units of 10^-9 seconds.
+
+ The maximum time period that can be expressed is in the
+ range [-106753 days 23:12:44 to 106752 days 0:47:16].
+
+ This type should be range restricted in situations
+ where only non-negative time periods are desirable,
+ (i.e., range '0..max').";
+ }
+
+ 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 instance 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 schema node instance 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 schema node
+ instance 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.";
+ }
+
+ /*** collection of YANG specific types ***/
+
+ 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)";
+ }
+
+ typedef revision-identifier {
+ type date {
+ pattern '\d{4}-(1[0-2]|0[1-9])-(0[1-9]|[1|2][0-9]|3[0-1])';
+ }
+ description
+ "Represents a specific revision of a YANG module by means of
+ a date value without a time zone.";
+ }
+
+ typedef percent-i32 {
+ type int32;
+ units "percent";
+ description
+ "This type represents a 32-bit signed percentage value.
+ Depending on the usage scenario, it may make sense to
+ add range constraints. For example, the type definition
+
+ percent-i32 { range '-100..100'; }
+
+ restricts the range to -100 to 100.";
+ }
+
+ typedef percent-u32 {
+ type uint32;
+ units "percent";
+ description
+ "This type represents a 32-bit unsigned percentage value.
+ Depending on the usage scenario, it may make sense to
+ add range constraints. For example, the type definition
+ percent-u32 { range '0..200'; }
+
+ restricts the range to 0 to 200.";
+ }
+
+ typedef percent {
+ type uint8;
+ units "percent";
+ description
+ "This type represents an 8-bit unsigned percentage value
+ and it is equivalent to the percentage type defined in
+ the ietf-routing-types module (RFC 8294). While the
+ type definition
+
+ percent-u32 { range '0..100' }
+
+ yields the same value space, it is possible that encodings
+ choose different encodings due to the different base types.";
+ reference
+ "RFC 8294: Common YANG Data Types for the Routing Area";
+ }
+
+}
diff --git a/actn-interface-tools/pom.xml b/actn-interface-tools/pom.xml
new file mode 100644
index 0000000..740faea
--- /dev/null
+++ b/actn-interface-tools/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ ============LICENSE_START=======================================================
+ ~ Actn Interface Tools
+ ~ ================================================================================
+ ~ Copyright (C) 2022 Huawei Canada Limited.
+ ~ ================================================================================
+ ~ 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.
+ ~ ============LICENSE_END=========================================================
+ -->
+
+<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>
+
+ <groupId>org.onap.integration.ietf-actn-tools</groupId>
+ <artifactId>actn-interface-tools</artifactId>
+ <packaging>pom</packaging>
+ <version>1.0-SNAPSHOT</version>
+ <modules>
+ <module>actn-model</module>
+ <module>actn-client</module>
+ </modules>
+ <properties>
+ <maven.compiler.source>11</maven.compiler.source>
+ <maven.compiler.target>11</maven.compiler.target>
+ </properties>
+
+</project> \ No newline at end of file