diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/ChangeNode.java b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/ChangeNode.java new file mode 100644 index 000000000..d963d7aa3 --- /dev/null +++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/ChangeNode.java @@ -0,0 +1,75 @@ +/* + * Project: driver-layer-aggregator + * + * File Created at 2019/9/11 + * + * Copyright 2016 CMCC Corporation Limited. + * All rights reserved. + * + * This software is the confidential and proprietary information of + * ZYHY Company. ("Confidential Information"). You shall not + * disclose such Confidential Information and shall use it only in + * accordance with the terms of the license. + */ + +package com.cmcc.cmhi.huawei.impl; + +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; + +/** + * @author MaXiaonan + * @Type ChangeNode.class + * @Desc + * @date 2019/9/11 17:40 + */ +public class ChangeNode extends ChangeType { + private Node node; + private TerminationPoint tp; + /** + * Getter method for property node. + * + * @return property value of node + */ + + public Node getNode() { + return node; + } + + /** + * Setter method for property node. + * + * @param node value to be assigned to property node + */ + public void setNode(Node node) { + this.node = node; + } + + /** + * Getter method for property tp. + * + * @return property value of tp + */ + + public TerminationPoint getTp() { + return tp; + } + + /** + * Setter method for property tp. + * + * @param tp value to be assigned to property tp + */ + public void setTp(TerminationPoint tp) { + this.tp = tp; + } +} + +/** + * Revision history + * ------------------------------------------------------------------------- + *
+ * Date Author Note
+ * -------------------------------------------------------------------------
+ * 2019/9/11 MaXiaonan creat
+ */
\ No newline at end of file
diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiDriverProvider.java b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiDriverProvider.java
index dd5c37807..6266dabae 100644
--- a/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiDriverProvider.java
+++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiDriverProvider.java
@@ -18,6 +18,7 @@ public class HuaweiDriverProvider {
private final DataBroker dataBroker;
private final MountPointService mountService;
+ private HuaweiNetconfConfig netconfConfig = null;
private HuaweiDriverRegister register = null;
private HuaweiNetconfSpeaker netconfSpeaker = null;
@@ -26,6 +27,7 @@ public class HuaweiDriverProvider {
this.mountService = mountService;
this.register = new HuaweiDriverRegister(this.dataBroker);
this.netconfSpeaker = new HuaweiNetconfSpeaker(this.dataBroker, this.mountService);
+ this.netconfConfig = new HuaweiNetconfConfig(this.dataBroker,this.mountService);
}
/**
diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiNetconfConfig.java b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiNetconfConfig.java
new file mode 100644
index 000000000..db1c35e12
--- /dev/null
+++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/java/com/cmcc/cmhi/huawei/impl/HuaweiNetconfConfig.java
@@ -0,0 +1,285 @@
+/*
+ * Project: driver-layer-aggregator
+ *
+ * File Created at 2019/9/9
+ *
+ * Copyright 2016 CMCC Corporation Limited.
+ * All rights reserved.
+ *
+ * This software is the confidential and proprietary information of
+ * ZYHY Company. ("Confidential Information"). You shall not
+ * disclose such Confidential Information and shall use it only in
+ * accordance with the terms of the license.
+ */
+
+package com.cmcc.cmhi.huawei.impl;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.util.concurrent.*;
+import org.opendaylight.controller.md.sal.binding.api.*;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.OptimisticLockFailedException;
+import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.L2tpv3;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.GlobalAttribute;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.GlobalAttributeBuilder;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.L2tpv3PWInstances;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.L2tpv3PWInstancesBuilder;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.l2tpv3pwinstances.L2tpv3PWInstance;
+import org.opendaylight.yang.gen.v1.http.www.huawei.com.netconf.vrp.huawei.l2tpv3.rev181123.l2tpv3.l2tpv3pwinstances.L2tpv3PWInstanceBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
+import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
+import org.opendaylight.yangtools.concepts.ListenerRegistration;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.annotation.Nonnull;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.Executors;
+
+import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.DELETE;
+import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.WRITE;
+
+/**
+ * @author MaXiaonan
+ * @Type HuaweiNetconfConfig.class
+ * @Desc
+ * @date 2019/9/9 17:34
+ */
+public class HuaweiNetconfConfig implements DataTreeChangeListener
+ * Date Author Note
+ * -------------------------------------------------------------------------
+ * 2019/9/9 MaXiaonan creat
+ */
\ No newline at end of file
diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-action@2018-11-23.yang b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-action@2018-11-23.yang
new file mode 100644
index 000000000..eed1a28b5
--- /dev/null
+++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-action@2018-11-23.yang
@@ -0,0 +1,68 @@
+/*
+Copyright (C) 2013-2018 Huawei Technologies Co., Ltd. All rights reserved.
+*/
+submodule huawei-l2tpv3-action {
+ belongs-to huawei-l2tpv3 {
+ prefix l2tpv3;
+ }
+ import huawei-extension {
+ prefix ext;
+ }
+ include huawei-l2tpv3-type;
+
+ organization
+ "Huawei Technologies Co., Ltd.";
+ contact
+ "Huawei Industrial Base
+ Bantian, Longgang
+ Shenzhen 518129
+ People's Republic of China
+ Website: http://www.huawei.com
+ Email: support@huawei.com";
+ description
+ "Description FOR submodule";
+ revision 2018-11-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2018-06-11 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-12-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-03-23 {
+ description
+ "Functions supported by the schema are added to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2013-01-01 {
+ description
+ "Init revision";
+ reference
+ "Huawei private.";
+ }
+ rpc resetStats {
+ description
+ "Reset the statistic result.";
+ ext:node-ref "/l2tpv3/l2tpv3PWInstances/l2tpv3PWInstance";
+ input {
+ leaf pwName {
+ type string {
+ length "1..19";
+ }
+ description
+ "Name of a Tunnel.";
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-type@2018-11-23.yang b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-type@2018-11-23.yang
new file mode 100644
index 000000000..f33fe27e4
--- /dev/null
+++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3-type@2018-11-23.yang
@@ -0,0 +1,154 @@
+/*
+Copyright (C) 2013-2018 Huawei Technologies Co., Ltd. All rights reserved.
+*/
+submodule huawei-l2tpv3-type {
+ belongs-to huawei-l2tpv3 {
+ prefix l2tpv3;
+ }
+
+ organization
+ "Huawei Technologies Co., Ltd.";
+ contact
+ "Huawei Industrial Base
+ Bantian, Longgang
+ Shenzhen 518129
+ People's Republic of China
+ Website: http://www.huawei.com
+ Email: support@huawei.com";
+ description
+ "Description FOR submodule";
+ revision 2018-11-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2018-06-11 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-12-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-03-23 {
+ description
+ "Functions supported by the schema are added to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2013-01-01 {
+ description
+ "Init revision";
+ reference
+ "Huawei private.";
+ }
+ typedef cookieAuthMode {
+ type enumeration {
+ enum "authNone" {
+ description
+ "Current auth mode is none";
+ }
+ enum "authPlain" {
+ description
+ "Current auth mode is plain";
+ }
+ enum "authCipher" {
+ description
+ "Current auth mode is cipher";
+ }
+ }
+ description
+ "Cookie Auth Mode";
+ }
+ typedef l2tpv3PwRoleType {
+ type enumeration {
+ enum "primary" {
+ description
+ "Primary Tunnel";
+ }
+ enum "injected" {
+ description
+ "Injected Tunnel";
+ }
+ }
+ description
+ "PW Role Type";
+ }
+ typedef l2tpv3InstanceType {
+ type enumeration {
+ enum "normal" {
+ description
+ "Normal Mode";
+ }
+ enum "localConnect" {
+ description
+ "Local Connect mode";
+ }
+ }
+ description
+ "Instance Type";
+ }
+ typedef l2tpv3DiffservMode {
+ type enumeration {
+ enum "pipe" {
+ description
+ "";
+ }
+ enum "uniform" {
+ description
+ "";
+ }
+ }
+ description
+ "Diff Service Mode";
+ }
+ typedef l2tpv3State {
+ type enumeration {
+ enum "down" {
+ description
+ "down";
+ }
+ enum "up" {
+ description
+ "up";
+ }
+ }
+ description
+ "L2TPv3 State";
+ }
+ typedef cookieLength {
+ type enumeration {
+ enum "4" {
+ description
+ "4 Bytes";
+ }
+ enum "8" {
+ description
+ "8 Bytes";
+ }
+ }
+ description
+ "Cookie Length";
+ }
+ typedef L2tpv3ipv6Address {
+ type string {
+ length "0..255";
+ pattern '\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*';
+ }
+ description
+ "An IPV6 address in standard notation";
+ }
+ typedef L2tpv3OnlyIpv6 {
+ type string {
+ length "0..255";
+ pattern '(([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}))|(:((:[0-9A-Fa-f]{1,4}){1,6}|:))|([0-9A-Fa-f]{1,4}:((:[0-9A-Fa-f]{1,4}){1,5}|:))|(([0-9A-Fa-f]{1,4}:){2}((:[0-9A-Fa-f]{1,4}){1,4}|:))|(([0-9A-Fa-f]{1,4}:){3}((:[0-9A-Fa-f]{1,4}){1,3}|:))|(([0-9A-Fa-f]{1,4}:){4}((:[0-9A-Fa-f]{1,4}){1,2}|:))|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4})?)|(([0-9A-Fa-f]{1,4}:){6}:)';
+ }
+ description
+ "An IPV6 address in standard notation without IPV4 address";
+ }
+}
\ No newline at end of file
diff --git a/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3@2018-11-23.yang b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3@2018-11-23.yang
new file mode 100644
index 000000000..02ed2d13d
--- /dev/null
+++ b/ControlPlatform/driver-layer/drivers/huawei/src/main/yang/huawei-l2tpv3@2018-11-23.yang
@@ -0,0 +1,352 @@
+/*
+Copyright (C) 2013-2018 Huawei Technologies Co., Ltd. All rights reserved.
+*/
+module huawei-l2tpv3 {
+ namespace "http://www.huawei.com/netconf/vrp/huawei-l2tpv3";
+ prefix l2tpv3;
+ import huawei-ifm {
+ prefix ifm;
+ }
+ import huawei-pub-type {
+ prefix pub-type;
+ }
+ import ietf-inet-types {
+ prefix inet;
+ }
+ import huawei-extension {
+ prefix ext;
+ }
+ include huawei-l2tpv3-action;
+ include huawei-l2tpv3-type;
+
+ organization
+ "Huawei Technologies Co., Ltd.";
+ contact
+ "Huawei Industrial Base
+ Bantian, Longgang
+ Shenzhen 518129
+ People's Republic of China
+ Website: http://www.huawei.com
+ Email: support@huawei.com";
+ description
+ "L2TPV3";
+ revision 2018-11-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2018-06-11 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-12-23 {
+ description
+ "The modifications in the schema file are synchronized to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2017-03-23 {
+ description
+ "Functions supported by the schema are added to the YANG file.";
+ reference
+ "Huawei private.";
+ }
+ revision 2013-01-01 {
+ description
+ "Init revision";
+ reference
+ "Huawei private.";
+ }
+ container l2tpv3 {
+ description
+ "L2TPV3";
+ container globalAttribute {
+ description
+ "The global attribute of L2TPV3.";
+ ext:entry-from "system";
+ leaf globalEnable {
+ type boolean;
+ default "false";
+ description
+ "To enable L2TPV3. By default, L2TPV3 is disabled.";
+ }
+ }
+ container l2tpv3PWInstances {
+ description
+ "All L2TPV3 Tunnels. ";
+ list l2tpv3PWInstance {
+ when "../../globalAttribute/globalEnable='true'";
+ key "pwName";
+ description
+ "All L2TPV3 Tunnels. ";
+ leaf pwName {
+ type string {
+ length "1..19";
+ }
+ description
+ "Name of a Tunnel.";
+ }
+ leaf sourceIfName {
+ type leafref {
+ path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:ifName";
+ }
+ description
+ "Config The Source Interface Name Of Tunnel ";
+ ext:allowDelete "true";
+ }
+ leaf sourceIP {
+ when "../sourceIfName";
+ type inet:ip-address-no-zone;
+ description
+ "Source IP Address Of Tunnel,must be the same with the ip of loopback interface. ";
+ }
+ leaf destIP {
+ type inet:ip-address-no-zone;
+ description
+ "Config The Destination IP Address of Tunnel";
+ ext:allowDelete "true";
+ }
+ leaf localSessionId {
+ type uint32 {
+ range "1..4294967295";
+ }
+ default "4294967295";
+ description
+ "Config The Local Session ID";
+ ext:allowDelete "true";
+ }
+ leaf remoteSessionId {
+ type uint32 {
+ range "1..4294967295";
+ }
+ default "4294967295";
+ description
+ "Config The Remote Session ID";
+ ext:allowDelete "true";
+ }
+ leaf localCookieAutoMode {
+ type cookieAuthMode;
+ must "(../localCookieAutoMode='authNone' and not(../localSecondaryCookieAutoMode='authCipher' or ../localSecondaryCookieAutoMode='authPlain')) or not(../localCookieAutoMode='authNone')";
+ default "authNone";
+ description
+ "Config the mode of the authentication of the local cookie field";
+ ext:allowDelete "true";
+ }
+ leaf localSecondaryCookieAutoMode {
+ type cookieAuthMode;
+ must "((../localSecondaryCookieAutoMode='authCipher' or ../localSecondaryCookieAutoMode='authPlain') and not(../localCookieAutoMode='authNone')) or not(../localSecondaryCookieAutoMode='authCipher' or ../localSecondaryCookieAutoMode='authPlain')";
+ default "authNone";
+ description
+ "Config the mode of the authentication of the local secondary cookie field";
+ ext:allowDelete "true";
+ }
+ leaf remoteCookieAutoMode {
+ type cookieAuthMode;
+ default "authNone";
+ description
+ "Config the mode of the authentication of the remote cookie field";
+ ext:allowDelete "true";
+ }
+ leaf localCookieLength {
+ when "../localCookieAutoMode='authPlain'";
+ type cookieLength;
+ mandatory true;
+ description
+ "Config the length of the local cookie field";
+ }
+ leaf localSecondaryCookieLength {
+ when "../localSecondaryCookieAutoMode='authPlain'";
+ type cookieLength;
+ mandatory true;
+ description
+ "Config the length of the local secondary cookie field";
+ }
+ leaf remoteCookieLength {
+ when "../remoteCookieAutoMode='authPlain'";
+ type cookieLength;
+ mandatory true;
+ description
+ "Config the length of the remote cookie field";
+ }
+ leaf localHighCookie {
+ when "../localCookieLength='8'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the upper 4 bytes of the local cookie field";
+ }
+ leaf localSecondaryHighCookie {
+ when "../localSecondaryCookieLength='8'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the upper 4 bytes of the local secondary cookie field";
+ }
+ leaf localLowCookie {
+ when "../localCookieAutoMode='authPlain'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the lower 4 bytes of the local cookie field";
+
+ }
+ leaf localSecondaryLowCookie {
+ when "../localSecondaryCookieAutoMode='authPlain'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the lower 4 bytes of the local secondary cookie field";
+ }
+ leaf remoteHighCookie {
+ when "../remoteCookieLength='8'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the upper 4 bytes of the remote cookie field";
+ }
+ leaf remoteLowCookie {
+ when "../remoteCookieAutoMode='authPlain'";
+ type pub-type:hexBinary;
+ mandatory true;
+ description
+ "Config the value of the lower 4 bytes of the remote cookie field";
+ }
+ leaf localCookieCipher {
+ when "../localCookieAutoMode='authCipher'";
+ type pub-type:password {
+ length "1..108";
+ }
+ mandatory true;
+ description
+ "Config the value of the local cookie field";
+ }
+ leaf localSecondaryCookieCipher {
+ when "../localSecondaryCookieAutoMode='authCipher'";
+ type pub-type:password {
+ length "1..108";
+ }
+ mandatory true;
+ description
+ "Config the value of the local secondary cookie field";
+ }
+ leaf remoteCookieCipher {
+ when "../remoteCookieAutoMode='authCipher'";
+ type pub-type:password {
+ length "1..108";
+ }
+ description
+ "Config the value of the remote cookie field";
+ }
+ leaf sendPacket {
+ type uint64;
+ config false;
+ description
+ "Send Packets";
+ }
+ leaf sendByte {
+ type uint64;
+ config false;
+ description
+ "Send Bytes";
+ }
+ leaf rcvPacket {
+ type uint64;
+ config false;
+ description
+ "Receive Packets";
+ }
+ leaf receiveByte {
+ type uint64;
+ config false;
+ description
+ "Receive Bytes";
+ }
+ leaf recvDropPacket {
+ type uint64;
+ config false;
+ description
+ "Total Number Of dropped packets";
+ }
+ leaf cookieMisDropPacket {
+ type uint64;
+ config false;
+ description
+ "Receive Cookie Mismatch Packets Number";
+ }
+ leaf state {
+ type l2tpv3State;
+ config false;
+ description
+ "Tunnel State";
+ }
+ }
+ }
+ container l2tpv3Instances {
+ description
+ "All L2TPV3 instances. ";
+ list l2tpv3Instance {
+ when "/l2tpv3/globalAttribute/globalEnable='true'";
+ key "instanceName instanceType";
+ description
+ "All L2TPV3 instances. ";
+ leaf instanceName {
+ type string {
+ length "1..31";
+ }
+ description
+ "A L2TPV3 instance.";
+ }
+ leaf instanceType {
+ type l2tpv3InstanceType;
+ description
+ "Type of a L2TPV3 instance. ";
+ }
+ leaf ifName {
+ type leafref {
+ path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:ifName";
+ }
+ mandatory true;
+ description
+ "Name of a sub-interface.";
+ }
+ leaf outIfName {
+ when "not(../instanceType='normal')";
+ type leafref {
+ path "/ifm:ifm/ifm:interfaces/ifm:interface/ifm:ifName";
+ }
+ description
+ "Name of a sub-interface.";
+ ext:allowDelete "true";
+ }
+ container l2tpv3PWs {
+ must "not(../instanceType='normal') or (../instanceType='normal' and count(l2tpv3PW)<=2) and ((../instanceType='normal' and count(l2tpv3PW)>=0))";
+ description
+ "L2TPV3 Tunnel information.";
+ list l2tpv3PW {
+ when "not(../../instanceType='localConnect')";
+ key "pwName";
+ max-elements 2;
+ description
+ "L2TPV3 Tunnel information.";
+ leaf pwName {
+ type leafref {
+ path "../../../../../l2tpv3PWInstances/l2tpv3PWInstance/pwName";
+ }
+ description
+ "Name of a Tunnel.";
+ }
+ leaf pwRole {
+ type l2tpv3PwRoleType;
+ default "primary";
+ description
+ "Whether the tunnel is a primary or injected tunnel.";
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file