Overview and User Guide for TR-069Adapter
[oam/tr069-adapter.git] / netconf-server / schemas / tr-181-2-12-0-cwmp-full.yang
diff --git a/netconf-server/schemas/tr-181-2-12-0-cwmp-full.yang b/netconf-server/schemas/tr-181-2-12-0-cwmp-full.yang
new file mode 100644 (file)
index 0000000..f692039
--- /dev/null
@@ -0,0 +1,43737 @@
+module tr-181-2-12-0-cwmp-full {
+  namespace "urn:onf:otcc:wireless:yang:radio-access-186";
+  prefix ran;
+
+  organization
+    "CommScope Inc";
+  contact
+    "Radio access OneCell <5g@commscope.com>
+
+     CommScope Inc
+     1100 10th Ave Ct SE,
+     Hickory,
+     NC 28602,
+     USA";
+  description
+    "This module contains a collection of YANG definitions for managing tr069 radio access network (RAN) devices.
+
+     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.";
+
+  revision 2020-06-23 {
+    description
+      "Initial version, used only for ONAP PoC 2018-06-25";
+    reference
+      "ONF TR ???: A YANG Data Model for Radio Access Networks.
+       BBF TR-181-2-12-0 full";
+  }
+
+  grouping device-g {
+    description
+      "Grouping object for Device.";
+    leaf root-data-model-version {
+      type string;
+      config false;
+      description
+        "Device.RootDataModelVersion";
+      reference
+        "Device.RootDataModelVersion";
+    }
+    leaf interface-stack-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.InterfaceStackNumberOfEntries";
+      reference
+        "Device.InterfaceStackNumberOfEntries";
+    }
+  }
+
+  grouping device-atm-g {
+    description
+      "Grouping object for Device.ATM.";
+    leaf link-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.LinkNumberOfEntries";
+      reference
+        "Device.ATM.LinkNumberOfEntries";
+    }
+  }
+
+  grouping diagnostics-f5-loopback-g {
+    description
+      "Grouping object for Device.ATM.Diagnostics.F5Loopback.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+      }
+      description
+        "Device.ATM.Diagnostics.F5Loopback.DiagnosticsState";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ATM.Diagnostics.F5Loopback.Interface";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.Interface";
+    }
+    leaf number-of-repetitions {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.ATM.Diagnostics.F5Loopback.NumberOfRepetitions";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.NumberOfRepetitions";
+    }
+    leaf timeout {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.ATM.Diagnostics.F5Loopback.Timeout";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.Timeout";
+    }
+    leaf success-count {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Diagnostics.F5Loopback.SuccessCount";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.SuccessCount";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Diagnostics.F5Loopback.FailureCount";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.FailureCount";
+    }
+    leaf average-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Diagnostics.F5Loopback.AverageResponseTime";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.AverageResponseTime";
+    }
+    leaf minimum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Diagnostics.F5Loopback.MinimumResponseTime";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.MinimumResponseTime";
+    }
+    leaf maximum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Diagnostics.F5Loopback.MaximumResponseTime";
+      reference
+        "Device.ATM.Diagnostics.F5Loopback.MaximumResponseTime";
+    }
+  }
+
+  grouping atm-link-g {
+    description
+      "Grouping object for Device.ATM.Link.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ATM.Link.{i}.Enable";
+      reference
+        "Device.ATM.Link.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Status";
+      reference
+        "Device.ATM.Link.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ATM.Link.{i}.Alias";
+      reference
+        "Device.ATM.Link.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Name";
+      reference
+        "Device.ATM.Link.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.LastChange";
+      reference
+        "Device.ATM.Link.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.ATM.Link.{i}.LowerLayers";
+      reference
+        "Device.ATM.Link.{i}.LowerLayers";
+    }
+    leaf link-type {
+      type enumeration {
+        enum EoA {
+          description
+            "Enum Value - EoA";
+        }
+        enum IPoA {
+          description
+            "Enum Value - IPoA";
+        }
+        enum PPPoA {
+          description
+            "Enum Value - PPPoA";
+        }
+        enum CIP {
+          description
+            "Enum Value - CIP";
+        }
+        enum Unconfigured {
+          description
+            "Enum Value - Unconfigured";
+        }
+      }
+      description
+        "Device.ATM.Link.{i}.LinkType";
+      reference
+        "Device.ATM.Link.{i}.LinkType";
+    }
+    leaf auto-config {
+      type boolean;
+      config false;
+      description
+        "Device.ATM.Link.{i}.AutoConfig";
+      reference
+        "Device.ATM.Link.{i}.AutoConfig";
+    }
+    leaf destination-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ATM.Link.{i}.DestinationAddress";
+      reference
+        "Device.ATM.Link.{i}.DestinationAddress";
+    }
+    leaf encapsulation {
+      type enumeration {
+        enum LLC {
+          description
+            "Enum Value - LLC";
+        }
+        enum VCMUX {
+          description
+            "Enum Value - VCMUX";
+        }
+      }
+      description
+        "Device.ATM.Link.{i}.Encapsulation";
+      reference
+        "Device.ATM.Link.{i}.Encapsulation";
+    }
+    leaf fcs-preserved {
+      type boolean;
+      description
+        "Device.ATM.Link.{i}.FCSPreserved";
+      reference
+        "Device.ATM.Link.{i}.FCSPreserved";
+    }
+    leaf vc-search-list {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ATM.Link.{i}.VCSearchList";
+      reference
+        "Device.ATM.Link.{i}.VCSearchList";
+    }
+    leaf aal {
+      type string;
+      config false;
+      description
+        "Device.ATM.Link.{i}.AAL";
+      reference
+        "Device.ATM.Link.{i}.AAL";
+    }
+  }
+
+  grouping link-qo-s-g {
+    description
+      "Grouping object for Device.ATM.Link.{i}.QoS.";
+    leaf qo-s-class {
+      type enumeration {
+        enum UBR {
+          description
+            "Enum Value - UBR";
+        }
+        enum CBR {
+          description
+            "Enum Value - CBR";
+        }
+        enum GFR {
+          description
+            "Enum Value - GFR";
+        }
+        enum VBR-nrt {
+          description
+            "Enum Value - VBR-nrt";
+        }
+        enum VBR-rt {
+          description
+            "Enum Value - VBR-rt";
+        }
+        enum UBR+ {
+          description
+            "Enum Value - UBR+";
+        }
+        enum ABR {
+          description
+            "Enum Value - ABR";
+        }
+      }
+      description
+        "Device.ATM.Link.{i}.QoS.QoSClass";
+      reference
+        "Device.ATM.Link.{i}.QoS.QoSClass";
+    }
+    leaf peak-cell-rate {
+      type uint32;
+      description
+        "Device.ATM.Link.{i}.QoS.PeakCellRate";
+      reference
+        "Device.ATM.Link.{i}.QoS.PeakCellRate";
+    }
+    leaf maximum-burst-size {
+      type uint32;
+      description
+        "Device.ATM.Link.{i}.QoS.MaximumBurstSize";
+      reference
+        "Device.ATM.Link.{i}.QoS.MaximumBurstSize";
+    }
+    leaf sustainable-cell-rate {
+      type uint32;
+      description
+        "Device.ATM.Link.{i}.QoS.SustainableCellRate";
+      reference
+        "Device.ATM.Link.{i}.QoS.SustainableCellRate";
+    }
+  }
+
+  grouping link-stats-g {
+    description
+      "Grouping object for Device.ATM.Link.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.BytesSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.BytesReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.PacketsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.PacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.ErrorsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.ATM.Link.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.ATM.Link.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+    leaf transmitted-blocks {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.TransmittedBlocks";
+      reference
+        "Device.ATM.Link.{i}.Stats.TransmittedBlocks";
+    }
+    leaf received-blocks {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.ReceivedBlocks";
+      reference
+        "Device.ATM.Link.{i}.Stats.ReceivedBlocks";
+    }
+    leaf crc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.CRCErrors";
+      reference
+        "Device.ATM.Link.{i}.Stats.CRCErrors";
+    }
+    leaf hec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.ATM.Link.{i}.Stats.HECErrors";
+      reference
+        "Device.ATM.Link.{i}.Stats.HECErrors";
+    }
+  }
+
+  grouping device-basapm-g {
+    description
+      "Grouping object for Device.BASAPM.";
+    leaf measurement-endpoint-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.BASAPM.MeasurementEndpointNumberOfEntries";
+      reference
+        "Device.BASAPM.MeasurementEndpointNumberOfEntries";
+    }
+  }
+
+  grouping basapm-measurement-endpoint-g {
+    description
+      "Grouping object for Device.BASAPM.MeasurementEndpoint.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.Alias";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.Enable";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.Enable";
+    }
+    leaf measurement-agent {
+      type string;
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.MeasurementAgent";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.MeasurementAgent";
+    }
+    leaf device-ownership {
+      type enumeration {
+        enum ISP {
+          description
+            "Enum Value - ISP";
+        }
+        enum Customer {
+          description
+            "Enum Value - Customer";
+        }
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.DeviceOwnership";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.DeviceOwnership";
+    }
+    leaf operational-domain {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.OperationalDomain";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.OperationalDomain";
+    }
+    leaf internet-domain {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.InternetDomain";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.InternetDomain";
+    }
+    leaf use-measurement-endpoint-in-reports {
+      type boolean;
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.UseMeasurementEndpointInReports";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.UseMeasurementEndpointInReports";
+    }
+  }
+
+  grouping measurement-endpoint-customer-device-g {
+    description
+      "Grouping object for Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.";
+    leaf equipment-identifier {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.EquipmentIdentifier";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.EquipmentIdentifier";
+    }
+    leaf customer-identifier {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.CustomerIdentifier";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.CustomerIdentifier";
+    }
+  }
+
+  grouping measurement-endpoint-isp-device-g {
+    description
+      "Grouping object for Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.";
+    leaf reference-point {
+      type enumeration {
+        enum STP {
+          description
+            "Enum Value - STP";
+        }
+        enum IDTP {
+          description
+            "Enum Value - IDTP";
+        }
+        enum RNTP {
+          description
+            "Enum Value - RNTP";
+        }
+        enum IRTP {
+          description
+            "Enum Value - IRTP";
+        }
+        enum MTP {
+          description
+            "Enum Value - MTP";
+        }
+        enum IATP {
+          description
+            "Enum Value - IATP";
+        }
+        enum UNITP {
+          description
+            "Enum Value - UNITP";
+        }
+        enum CEDTP {
+          description
+            "Enum Value - CEDTP";
+        }
+      }
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.ReferencePoint";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.ReferencePoint";
+    }
+    leaf geographical-location {
+      type string;
+      description
+        "Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.GeographicalLocation";
+      reference
+        "Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.GeographicalLocation";
+    }
+  }
+
+  grouping device-bridging-g {
+    description
+      "Grouping object for Device.Bridging.";
+    leaf max-bridge-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxBridgeEntries";
+      reference
+        "Device.Bridging.MaxBridgeEntries";
+    }
+    leaf max-d-bridge-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxDBridgeEntries";
+      reference
+        "Device.Bridging.MaxDBridgeEntries";
+    }
+    leaf max-q-bridge-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxQBridgeEntries";
+      reference
+        "Device.Bridging.MaxQBridgeEntries";
+    }
+    leaf max-vlan-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxVLANEntries";
+      reference
+        "Device.Bridging.MaxVLANEntries";
+    }
+    leaf max-provider-bridge-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxProviderBridgeEntries";
+      reference
+        "Device.Bridging.MaxProviderBridgeEntries";
+    }
+    leaf provider-bridge-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.ProviderBridgeNumberOfEntries";
+      reference
+        "Device.Bridging.ProviderBridgeNumberOfEntries";
+    }
+    leaf max-filter-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.MaxFilterEntries";
+      reference
+        "Device.Bridging.MaxFilterEntries";
+    }
+    leaf bridge-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.BridgeNumberOfEntries";
+      reference
+        "Device.Bridging.BridgeNumberOfEntries";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.FilterNumberOfEntries";
+      reference
+        "Device.Bridging.FilterNumberOfEntries";
+    }
+  }
+
+  grouping bridging-bridge-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Enable";
+      reference
+        "Device.Bridging.Bridge.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Status";
+      reference
+        "Device.Bridging.Bridge.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Alias";
+      reference
+        "Device.Bridging.Bridge.{i}.Alias";
+    }
+    leaf standard {
+      type enumeration {
+        enum 802.1D-2004 {
+          description
+            "Enum Value - 802.1D-2004";
+        }
+        enum 802.1Q-2005 {
+          description
+            "Enum Value - 802.1Q-2005";
+        }
+        enum 802.1Q-2011 {
+          description
+            "Enum Value - 802.1Q-2011";
+        }
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Standard";
+      reference
+        "Device.Bridging.Bridge.{i}.Standard";
+    }
+    leaf port-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.PortNumberOfEntries";
+      reference
+        "Device.Bridging.Bridge.{i}.PortNumberOfEntries";
+    }
+    leaf vlan-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.VLANNumberOfEntries";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANNumberOfEntries";
+    }
+    leaf vlan-port-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.VLANPortNumberOfEntries";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPortNumberOfEntries";
+    }
+  }
+
+  grouping bridge-port-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.Port.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Enable";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Status";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Alias";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Name";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.LastChange";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.LowerLayers";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.LowerLayers";
+    }
+    leaf management-port {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.ManagementPort";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.ManagementPort";
+    }
+    leaf type {
+      type enumeration {
+        enum ProviderNetworkPort {
+          description
+            "Enum Value - ProviderNetworkPort";
+        }
+        enum CustomerNetworkPort {
+          description
+            "Enum Value - CustomerNetworkPort";
+        }
+        enum CustomerEdgePort {
+          description
+            "Enum Value - CustomerEdgePort";
+        }
+        enum CustomerVLANPort {
+          description
+            "Enum Value - CustomerVLANPort";
+        }
+        enum VLANUnawarePort {
+          description
+            "Enum Value - VLANUnawarePort";
+        }
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Type";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Type";
+    }
+    leaf default-user-priority {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.DefaultUserPriority";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.DefaultUserPriority";
+    }
+    leaf priority-regeneration {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityRegeneration";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityRegeneration";
+    }
+    leaf port-state {
+      type string;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PortState";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PortState";
+    }
+    leaf pvid {
+      type int32 {
+        range "1..4094";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PVID";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PVID";
+    }
+    leaf tpid {
+      type uint32;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.TPID";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.TPID";
+    }
+    leaf acceptable-frame-types {
+      type enumeration {
+        enum AdmitAll {
+          description
+            "Enum Value - AdmitAll";
+        }
+        enum AdmitOnlyVLANTagged {
+          description
+            "Enum Value - AdmitOnlyVLANTagged";
+        }
+        enum AdmitOnlyPrioUntagged {
+          description
+            "Enum Value - AdmitOnlyPrioUntagged";
+        }
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.AcceptableFrameTypes";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.AcceptableFrameTypes";
+    }
+    leaf ingress-filtering {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.IngressFiltering";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.IngressFiltering";
+    }
+    leaf service-access-priority-selection {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.ServiceAccessPrioritySelection";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.ServiceAccessPrioritySelection";
+    }
+    leaf service-access-priority-translation {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.ServiceAccessPriorityTranslation";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.ServiceAccessPriorityTranslation";
+    }
+    leaf priority-tagging {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityTagging";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityTagging";
+    }
+  }
+
+  grouping port-priority-code-point-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.";
+    leaf pcp-selection {
+      type uint32 {
+        range "1..4";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPSelection";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPSelection";
+    }
+    leaf use-dei {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.UseDEI";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.UseDEI";
+    }
+    leaf require-drop-encoding {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.RequireDropEncoding";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.RequireDropEncoding";
+    }
+    leaf pcp-encoding {
+      type string {
+        length "31";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPEncoding";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPEncoding";
+    }
+    leaf pcp-decoding {
+      type string {
+        length "15";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPDecoding";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.PCPDecoding";
+    }
+  }
+
+  grouping port-stats-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.Port.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BytesSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BytesReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.PacketsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Bridging.Bridge.{i}.Port.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping bridge-vlan-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.VLAN.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Enable";
+      reference
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Alias";
+      reference
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Name";
+      reference
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.Name";
+    }
+    leaf vlanid {
+      type int32 {
+        range "1..4094";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.VLANID";
+      reference
+        "Device.Bridging.Bridge.{i}.VLAN.{i}.VLANID";
+    }
+  }
+
+  grouping bridge-vlan-port-g {
+    description
+      "Grouping object for Device.Bridging.Bridge.{i}.VLANPort.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Enable";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Alias";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Alias";
+    }
+    leaf vlan {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.VLAN";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.VLAN";
+    }
+    leaf port {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Port";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Port";
+    }
+    leaf untagged {
+      type boolean;
+      description
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Untagged";
+      reference
+        "Device.Bridging.Bridge.{i}.VLANPort.{i}.Untagged";
+    }
+  }
+
+  grouping bridging-filter-g {
+    description
+      "Grouping object for Device.Bridging.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.Enable";
+      reference
+        "Device.Bridging.Filter.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.Filter.{i}.Alias";
+      reference
+        "Device.Bridging.Filter.{i}.Alias";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Bridging.Filter.{i}.Status";
+      reference
+        "Device.Bridging.Filter.{i}.Status";
+    }
+    leaf bridge {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.Filter.{i}.Bridge";
+      reference
+        "Device.Bridging.Filter.{i}.Bridge";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.Bridging.Filter.{i}.Order";
+      reference
+        "Device.Bridging.Filter.{i}.Order";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.Filter.{i}.Interface";
+      reference
+        "Device.Bridging.Filter.{i}.Interface";
+    }
+    leaf dhcp-type {
+      type enumeration {
+        enum DHCPv4 {
+          description
+            "Enum Value - DHCPv4";
+        }
+        enum DHCPv6 {
+          description
+            "Enum Value - DHCPv6";
+        }
+      }
+      description
+        "Device.Bridging.Filter.{i}.DHCPType";
+      reference
+        "Device.Bridging.Filter.{i}.DHCPType";
+    }
+    leaf vlanid-filter {
+      type uint32 {
+        range "0..4094";
+      }
+      description
+        "Device.Bridging.Filter.{i}.VLANIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.VLANIDFilter";
+    }
+    leaf ethertype-filter-list {
+      type uint32;
+      description
+        "Device.Bridging.Filter.{i}.EthertypeFilterList";
+      reference
+        "Device.Bridging.Filter.{i}.EthertypeFilterList";
+    }
+    leaf ethertype-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.EthertypeFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.EthertypeFilterExclude";
+    }
+    leaf source-mac-address-filter-list {
+      type string {
+        length "min..512";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACAddressFilterList";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACAddressFilterList";
+    }
+    leaf source-mac-address-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourceMACAddressFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACAddressFilterExclude";
+    }
+    leaf dest-mac-address-filter-list {
+      type string {
+        length "min..512";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACAddressFilterList";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACAddressFilterList";
+    }
+    leaf dest-mac-address-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestMACAddressFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACAddressFilterExclude";
+    }
+    leaf source-mac-from-vendor-class-id-filter {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilter";
+    }
+    leaf source-mac-from-vendor-class-id-filterv6 {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilterv6";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilterv6";
+    }
+    leaf source-mac-from-vendor-class-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDFilterExclude";
+    }
+    leaf source-mac-from-vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDMode";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromVendorClassIDMode";
+    }
+    leaf dest-mac-from-vendor-class-id-filter {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilter";
+    }
+    leaf dest-mac-from-vendor-class-id-filterv6 {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilterv6";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilterv6";
+    }
+    leaf dest-mac-from-vendor-class-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDFilterExclude";
+    }
+    leaf dest-mac-from-vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDMode";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromVendorClassIDMode";
+    }
+    leaf source-mac-from-client-id-filter {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromClientIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromClientIDFilter";
+    }
+    leaf source-mac-from-client-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromClientIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromClientIDFilterExclude";
+    }
+    leaf dest-mac-from-client-id-filter {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromClientIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromClientIDFilter";
+    }
+    leaf dest-mac-from-client-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromClientIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromClientIDFilterExclude";
+    }
+    leaf source-mac-from-user-class-id-filter {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromUserClassIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromUserClassIDFilter";
+    }
+    leaf source-mac-from-user-class-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourceMACFromUserClassIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMACFromUserClassIDFilterExclude";
+    }
+    leaf dest-mac-from-user-class-id-filter {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromUserClassIDFilter";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromUserClassIDFilter";
+    }
+    leaf dest-mac-from-user-class-id-filter-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestMACFromUserClassIDFilterExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestMACFromUserClassIDFilterExclude";
+    }
+    leaf dest-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestIP";
+      reference
+        "Device.Bridging.Filter.{i}.DestIP";
+    }
+    leaf dest-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestMask";
+      reference
+        "Device.Bridging.Filter.{i}.DestMask";
+    }
+    leaf dest-ip-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestIPExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestIPExclude";
+    }
+    leaf source-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceIP";
+      reference
+        "Device.Bridging.Filter.{i}.SourceIP";
+    }
+    leaf source-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourceMask";
+      reference
+        "Device.Bridging.Filter.{i}.SourceMask";
+    }
+    leaf source-ip-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourceIPExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourceIPExclude";
+    }
+    leaf protocol {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.Bridging.Filter.{i}.Protocol";
+      reference
+        "Device.Bridging.Filter.{i}.Protocol";
+    }
+    leaf protocol-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.ProtocolExclude";
+      reference
+        "Device.Bridging.Filter.{i}.ProtocolExclude";
+    }
+    leaf dest-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestPort";
+      reference
+        "Device.Bridging.Filter.{i}.DestPort";
+    }
+    leaf dest-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.DestPortRangeMax";
+      reference
+        "Device.Bridging.Filter.{i}.DestPortRangeMax";
+    }
+    leaf dest-port-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.DestPortExclude";
+      reference
+        "Device.Bridging.Filter.{i}.DestPortExclude";
+    }
+    leaf source-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourcePort";
+      reference
+        "Device.Bridging.Filter.{i}.SourcePort";
+    }
+    leaf source-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Bridging.Filter.{i}.SourcePortRangeMax";
+      reference
+        "Device.Bridging.Filter.{i}.SourcePortRangeMax";
+    }
+    leaf source-port-exclude {
+      type boolean;
+      description
+        "Device.Bridging.Filter.{i}.SourcePortExclude";
+      reference
+        "Device.Bridging.Filter.{i}.SourcePortExclude";
+    }
+  }
+
+  grouping bridging-provider-bridge-g {
+    description
+      "Grouping object for Device.Bridging.ProviderBridge.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Bridging.ProviderBridge.{i}.Enable";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Bridging.ProviderBridge.{i}.Status";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Bridging.ProviderBridge.{i}.Alias";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.Alias";
+    }
+    leaf type {
+      type enumeration {
+        enum S-VLAN {
+          description
+            "Enum Value - S-VLAN";
+        }
+        enum PE {
+          description
+            "Enum Value - PE";
+        }
+      }
+      description
+        "Device.Bridging.ProviderBridge.{i}.Type";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.Type";
+    }
+    leaf svla-ncomponent {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.ProviderBridge.{i}.SVLANcomponent";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.SVLANcomponent";
+    }
+    leaf cvla-ncomponents {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Bridging.ProviderBridge.{i}.CVLANcomponents";
+      reference
+        "Device.Bridging.ProviderBridge.{i}.CVLANcomponents";
+    }
+  }
+
+  grouping device-bulk-data-g {
+    description
+      "Grouping object for Device.BulkData.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.BulkData.Enable";
+      reference
+        "Device.BulkData.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.BulkData.Status";
+      reference
+        "Device.BulkData.Status";
+    }
+    leaf min-reporting-interval {
+      type uint32;
+      config false;
+      description
+        "Device.BulkData.MinReportingInterval";
+      reference
+        "Device.BulkData.MinReportingInterval";
+    }
+    leaf protocols {
+      type string;
+      config false;
+      description
+        "Device.BulkData.Protocols";
+      reference
+        "Device.BulkData.Protocols";
+    }
+    leaf encoding-types {
+      type string;
+      config false;
+      description
+        "Device.BulkData.EncodingTypes";
+      reference
+        "Device.BulkData.EncodingTypes";
+    }
+    leaf parameter-wild-card-supported {
+      type boolean;
+      config false;
+      description
+        "Device.BulkData.ParameterWildCardSupported";
+      reference
+        "Device.BulkData.ParameterWildCardSupported";
+    }
+    leaf max-number-of-profiles {
+      type int32;
+      config false;
+      description
+        "Device.BulkData.MaxNumberOfProfiles";
+      reference
+        "Device.BulkData.MaxNumberOfProfiles";
+    }
+    leaf max-number-of-parameter-references {
+      type int32;
+      config false;
+      description
+        "Device.BulkData.MaxNumberOfParameterReferences";
+      reference
+        "Device.BulkData.MaxNumberOfParameterReferences";
+    }
+    leaf profile-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.BulkData.ProfileNumberOfEntries";
+      reference
+        "Device.BulkData.ProfileNumberOfEntries";
+    }
+  }
+
+  grouping bulk-data-profile-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.BulkData.Profile.{i}.Enable";
+      reference
+        "Device.BulkData.Profile.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BulkData.Profile.{i}.Alias";
+      reference
+        "Device.BulkData.Profile.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.BulkData.Profile.{i}.Name";
+      reference
+        "Device.BulkData.Profile.{i}.Name";
+    }
+    leaf number-of-retained-failed-reports {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.BulkData.Profile.{i}.NumberOfRetainedFailedReports";
+      reference
+        "Device.BulkData.Profile.{i}.NumberOfRetainedFailedReports";
+    }
+    leaf protocol {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.Protocol";
+      reference
+        "Device.BulkData.Profile.{i}.Protocol";
+    }
+    leaf encoding-type {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.EncodingType";
+      reference
+        "Device.BulkData.Profile.{i}.EncodingType";
+    }
+    leaf reporting-interval {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.BulkData.Profile.{i}.ReportingInterval";
+      reference
+        "Device.BulkData.Profile.{i}.ReportingInterval";
+    }
+    leaf time-reference {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.TimeReference";
+      reference
+        "Device.BulkData.Profile.{i}.TimeReference";
+    }
+    leaf streaming-host {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BulkData.Profile.{i}.StreamingHost";
+      reference
+        "Device.BulkData.Profile.{i}.StreamingHost";
+    }
+    leaf streaming-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.BulkData.Profile.{i}.StreamingPort";
+      reference
+        "Device.BulkData.Profile.{i}.StreamingPort";
+    }
+    leaf streaming-session-id {
+      type uint32 {
+        range "48..57 | 65..90";
+      }
+      description
+        "Device.BulkData.Profile.{i}.StreamingSessionID";
+      reference
+        "Device.BulkData.Profile.{i}.StreamingSessionID";
+    }
+    leaf file-transfer-url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BulkData.Profile.{i}.FileTransferURL";
+      reference
+        "Device.BulkData.Profile.{i}.FileTransferURL";
+    }
+    leaf file-transfer-username {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BulkData.Profile.{i}.FileTransferUsername";
+      reference
+        "Device.BulkData.Profile.{i}.FileTransferUsername";
+    }
+    leaf control-file-format {
+      type string {
+        length "min..128";
+      }
+      description
+        "Device.BulkData.Profile.{i}.ControlFileFormat";
+      reference
+        "Device.BulkData.Profile.{i}.ControlFileFormat";
+    }
+    leaf parameter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.BulkData.Profile.{i}.ParameterNumberOfEntries";
+      reference
+        "Device.BulkData.Profile.{i}.ParameterNumberOfEntries";
+    }
+  }
+
+  grouping profile-csv-encoding-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.CSVEncoding.";
+    leaf field-separator {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.CSVEncoding.FieldSeparator";
+      reference
+        "Device.BulkData.Profile.{i}.CSVEncoding.FieldSeparator";
+    }
+    leaf row-separator {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.CSVEncoding.RowSeparator";
+      reference
+        "Device.BulkData.Profile.{i}.CSVEncoding.RowSeparator";
+    }
+    leaf escape-character {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.CSVEncoding.EscapeCharacter";
+      reference
+        "Device.BulkData.Profile.{i}.CSVEncoding.EscapeCharacter";
+    }
+    leaf report-format {
+      type enumeration {
+        enum ParameterPerRow {
+          description
+            "Enum Value - ParameterPerRow";
+        }
+        enum ParameterPerColumn {
+          description
+            "Enum Value - ParameterPerColumn";
+        }
+      }
+      description
+        "Device.BulkData.Profile.{i}.CSVEncoding.ReportFormat";
+      reference
+        "Device.BulkData.Profile.{i}.CSVEncoding.ReportFormat";
+    }
+    leaf row-timestamp {
+      type enumeration {
+        enum Unix-Epoch {
+          description
+            "Enum Value - Unix-Epoch";
+        }
+        enum ISO-8601 {
+          description
+            "Enum Value - ISO-8601";
+        }
+        enum None {
+          description
+            "Enum Value - None";
+        }
+      }
+      description
+        "Device.BulkData.Profile.{i}.CSVEncoding.RowTimestamp";
+      reference
+        "Device.BulkData.Profile.{i}.CSVEncoding.RowTimestamp";
+    }
+  }
+
+  grouping profile-http-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.HTTP.";
+    leaf url {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.URL";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.URL";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.Username";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.Username";
+    }
+    leaf compressions-supported {
+      type string;
+      config false;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.CompressionsSupported";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.CompressionsSupported";
+    }
+    leaf compression {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.Compression";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.Compression";
+    }
+    leaf methods-supported {
+      type string;
+      config false;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.MethodsSupported";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.MethodsSupported";
+    }
+    leaf method {
+      type string;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.Method";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.Method";
+    }
+    leaf use-date-header {
+      type boolean;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.UseDateHeader";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.UseDateHeader";
+    }
+    leaf retry-enable {
+      type boolean;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RetryEnable";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RetryEnable";
+    }
+    leaf retry-minimum-wait-interval {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RetryMinimumWaitInterval";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RetryMinimumWaitInterval";
+    }
+    leaf retry-interval-multiplier {
+      type uint32 {
+        range "1000..65535";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RetryIntervalMultiplier";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RetryIntervalMultiplier";
+    }
+    leaf request-uri-parameter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameterNumberOfEntries";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameterNumberOfEntries";
+    }
+    leaf persist-across-reboot {
+      type boolean;
+      description
+        "Device.BulkData.Profile.{i}.HTTP.PersistAcrossReboot";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.PersistAcrossReboot";
+    }
+  }
+
+  grouping http-request-uri-parameter-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.Name";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.Name";
+    }
+    leaf reference {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.Reference";
+      reference
+        "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.Reference";
+    }
+  }
+
+  grouping profile-json-encoding-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.JSONEncoding.";
+    leaf report-format {
+      type enumeration {
+        enum ObjectHierarchy {
+          description
+            "Enum Value - ObjectHierarchy";
+        }
+        enum NameValuePair {
+          description
+            "Enum Value - NameValuePair";
+        }
+      }
+      description
+        "Device.BulkData.Profile.{i}.JSONEncoding.ReportFormat";
+      reference
+        "Device.BulkData.Profile.{i}.JSONEncoding.ReportFormat";
+    }
+    leaf report-timestamp {
+      type enumeration {
+        enum Unix-Epoch {
+          description
+            "Enum Value - Unix-Epoch";
+        }
+        enum ISO-8601 {
+          description
+            "Enum Value - ISO-8601";
+        }
+        enum None {
+          description
+            "Enum Value - None";
+        }
+      }
+      description
+        "Device.BulkData.Profile.{i}.JSONEncoding.ReportTimestamp";
+      reference
+        "Device.BulkData.Profile.{i}.JSONEncoding.ReportTimestamp";
+    }
+  }
+
+  grouping profile-parameter-g {
+    description
+      "Grouping object for Device.BulkData.Profile.{i}.Parameter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.BulkData.Profile.{i}.Parameter.{i}.Name";
+      reference
+        "Device.BulkData.Profile.{i}.Parameter.{i}.Name";
+    }
+    leaf reference {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.BulkData.Profile.{i}.Parameter.{i}.Reference";
+      reference
+        "Device.BulkData.Profile.{i}.Parameter.{i}.Reference";
+    }
+  }
+
+  grouping device-captive-portal-g {
+    description
+      "Grouping object for Device.CaptivePortal.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.CaptivePortal.Enable";
+      reference
+        "Device.CaptivePortal.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.CaptivePortal.Status";
+      reference
+        "Device.CaptivePortal.Status";
+    }
+    leaf allowed-list {
+      type string {
+        length "min..10000";
+      }
+      description
+        "Device.CaptivePortal.AllowedList";
+      reference
+        "Device.CaptivePortal.AllowedList";
+    }
+    leaf url {
+      type string {
+        length "min..2000";
+      }
+      description
+        "Device.CaptivePortal.URL";
+      reference
+        "Device.CaptivePortal.URL";
+    }
+  }
+
+  grouping device-cellular-g {
+    description
+      "Grouping object for Device.Cellular.";
+    leaf roaming-enabled {
+      type boolean;
+      description
+        "Device.Cellular.RoamingEnabled";
+      reference
+        "Device.Cellular.RoamingEnabled";
+    }
+    leaf roaming-status {
+      type string;
+      config false;
+      description
+        "Device.Cellular.RoamingStatus";
+      reference
+        "Device.Cellular.RoamingStatus";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Cellular.InterfaceNumberOfEntries";
+      reference
+        "Device.Cellular.InterfaceNumberOfEntries";
+    }
+    leaf access-point-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Cellular.AccessPointNumberOfEntries";
+      reference
+        "Device.Cellular.AccessPointNumberOfEntries";
+    }
+  }
+
+  grouping cellular-access-point-g {
+    description
+      "Grouping object for Device.Cellular.AccessPoint.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Cellular.AccessPoint.{i}.Enable";
+      reference
+        "Device.Cellular.AccessPoint.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Cellular.AccessPoint.{i}.Alias";
+      reference
+        "Device.Cellular.AccessPoint.{i}.Alias";
+    }
+    leaf apn {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Cellular.AccessPoint.{i}.APN";
+      reference
+        "Device.Cellular.AccessPoint.{i}.APN";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Cellular.AccessPoint.{i}.Username";
+      reference
+        "Device.Cellular.AccessPoint.{i}.Username";
+    }
+    leaf proxy {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Cellular.AccessPoint.{i}.Proxy";
+      reference
+        "Device.Cellular.AccessPoint.{i}.Proxy";
+    }
+    leaf proxy-port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.Cellular.AccessPoint.{i}.ProxyPort";
+      reference
+        "Device.Cellular.AccessPoint.{i}.ProxyPort";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.Cellular.AccessPoint.{i}.Interface";
+      reference
+        "Device.Cellular.AccessPoint.{i}.Interface";
+    }
+  }
+
+  grouping cellular-interface-g {
+    description
+      "Grouping object for Device.Cellular.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Cellular.Interface.{i}.Enable";
+      reference
+        "Device.Cellular.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Status";
+      reference
+        "Device.Cellular.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Cellular.Interface.{i}.Alias";
+      reference
+        "Device.Cellular.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Name";
+      reference
+        "Device.Cellular.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.LastChange";
+      reference
+        "Device.Cellular.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Cellular.Interface.{i}.LowerLayers";
+      reference
+        "Device.Cellular.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Upstream";
+      reference
+        "Device.Cellular.Interface.{i}.Upstream";
+    }
+    leaf imei {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.IMEI";
+      reference
+        "Device.Cellular.Interface.{i}.IMEI";
+    }
+    leaf supported-access-technologies {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.SupportedAccessTechnologies";
+      reference
+        "Device.Cellular.Interface.{i}.SupportedAccessTechnologies";
+    }
+    leaf preferred-access-technology {
+      type string;
+      description
+        "Device.Cellular.Interface.{i}.PreferredAccessTechnology";
+      reference
+        "Device.Cellular.Interface.{i}.PreferredAccessTechnology";
+    }
+    leaf current-access-technology {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.CurrentAccessTechnology";
+      reference
+        "Device.Cellular.Interface.{i}.CurrentAccessTechnology";
+    }
+    leaf available-networks {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.AvailableNetworks";
+      reference
+        "Device.Cellular.Interface.{i}.AvailableNetworks";
+    }
+    leaf network-requested {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Cellular.Interface.{i}.NetworkRequested";
+      reference
+        "Device.Cellular.Interface.{i}.NetworkRequested";
+    }
+    leaf network-in-use {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.NetworkInUse";
+      reference
+        "Device.Cellular.Interface.{i}.NetworkInUse";
+    }
+    leaf rssi {
+      type int32;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.RSSI";
+      reference
+        "Device.Cellular.Interface.{i}.RSSI";
+    }
+    leaf upstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.UpstreamMaxBitRate";
+      reference
+        "Device.Cellular.Interface.{i}.UpstreamMaxBitRate";
+    }
+    leaf downstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.DownstreamMaxBitRate";
+      reference
+        "Device.Cellular.Interface.{i}.DownstreamMaxBitRate";
+    }
+  }
+
+  grouping interface-stats-g {
+    description
+      "Grouping object for Device.Cellular.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Cellular.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping interface-usim-g {
+    description
+      "Grouping object for Device.Cellular.Interface.{i}.USIM.";
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.USIM.Status";
+      reference
+        "Device.Cellular.Interface.{i}.USIM.Status";
+    }
+    leaf imsi {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.USIM.IMSI";
+      reference
+        "Device.Cellular.Interface.{i}.USIM.IMSI";
+    }
+    leaf iccid {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.USIM.ICCID";
+      reference
+        "Device.Cellular.Interface.{i}.USIM.ICCID";
+    }
+    leaf msisdn {
+      type string;
+      config false;
+      description
+        "Device.Cellular.Interface.{i}.USIM.MSISDN";
+      reference
+        "Device.Cellular.Interface.{i}.USIM.MSISDN";
+    }
+    leaf pin-check {
+      type enumeration {
+        enum OnNetworkAccess {
+          description
+            "Enum Value - OnNetworkAccess";
+        }
+        enum Reboot {
+          description
+            "Enum Value - Reboot";
+        }
+        enum Off {
+          description
+            "Enum Value - Off";
+        }
+      }
+      description
+        "Device.Cellular.Interface.{i}.USIM.PINCheck";
+      reference
+        "Device.Cellular.Interface.{i}.USIM.PINCheck";
+    }
+  }
+
+  grouping device-dhcpv4-g {
+    description
+      "Grouping object for Device.DHCPv4.";
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.ClientNumberOfEntries";
+      reference
+        "Device.DHCPv4.ClientNumberOfEntries";
+    }
+  }
+
+  grouping dhcpv4-client-g {
+    description
+      "Grouping object for Device.DHCPv4.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Client.{i}.Enable";
+      reference
+        "Device.DHCPv4.Client.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.Alias";
+      reference
+        "Device.DHCPv4.Client.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.Interface";
+      reference
+        "Device.DHCPv4.Client.{i}.Interface";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.Status";
+      reference
+        "Device.DHCPv4.Client.{i}.Status";
+    }
+    leaf dhcp-status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.DHCPStatus";
+      reference
+        "Device.DHCPv4.Client.{i}.DHCPStatus";
+    }
+    leaf ip-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.IPAddress";
+      reference
+        "Device.DHCPv4.Client.{i}.IPAddress";
+    }
+    leaf subnet-mask {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.SubnetMask";
+      reference
+        "Device.DHCPv4.Client.{i}.SubnetMask";
+    }
+    leaf ip-routers {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.IPRouters";
+      reference
+        "Device.DHCPv4.Client.{i}.IPRouters";
+    }
+    leaf dns-servers {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.DNSServers";
+      reference
+        "Device.DHCPv4.Client.{i}.DNSServers";
+    }
+    leaf lease-time-remaining {
+      type int32;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.LeaseTimeRemaining";
+      reference
+        "Device.DHCPv4.Client.{i}.LeaseTimeRemaining";
+    }
+    leaf dhcp-server {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.DHCPServer";
+      reference
+        "Device.DHCPv4.Client.{i}.DHCPServer";
+    }
+    leaf passthrough-enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Client.{i}.PassthroughEnable";
+      reference
+        "Device.DHCPv4.Client.{i}.PassthroughEnable";
+    }
+    leaf passthrough-dhcp-pool {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.PassthroughDHCPPool";
+      reference
+        "Device.DHCPv4.Client.{i}.PassthroughDHCPPool";
+    }
+    leaf sent-option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.SentOptionNumberOfEntries";
+      reference
+        "Device.DHCPv4.Client.{i}.SentOptionNumberOfEntries";
+    }
+    leaf req-option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.ReqOptionNumberOfEntries";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOptionNumberOfEntries";
+    }
+  }
+
+  grouping client-req-option-g {
+    description
+      "Grouping object for Device.DHCPv4.Client.{i}.ReqOption.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Enable";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Enable";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Order";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Alias";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "1..254";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Tag";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Tag";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Value";
+      reference
+        "Device.DHCPv4.Client.{i}.ReqOption.{i}.Value";
+    }
+  }
+
+  grouping client-sent-option-g {
+    description
+      "Grouping object for Device.DHCPv4.Client.{i}.SentOption.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Enable";
+      reference
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Alias";
+      reference
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "1..254";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Tag";
+      reference
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Tag";
+    }
+    leaf value {
+      type string {
+        length "0..255";
+      }
+      description
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Value";
+      reference
+        "Device.DHCPv4.Client.{i}.SentOption.{i}.Value";
+    }
+  }
+
+  grouping dhcpv4-relay-g {
+    description
+      "Grouping object for Device.DHCPv4.Relay.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Enable";
+      reference
+        "Device.DHCPv4.Relay.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Relay.Status";
+      reference
+        "Device.DHCPv4.Relay.Status";
+    }
+    leaf forwarding-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Relay.ForwardingNumberOfEntries";
+      reference
+        "Device.DHCPv4.Relay.ForwardingNumberOfEntries";
+    }
+  }
+
+  grouping relay-forwarding-g {
+    description
+      "Grouping object for Device.DHCPv4.Relay.Forwarding.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Enable";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Status";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Alias";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Alias";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Order";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Order";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Interface";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Interface";
+    }
+    leaf vendor-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassID";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassID";
+    }
+    leaf vendor-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassIDExclude";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassIDExclude";
+    }
+    leaf vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassIDMode";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.VendorClassIDMode";
+    }
+    leaf client-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.ClientID";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.ClientID";
+    }
+    leaf client-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.ClientIDExclude";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.ClientIDExclude";
+    }
+    leaf user-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.UserClassID";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.UserClassID";
+    }
+    leaf user-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.UserClassIDExclude";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.UserClassIDExclude";
+    }
+    leaf chaddr {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.Chaddr";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.Chaddr";
+    }
+    leaf chaddr-mask {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.ChaddrMask";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.ChaddrMask";
+    }
+    leaf chaddr-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.ChaddrExclude";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.ChaddrExclude";
+    }
+    leaf locally-served {
+      type boolean;
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.LocallyServed";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.LocallyServed";
+    }
+    leaf dhcp-server-ip-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Relay.Forwarding.{i}.DHCPServerIPAddress";
+      reference
+        "Device.DHCPv4.Relay.Forwarding.{i}.DHCPServerIPAddress";
+    }
+  }
+
+  grouping dhcpv4-server-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Enable";
+      reference
+        "Device.DHCPv4.Server.Enable";
+    }
+    leaf pool-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.PoolNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.PoolNumberOfEntries";
+    }
+  }
+
+  grouping server-pool-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Enable";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Status";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Alias";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Alias";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Order";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Order";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Interface";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Interface";
+    }
+    leaf vendor-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassID";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassID";
+    }
+    leaf vendor-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassIDExclude";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassIDExclude";
+    }
+    leaf vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassIDMode";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.VendorClassIDMode";
+    }
+    leaf client-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ClientID";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ClientID";
+    }
+    leaf client-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ClientIDExclude";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ClientIDExclude";
+    }
+    leaf user-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.UserClassID";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.UserClassID";
+    }
+    leaf user-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.UserClassIDExclude";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.UserClassIDExclude";
+    }
+    leaf chaddr {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Chaddr";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Chaddr";
+    }
+    leaf chaddr-mask {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ChaddrMask";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ChaddrMask";
+    }
+    leaf chaddr-exclude {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ChaddrExclude";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ChaddrExclude";
+    }
+    leaf min-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.MinAddress";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.MinAddress";
+    }
+    leaf max-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.MaxAddress";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.MaxAddress";
+    }
+    leaf reserved-addresses {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ReservedAddresses";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ReservedAddresses";
+    }
+    leaf subnet-mask {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.SubnetMask";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.SubnetMask";
+    }
+    leaf dns-servers {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.DNSServers";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.DNSServers";
+    }
+    leaf domain-name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.DomainName";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.DomainName";
+    }
+    leaf ip-routers {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.IPRouters";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.IPRouters";
+    }
+    leaf lease-time {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.LeaseTime";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.LeaseTime";
+    }
+    leaf static-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddressNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddressNumberOfEntries";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.OptionNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.OptionNumberOfEntries";
+    }
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.ClientNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.ClientNumberOfEntries";
+    }
+  }
+
+  grouping pool-client-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Alias";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Alias";
+    }
+    leaf chaddr {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Chaddr";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Chaddr";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Active";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Active";
+    }
+    leaf ipv4-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4AddressNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4AddressNumberOfEntries";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.OptionNumberOfEntries";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.OptionNumberOfEntries";
+    }
+  }
+
+  grouping client-ipv4-address-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ip-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.IPAddress";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.IPAddress";
+    }
+    leaf lease-time-remaining {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.LeaseTimeRemaining";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.LeaseTimeRemaining";
+    }
+  }
+
+  grouping client-option-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.Tag";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.Tag";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.Value";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping pool-option-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Enable";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Alias";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "1..254";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Tag";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Tag";
+    }
+    leaf value {
+      type string {
+        length "0..255";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Value";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping pool-static-address-g {
+    description
+      "Grouping object for Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Enable";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Alias";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Alias";
+    }
+    leaf chaddr {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Chaddr";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Chaddr";
+    }
+    leaf yiaddr {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Yiaddr";
+      reference
+        "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.Yiaddr";
+    }
+  }
+
+  grouping device-dhcpv6-g {
+    description
+      "Grouping object for Device.DHCPv6.";
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.ClientNumberOfEntries";
+      reference
+        "Device.DHCPv6.ClientNumberOfEntries";
+    }
+  }
+
+  grouping dhcpv6-client-g {
+    description
+      "Grouping object for Device.DHCPv6.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Client.{i}.Enable";
+      reference
+        "Device.DHCPv6.Client.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.Alias";
+      reference
+        "Device.DHCPv6.Client.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.Interface";
+      reference
+        "Device.DHCPv6.Client.{i}.Interface";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.Status";
+      reference
+        "Device.DHCPv6.Client.{i}.Status";
+    }
+    leaf duid {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.DUID";
+      reference
+        "Device.DHCPv6.Client.{i}.DUID";
+    }
+    leaf request-addresses {
+      type boolean;
+      description
+        "Device.DHCPv6.Client.{i}.RequestAddresses";
+      reference
+        "Device.DHCPv6.Client.{i}.RequestAddresses";
+    }
+    leaf request-prefixes {
+      type boolean;
+      description
+        "Device.DHCPv6.Client.{i}.RequestPrefixes";
+      reference
+        "Device.DHCPv6.Client.{i}.RequestPrefixes";
+    }
+    leaf rapid-commit {
+      type boolean;
+      description
+        "Device.DHCPv6.Client.{i}.RapidCommit";
+      reference
+        "Device.DHCPv6.Client.{i}.RapidCommit";
+    }
+    leaf suggested-t1 {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.SuggestedT1";
+      reference
+        "Device.DHCPv6.Client.{i}.SuggestedT1";
+    }
+    leaf suggested-t2 {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.SuggestedT2";
+      reference
+        "Device.DHCPv6.Client.{i}.SuggestedT2";
+    }
+    leaf supported-options {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.SupportedOptions";
+      reference
+        "Device.DHCPv6.Client.{i}.SupportedOptions";
+    }
+    leaf requested-options {
+      type uint32;
+      description
+        "Device.DHCPv6.Client.{i}.RequestedOptions";
+      reference
+        "Device.DHCPv6.Client.{i}.RequestedOptions";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.ServerNumberOfEntries";
+      reference
+        "Device.DHCPv6.Client.{i}.ServerNumberOfEntries";
+    }
+    leaf sent-option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.SentOptionNumberOfEntries";
+      reference
+        "Device.DHCPv6.Client.{i}.SentOptionNumberOfEntries";
+    }
+    leaf received-option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.ReceivedOptionNumberOfEntries";
+      reference
+        "Device.DHCPv6.Client.{i}.ReceivedOptionNumberOfEntries";
+    }
+  }
+
+  grouping client-received-option-g {
+    description
+      "Grouping object for Device.DHCPv6.Client.{i}.ReceivedOption.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Tag";
+      reference
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Tag";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Value";
+      reference
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Value";
+    }
+    leaf server {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Server";
+      reference
+        "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.Server";
+    }
+  }
+
+  grouping dhcpv6-client-sent-option-g {
+    description
+      "Grouping object for Device.DHCPv6.Client.{i}.SentOption.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Enable";
+      reference
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Alias";
+      reference
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Tag";
+      reference
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Tag";
+    }
+    leaf value {
+      type string {
+        length "0..65535";
+      }
+      description
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Value";
+      reference
+        "Device.DHCPv6.Client.{i}.SentOption.{i}.Value";
+    }
+  }
+
+  grouping client-server-g {
+    description
+      "Grouping object for Device.DHCPv6.Client.{i}.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf source-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.Server.{i}.SourceAddress";
+      reference
+        "Device.DHCPv6.Client.{i}.Server.{i}.SourceAddress";
+    }
+    leaf duid {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.Server.{i}.DUID";
+      reference
+        "Device.DHCPv6.Client.{i}.Server.{i}.DUID";
+    }
+    leaf information-refresh-time {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Client.{i}.Server.{i}.InformationRefreshTime";
+      reference
+        "Device.DHCPv6.Client.{i}.Server.{i}.InformationRefreshTime";
+    }
+  }
+
+  grouping dhcpv6-server-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Enable";
+      reference
+        "Device.DHCPv6.Server.Enable";
+    }
+    leaf pool-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.PoolNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.PoolNumberOfEntries";
+    }
+  }
+
+  grouping dhcpv6-server-pool-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Enable";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Status";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Alias";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Alias";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Order";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Order";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Interface";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Interface";
+    }
+    leaf duid {
+      type string {
+        length "min..130";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.DUID";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.DUID";
+    }
+    leaf duid-exclude {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.DUIDExclude";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.DUIDExclude";
+    }
+    leaf vendor-class-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.VendorClassID";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.VendorClassID";
+    }
+    leaf vendor-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.VendorClassIDExclude";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.VendorClassIDExclude";
+    }
+    leaf user-class-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.UserClassID";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.UserClassID";
+    }
+    leaf user-class-id-exclude {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.UserClassIDExclude";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.UserClassIDExclude";
+    }
+    leaf source-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddress";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddress";
+    }
+    leaf source-address-mask {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddressMask";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddressMask";
+    }
+    leaf source-address-exclude {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddressExclude";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.SourceAddressExclude";
+    }
+    leaf iana-enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IANAEnable";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IANAEnable";
+    }
+    leaf iana-manual-prefixes {
+      type string;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IANAManualPrefixes";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IANAManualPrefixes";
+    }
+    leaf iana-prefixes {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IANAPrefixes";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IANAPrefixes";
+    }
+    leaf iapd-enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IAPDEnable";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IAPDEnable";
+    }
+    leaf iapd-manual-prefixes {
+      type string;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IAPDManualPrefixes";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IAPDManualPrefixes";
+    }
+    leaf iapd-prefixes {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IAPDPrefixes";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IAPDPrefixes";
+    }
+    leaf iapd-add-length {
+      type uint32 {
+        range "min..64";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.IAPDAddLength";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.IAPDAddLength";
+    }
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.ClientNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.ClientNumberOfEntries";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.OptionNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.OptionNumberOfEntries";
+    }
+  }
+
+  grouping server-pool-client-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Alias";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Alias";
+    }
+    leaf source-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.SourceAddress";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.SourceAddress";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Active";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Active";
+    }
+    leaf ipv6-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6AddressNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6AddressNumberOfEntries";
+    }
+    leaf ipv6-prefix-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6PrefixNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6PrefixNumberOfEntries";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.OptionNumberOfEntries";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.OptionNumberOfEntries";
+    }
+  }
+
+  grouping client-ipv6-address-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.IPAddress";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.IPAddress";
+    }
+    leaf preferred-lifetime {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.PreferredLifetime";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.PreferredLifetime";
+    }
+    leaf valid-lifetime {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.ValidLifetime";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.ValidLifetime";
+    }
+  }
+
+  grouping client-ipv6-prefix-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf prefix {
+      type string {
+        length "min..49";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.Prefix";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.Prefix";
+    }
+    leaf preferred-lifetime {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.PreferredLifetime";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.PreferredLifetime";
+    }
+    leaf valid-lifetime {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.ValidLifetime";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.ValidLifetime";
+    }
+  }
+
+  grouping pool-client-option-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.Tag";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.Tag";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.Value";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping server-pool-option-g {
+    description
+      "Grouping object for Device.DHCPv6.Server.Pool.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Enable";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Alias";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Tag";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Tag";
+    }
+    leaf value {
+      type string {
+        length "0..65535";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Value";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.Value";
+    }
+    leaf passthrough-client {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.PassthroughClient";
+      reference
+        "Device.DHCPv6.Server.Pool.{i}.Option.{i}.PassthroughClient";
+    }
+  }
+
+  grouping dlna-capabilities-g {
+    description
+      "Grouping object for Device.DLNA.Capabilities.";
+    leaf hnd-device-class {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.HNDDeviceClass";
+      reference
+        "Device.DLNA.Capabilities.HNDDeviceClass";
+    }
+    leaf device-capability {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.DeviceCapability";
+      reference
+        "Device.DLNA.Capabilities.DeviceCapability";
+    }
+    leaf hid-device-class {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.HIDDeviceClass";
+      reference
+        "Device.DLNA.Capabilities.HIDDeviceClass";
+    }
+    leaf image-class-profile-id {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.ImageClassProfileID";
+      reference
+        "Device.DLNA.Capabilities.ImageClassProfileID";
+    }
+    leaf audio-class-profile-id {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.AudioClassProfileID";
+      reference
+        "Device.DLNA.Capabilities.AudioClassProfileID";
+    }
+    leaf av-class-profile-id {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.AVClassProfileID";
+      reference
+        "Device.DLNA.Capabilities.AVClassProfileID";
+    }
+    leaf media-collection-profile-id {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.MediaCollectionProfileID";
+      reference
+        "Device.DLNA.Capabilities.MediaCollectionProfileID";
+    }
+    leaf printer-class-profile-id {
+      type string;
+      config false;
+      description
+        "Device.DLNA.Capabilities.PrinterClassProfileID";
+      reference
+        "Device.DLNA.Capabilities.PrinterClassProfileID";
+    }
+  }
+
+  grouping device-dns-g {
+    description
+      "Grouping object for Device.DNS.";
+    leaf supported-record-types {
+      type string;
+      config false;
+      description
+        "Device.DNS.SupportedRecordTypes";
+      reference
+        "Device.DNS.SupportedRecordTypes";
+    }
+  }
+
+  grouping dns-client-g {
+    description
+      "Grouping object for Device.DNS.Client.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DNS.Client.Enable";
+      reference
+        "Device.DNS.Client.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.Client.Status";
+      reference
+        "Device.DNS.Client.Status";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.Client.ServerNumberOfEntries";
+      reference
+        "Device.DNS.Client.ServerNumberOfEntries";
+    }
+  }
+
+  grouping dns-client-server-g {
+    description
+      "Grouping object for Device.DNS.Client.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DNS.Client.Server.{i}.Enable";
+      reference
+        "Device.DNS.Client.Server.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.Client.Server.{i}.Status";
+      reference
+        "Device.DNS.Client.Server.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DNS.Client.Server.{i}.Alias";
+      reference
+        "Device.DNS.Client.Server.{i}.Alias";
+    }
+    leaf dns-server {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.DNS.Client.Server.{i}.DNSServer";
+      reference
+        "Device.DNS.Client.Server.{i}.DNSServer";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DNS.Client.Server.{i}.Interface";
+      reference
+        "Device.DNS.Client.Server.{i}.Interface";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.DNS.Client.Server.{i}.Type";
+      reference
+        "Device.DNS.Client.Server.{i}.Type";
+    }
+  }
+
+  grouping diagnostics-ns-lookup-diagnostics-g {
+    description
+      "Grouping object for Device.DNS.Diagnostics.NSLookupDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error_DNSServerNotResolved {
+          description
+            "Enum Value - Error_DNSServerNotResolved";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.DiagnosticsState";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Interface";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Interface";
+    }
+    leaf host-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.HostName";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.HostName";
+    }
+    leaf dns-server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.DNSServer";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.DNSServer";
+    }
+    leaf timeout {
+      type uint32;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Timeout";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Timeout";
+    }
+    leaf number-of-repetitions {
+      type uint32;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.NumberOfRepetitions";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.NumberOfRepetitions";
+    }
+    leaf success-count {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.SuccessCount";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.SuccessCount";
+    }
+    leaf result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.ResultNumberOfEntries";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.ResultNumberOfEntries";
+    }
+  }
+
+  grouping ns-lookup-diagnostics-result-g {
+    description
+      "Grouping object for Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.Status";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.Status";
+    }
+    leaf answer-type {
+      type string;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.AnswerType";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.AnswerType";
+    }
+    leaf host-name-returned {
+      type string;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.HostNameReturned";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.HostNameReturned";
+    }
+    leaf ip-addresses {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.IPAddresses";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.IPAddresses";
+    }
+    leaf dns-server-ip {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.DNSServerIP";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.DNSServerIP";
+    }
+    leaf response-time {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.ResponseTime";
+      reference
+        "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.ResponseTime";
+    }
+  }
+
+  grouping dns-relay-g {
+    description
+      "Grouping object for Device.DNS.Relay.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DNS.Relay.Enable";
+      reference
+        "Device.DNS.Relay.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.Relay.Status";
+      reference
+        "Device.DNS.Relay.Status";
+    }
+    leaf forward-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.Relay.ForwardNumberOfEntries";
+      reference
+        "Device.DNS.Relay.ForwardNumberOfEntries";
+    }
+  }
+
+  grouping dns-relay-forwarding-g {
+    description
+      "Grouping object for Device.DNS.Relay.Forwarding.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DNS.Relay.Forwarding.{i}.Enable";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.Relay.Forwarding.{i}.Status";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DNS.Relay.Forwarding.{i}.Alias";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.Alias";
+    }
+    leaf dns-server {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.DNS.Relay.Forwarding.{i}.DNSServer";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.DNSServer";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DNS.Relay.Forwarding.{i}.Interface";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.Interface";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.DNS.Relay.Forwarding.{i}.Type";
+      reference
+        "Device.DNS.Relay.Forwarding.{i}.Type";
+    }
+  }
+
+  grouping dns-sd-g {
+    description
+      "Grouping object for Device.DNS.SD.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DNS.SD.Enable";
+      reference
+        "Device.DNS.SD.Enable";
+    }
+    leaf service-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.ServiceNumberOfEntries";
+      reference
+        "Device.DNS.SD.ServiceNumberOfEntries";
+    }
+    leaf advertised-interfaces {
+      type string;
+      description
+        "Device.DNS.SD.AdvertisedInterfaces";
+      reference
+        "Device.DNS.SD.AdvertisedInterfaces";
+    }
+  }
+
+  grouping sd-service-g {
+    description
+      "Grouping object for Device.DNS.SD.Service.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf instance-name {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.InstanceName";
+      reference
+        "Device.DNS.SD.Service.{i}.InstanceName";
+    }
+    leaf application-protocol {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.ApplicationProtocol";
+      reference
+        "Device.DNS.SD.Service.{i}.ApplicationProtocol";
+    }
+    leaf transport-protocol {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.TransportProtocol";
+      reference
+        "Device.DNS.SD.Service.{i}.TransportProtocol";
+    }
+    leaf domain {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Domain";
+      reference
+        "Device.DNS.SD.Service.{i}.Domain";
+    }
+    leaf port {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Port";
+      reference
+        "Device.DNS.SD.Service.{i}.Port";
+    }
+    leaf target {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Target";
+      reference
+        "Device.DNS.SD.Service.{i}.Target";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Status";
+      reference
+        "Device.DNS.SD.Service.{i}.Status";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.LastUpdate";
+      reference
+        "Device.DNS.SD.Service.{i}.LastUpdate";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Host";
+      reference
+        "Device.DNS.SD.Service.{i}.Host";
+    }
+    leaf time-to-live {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.TimeToLive";
+      reference
+        "Device.DNS.SD.Service.{i}.TimeToLive";
+    }
+    leaf priority {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Priority";
+      reference
+        "Device.DNS.SD.Service.{i}.Priority";
+    }
+    leaf weight {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.Weight";
+      reference
+        "Device.DNS.SD.Service.{i}.Weight";
+    }
+    leaf text-record-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.TextRecordNumberOfEntries";
+      reference
+        "Device.DNS.SD.Service.{i}.TextRecordNumberOfEntries";
+    }
+  }
+
+  grouping service-text-record-g {
+    description
+      "Grouping object for Device.DNS.SD.Service.{i}.TextRecord.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf key {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.TextRecord.{i}.Key";
+      reference
+        "Device.DNS.SD.Service.{i}.TextRecord.{i}.Key";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.DNS.SD.Service.{i}.TextRecord.{i}.Value";
+      reference
+        "Device.DNS.SD.Service.{i}.TextRecord.{i}.Value";
+    }
+  }
+
+  grouping device-dsl-g {
+    description
+      "Grouping object for Device.DSL.";
+    leaf line-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.LineNumberOfEntries";
+      reference
+        "Device.DSL.LineNumberOfEntries";
+    }
+    leaf channel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.ChannelNumberOfEntries";
+      reference
+        "Device.DSL.ChannelNumberOfEntries";
+    }
+    leaf bonding-group-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroupNumberOfEntries";
+      reference
+        "Device.DSL.BondingGroupNumberOfEntries";
+    }
+  }
+
+  grouping dsl-bonding-group-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DSL.BondingGroup.{i}.Enable";
+      reference
+        "Device.DSL.BondingGroup.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Status";
+      reference
+        "Device.DSL.BondingGroup.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DSL.BondingGroup.{i}.Alias";
+      reference
+        "Device.DSL.BondingGroup.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Name";
+      reference
+        "Device.DSL.BondingGroup.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.LastChange";
+      reference
+        "Device.DSL.BondingGroup.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.LowerLayers";
+      reference
+        "Device.DSL.BondingGroup.{i}.LowerLayers";
+    }
+    leaf group-status {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.GroupStatus";
+      reference
+        "Device.DSL.BondingGroup.{i}.GroupStatus";
+    }
+    leaf group-id {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.GroupID";
+      reference
+        "Device.DSL.BondingGroup.{i}.GroupID";
+    }
+    leaf bond-schemes-supported {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondSchemesSupported";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondSchemesSupported";
+    }
+    leaf bond-scheme {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondScheme";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondScheme";
+    }
+    leaf group-capacity {
+      type uint32 {
+        range "1..32";
+      }
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.GroupCapacity";
+      reference
+        "Device.DSL.BondingGroup.{i}.GroupCapacity";
+    }
+    leaf running-time {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.RunningTime";
+      reference
+        "Device.DSL.BondingGroup.{i}.RunningTime";
+    }
+    leaf target-up-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.TargetUpRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.TargetUpRate";
+    }
+    leaf target-down-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.TargetDownRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.TargetDownRate";
+    }
+    leaf thresh-low-up-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.ThreshLowUpRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.ThreshLowUpRate";
+    }
+    leaf thresh-low-down-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.ThreshLowDownRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.ThreshLowDownRate";
+    }
+    leaf upstream-differential-delay-tolerance {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.UpstreamDifferentialDelayTolerance";
+      reference
+        "Device.DSL.BondingGroup.{i}.UpstreamDifferentialDelayTolerance";
+    }
+    leaf downstream-differential-delay-tolerance {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.DownstreamDifferentialDelayTolerance";
+      reference
+        "Device.DSL.BondingGroup.{i}.DownstreamDifferentialDelayTolerance";
+    }
+    leaf bonded-channel-number-of-entries {
+      type uint32 {
+        range "1..32";
+      }
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannelNumberOfEntries";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannelNumberOfEntries";
+    }
+  }
+
+  grouping bonding-group-bonded-channel-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.BondedChannel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Alias";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Alias";
+    }
+    leaf channel {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Channel";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Channel";
+    }
+  }
+
+  grouping ethernet-stats-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.";
+    leaf underflow-errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.UnderflowErrorsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.UnderflowErrorsSent";
+    }
+    leaf crc-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.CRCErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.CRCErrorsReceived";
+    }
+    leaf alignment-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.AlignmentErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.AlignmentErrorsReceived";
+    }
+    leaf short-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.ShortPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.ShortPacketsReceived";
+    }
+    leaf long-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.LongPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.LongPacketsReceived";
+    }
+    leaf overflow-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.OverflowErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.OverflowErrorsReceived";
+    }
+    leaf pause-frames-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.PauseFramesReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.PauseFramesReceived";
+    }
+    leaf frames-dropped {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.FramesDropped";
+      reference
+        "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.FramesDropped";
+    }
+  }
+
+  grouping bonding-group-ethernet-stats-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.Ethernet.Stats.";
+    leaf paf-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFErrors";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFErrors";
+    }
+    leaf paf-small-fragments {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFSmallFragments";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFSmallFragments";
+    }
+    leaf paf-large-fragments {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLargeFragments";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLargeFragments";
+    }
+    leaf paf-bad-fragments {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFBadFragments";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFBadFragments";
+    }
+    leaf paf-lost-fragments {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostFragments";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostFragments";
+    }
+    leaf paf-late-fragments {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLateFragments";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLateFragments";
+    }
+    leaf paf-lost-starts {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostStarts";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostStarts";
+    }
+    leaf paf-lost-ends {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostEnds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFLostEnds";
+    }
+    leaf paf-overflows {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFOverflows";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PAFOverflows";
+    }
+    leaf pause-frames-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PauseFramesSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.PauseFramesSent";
+    }
+    leaf crc-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.CRCErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.CRCErrorsReceived";
+    }
+    leaf alignment-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.AlignmentErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.AlignmentErrorsReceived";
+    }
+    leaf short-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.ShortPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.ShortPacketsReceived";
+    }
+    leaf long-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.LongPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.LongPacketsReceived";
+    }
+    leaf overflow-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.OverflowErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.OverflowErrorsReceived";
+    }
+    leaf frames-dropped {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.FramesDropped";
+      reference
+        "Device.DSL.BondingGroup.{i}.Ethernet.Stats.FramesDropped";
+    }
+  }
+
+  grouping bonding-group-stats-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.BytesSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.BytesReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.PacketsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.PacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.ErrorsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+    leaf total-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.TotalStart";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.TotalStart";
+    }
+    leaf current-day-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDayStart";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDayStart";
+    }
+    leaf quarter-hour-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHourStart";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHourStart";
+    }
+  }
+
+  grouping stats-current-day-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.Stats.CurrentDay.";
+    leaf failure-reasons {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.FailureReasons";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.FailureReasons";
+    }
+    leaf upstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamRate";
+    }
+    leaf downstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamRate";
+    }
+    leaf upstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamPacketLoss";
+    }
+    leaf downstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamPacketLoss";
+    }
+    leaf upstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UpstreamDifferentialDelay";
+    }
+    leaf downstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.DownstreamDifferentialDelay";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.FailureCount";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.FailureCount";
+    }
+    leaf errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.ErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.ErroredSeconds";
+    }
+    leaf severely-errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.SeverelyErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.SeverelyErroredSeconds";
+    }
+    leaf unavailable-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UnavailableSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.UnavailableSeconds";
+    }
+  }
+
+  grouping stats-quarter-hour-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.Stats.QuarterHour.";
+    leaf failure-reasons {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.FailureReasons";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.FailureReasons";
+    }
+    leaf upstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamRate";
+    }
+    leaf downstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamRate";
+    }
+    leaf upstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamPacketLoss";
+    }
+    leaf downstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamPacketLoss";
+    }
+    leaf upstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UpstreamDifferentialDelay";
+    }
+    leaf downstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.DownstreamDifferentialDelay";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.FailureCount";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.FailureCount";
+    }
+    leaf errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.ErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.ErroredSeconds";
+    }
+    leaf severely-errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.SeverelyErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.SeverelyErroredSeconds";
+    }
+    leaf unavailable-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UnavailableSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.UnavailableSeconds";
+    }
+  }
+
+  grouping stats-total-g {
+    description
+      "Grouping object for Device.DSL.BondingGroup.{i}.Stats.Total.";
+    leaf failure-reasons {
+      type string;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.FailureReasons";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.FailureReasons";
+    }
+    leaf upstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamRate";
+    }
+    leaf downstream-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamRate";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamRate";
+    }
+    leaf upstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamPacketLoss";
+    }
+    leaf downstream-packet-loss {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamPacketLoss";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamPacketLoss";
+    }
+    leaf upstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UpstreamDifferentialDelay";
+    }
+    leaf downstream-differential-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamDifferentialDelay";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.DownstreamDifferentialDelay";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.FailureCount";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.FailureCount";
+    }
+    leaf errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.ErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.ErroredSeconds";
+    }
+    leaf severely-errored-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.SeverelyErroredSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.SeverelyErroredSeconds";
+    }
+    leaf unavailable-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UnavailableSeconds";
+      reference
+        "Device.DSL.BondingGroup.{i}.Stats.Total.UnavailableSeconds";
+    }
+  }
+
+  grouping dsl-channel-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DSL.Channel.{i}.Enable";
+      reference
+        "Device.DSL.Channel.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Status";
+      reference
+        "Device.DSL.Channel.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DSL.Channel.{i}.Alias";
+      reference
+        "Device.DSL.Channel.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Name";
+      reference
+        "Device.DSL.Channel.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LastChange";
+      reference
+        "Device.DSL.Channel.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LowerLayers";
+      reference
+        "Device.DSL.Channel.{i}.LowerLayers";
+    }
+    leaf link-encapsulation-supported {
+      type string;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LinkEncapsulationSupported";
+      reference
+        "Device.DSL.Channel.{i}.LinkEncapsulationSupported";
+    }
+    leaf link-encapsulation-used {
+      type string;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LinkEncapsulationUsed";
+      reference
+        "Device.DSL.Channel.{i}.LinkEncapsulationUsed";
+    }
+    leaf lpath {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LPATH";
+      reference
+        "Device.DSL.Channel.{i}.LPATH";
+    }
+    leaf intlvdepth {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.INTLVDEPTH";
+      reference
+        "Device.DSL.Channel.{i}.INTLVDEPTH";
+    }
+    leaf intlvblock {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.INTLVBLOCK";
+      reference
+        "Device.DSL.Channel.{i}.INTLVBLOCK";
+    }
+    leaf actual-interleaving-delay {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.ActualInterleavingDelay";
+      reference
+        "Device.DSL.Channel.{i}.ActualInterleavingDelay";
+    }
+    leaf actinp {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.ACTINP";
+      reference
+        "Device.DSL.Channel.{i}.ACTINP";
+    }
+    leaf inpreport {
+      type boolean;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.INPREPORT";
+      reference
+        "Device.DSL.Channel.{i}.INPREPORT";
+    }
+    leaf nfec {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.NFEC";
+      reference
+        "Device.DSL.Channel.{i}.NFEC";
+    }
+    leaf rfec {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.RFEC";
+      reference
+        "Device.DSL.Channel.{i}.RFEC";
+    }
+    leaf lsymb {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.LSYMB";
+      reference
+        "Device.DSL.Channel.{i}.LSYMB";
+    }
+    leaf upstream-curr-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.UpstreamCurrRate";
+      reference
+        "Device.DSL.Channel.{i}.UpstreamCurrRate";
+    }
+    leaf downstream-curr-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.DownstreamCurrRate";
+      reference
+        "Device.DSL.Channel.{i}.DownstreamCurrRate";
+    }
+    leaf actndr {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.ACTNDR";
+      reference
+        "Device.DSL.Channel.{i}.ACTNDR";
+    }
+    leaf actinprein {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.DSL.Channel.{i}.ACTINPREIN";
+      reference
+        "Device.DSL.Channel.{i}.ACTINPREIN";
+    }
+  }
+
+  grouping channel-stats-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.BytesSent";
+      reference
+        "Device.DSL.Channel.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.BytesReceived";
+      reference
+        "Device.DSL.Channel.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.PacketsSent";
+      reference
+        "Device.DSL.Channel.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.PacketsReceived";
+      reference
+        "Device.DSL.Channel.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.ErrorsSent";
+      reference
+        "Device.DSL.Channel.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.DSL.Channel.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.DSL.Channel.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.DSL.Channel.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf total-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.TotalStart";
+      reference
+        "Device.DSL.Channel.{i}.Stats.TotalStart";
+    }
+    leaf showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.ShowtimeStart";
+      reference
+        "Device.DSL.Channel.{i}.Stats.ShowtimeStart";
+    }
+    leaf last-showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtimeStart";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtimeStart";
+    }
+    leaf current-day-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDayStart";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDayStart";
+    }
+    leaf quarter-hour-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHourStart";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHourStart";
+    }
+  }
+
+  grouping channel-stats-current-day-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.CurrentDay.";
+    leaf xturfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURFECErrors";
+    }
+    leaf xtucfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCFECErrors";
+    }
+    leaf xturhec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURHECErrors";
+    }
+    leaf xtuchec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCHECErrors";
+    }
+    leaf xturcrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTURCRCErrors";
+    }
+    leaf xtuccrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.CurrentDay.XTUCCRCErrors";
+    }
+  }
+
+  grouping stats-last-showtime-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.LastShowtime.";
+    leaf xturfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURFECErrors";
+    }
+    leaf xtucfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCFECErrors";
+    }
+    leaf xturhec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURHECErrors";
+    }
+    leaf xtuchec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCHECErrors";
+    }
+    leaf xturcrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTURCRCErrors";
+    }
+    leaf xtuccrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.LastShowtime.XTUCCRCErrors";
+    }
+  }
+
+  grouping channel-stats-quarter-hour-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.QuarterHour.";
+    leaf xturfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURFECErrors";
+    }
+    leaf xtucfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCFECErrors";
+    }
+    leaf xturhec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURHECErrors";
+    }
+    leaf xtuchec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCHECErrors";
+    }
+    leaf xturcrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTURCRCErrors";
+    }
+    leaf xtuccrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.QuarterHour.XTUCCRCErrors";
+    }
+  }
+
+  grouping stats-showtime-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.Showtime.";
+    leaf xturfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURFECErrors";
+    }
+    leaf xtucfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCFECErrors";
+    }
+    leaf xturhec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURHECErrors";
+    }
+    leaf xtuchec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCHECErrors";
+    }
+    leaf xturcrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTURCRCErrors";
+    }
+    leaf xtuccrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Showtime.XTUCCRCErrors";
+    }
+  }
+
+  grouping channel-stats-total-g {
+    description
+      "Grouping object for Device.DSL.Channel.{i}.Stats.Total.";
+    leaf xturfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTURFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTURFECErrors";
+    }
+    leaf xtucfec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCFECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCFECErrors";
+    }
+    leaf xturhec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTURHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTURHECErrors";
+    }
+    leaf xtuchec-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCHECErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCHECErrors";
+    }
+    leaf xturcrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTURCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTURCRCErrors";
+    }
+    leaf xtuccrc-errors {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCCRCErrors";
+      reference
+        "Device.DSL.Channel.{i}.Stats.Total.XTUCCRCErrors";
+    }
+  }
+
+  grouping diagnostics-adsl-line-test-g {
+    description
+      "Grouping object for Device.DSL.Diagnostics.ADSLLineTest.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.DiagnosticsState";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.Interface";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.Interface";
+    }
+    leaf actps-dds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTPSDds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTPSDds";
+    }
+    leaf actps-dus {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTPSDus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTPSDus";
+    }
+    leaf actat-pds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTATPds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTATPds";
+    }
+    leaf actat-pus {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTATPus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.ACTATPus";
+    }
+    leaf hlins-cds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINSCds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINSCds";
+    }
+    leaf hlins-cus {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINSCus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINSCus";
+    }
+    leaf hlin-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINGds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINGds";
+    }
+    leaf hlin-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINGus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINGus";
+    }
+    leaf hlog-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGGds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGGds";
+    }
+    leaf hlog-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGGus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGGus";
+    }
+    leaf hlo-gpsds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGpsds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGpsds";
+    }
+    leaf hlo-gpsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGpsus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGpsus";
+    }
+    leaf hlogm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGMTds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGMTds";
+    }
+    leaf hlogm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGMTus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLOGMTus";
+    }
+    leaf lat-npbds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.LATNpbds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.LATNpbds";
+    }
+    leaf lat-npbus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.LATNpbus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.LATNpbus";
+    }
+    leaf sat-nds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SATNds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SATNds";
+    }
+    leaf sat-nus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SATNus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SATNus";
+    }
+    leaf hli-npsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINpsds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINpsds";
+    }
+    leaf hli-npsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINpsus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.HLINpsus";
+    }
+    leaf qln-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNGds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNGds";
+    }
+    leaf qln-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNGus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNGus";
+    }
+    leaf ql-npsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNpsds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNpsds";
+    }
+    leaf ql-npsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNpsus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNpsus";
+    }
+    leaf qlnm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNMTds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNMTds";
+    }
+    leaf qlnm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNMTus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.QLNMTus";
+    }
+    leaf snr-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRGds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRGds";
+    }
+    leaf snr-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRGus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRGus";
+    }
+    leaf sn-rpsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRpsds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRpsds";
+    }
+    leaf sn-rpsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRpsus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRpsus";
+    }
+    leaf snrm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRMTds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRMTds";
+    }
+    leaf snrm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRMTus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.SNRMTus";
+    }
+    leaf bit-spsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.BITSpsds";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.BITSpsds";
+    }
+    leaf bit-spsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Diagnostics.ADSLLineTest.BITSpsus";
+      reference
+        "Device.DSL.Diagnostics.ADSLLineTest.BITSpsus";
+    }
+  }
+
+  grouping dsl-line-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DSL.Line.{i}.Enable";
+      reference
+        "Device.DSL.Line.{i}.Enable";
+    }
+    leaf enable-data-gathering {
+      type boolean;
+      description
+        "Device.DSL.Line.{i}.EnableDataGathering";
+      reference
+        "Device.DSL.Line.{i}.EnableDataGathering";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Status";
+      reference
+        "Device.DSL.Line.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DSL.Line.{i}.Alias";
+      reference
+        "Device.DSL.Line.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Name";
+      reference
+        "Device.DSL.Line.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LastChange";
+      reference
+        "Device.DSL.Line.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.DSL.Line.{i}.LowerLayers";
+      reference
+        "Device.DSL.Line.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Upstream";
+      reference
+        "Device.DSL.Line.{i}.Upstream";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.FirmwareVersion";
+      reference
+        "Device.DSL.Line.{i}.FirmwareVersion";
+    }
+    leaf link-status {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LinkStatus";
+      reference
+        "Device.DSL.Line.{i}.LinkStatus";
+    }
+    leaf standards-supported {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.StandardsSupported";
+      reference
+        "Device.DSL.Line.{i}.StandardsSupported";
+    }
+    leaf xtse {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTSE";
+      reference
+        "Device.DSL.Line.{i}.XTSE";
+    }
+    leaf standard-used {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.StandardUsed";
+      reference
+        "Device.DSL.Line.{i}.StandardUsed";
+    }
+    leaf xts-used {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTSUsed";
+      reference
+        "Device.DSL.Line.{i}.XTSUsed";
+    }
+    leaf line-encoding {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LineEncoding";
+      reference
+        "Device.DSL.Line.{i}.LineEncoding";
+    }
+    leaf allowed-profiles {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.AllowedProfiles";
+      reference
+        "Device.DSL.Line.{i}.AllowedProfiles";
+    }
+    leaf current-profile {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.CurrentProfile";
+      reference
+        "Device.DSL.Line.{i}.CurrentProfile";
+    }
+    leaf power-management-state {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.PowerManagementState";
+      reference
+        "Device.DSL.Line.{i}.PowerManagementState";
+    }
+    leaf success-failure-cause {
+      type uint32 {
+        range "0..6";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.SuccessFailureCause";
+      reference
+        "Device.DSL.Line.{i}.SuccessFailureCause";
+    }
+    leaf upbokler {
+      type uint32 {
+        range "0..1280";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.UPBOKLER";
+      reference
+        "Device.DSL.Line.{i}.UPBOKLER";
+    }
+    leaf upbokle-pb {
+      type uint32 {
+        range "0..1280 | 2047";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.UPBOKLEPb";
+      reference
+        "Device.DSL.Line.{i}.UPBOKLEPb";
+    }
+    leaf upbokler-pb {
+      type uint32 {
+        range "0..1280 | 2047";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.UPBOKLERPb";
+      reference
+        "Device.DSL.Line.{i}.UPBOKLERPb";
+    }
+    leaf rxthrs-hds {
+      type int32 {
+        range "-640..0";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.RXTHRSHds";
+      reference
+        "Device.DSL.Line.{i}.RXTHRSHds";
+    }
+    leaf actramod-eds {
+      type uint32 {
+        range "1..4";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTRAMODEds";
+      reference
+        "Device.DSL.Line.{i}.ACTRAMODEds";
+    }
+    leaf actramod-eus {
+      type uint32 {
+        range "1..4";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTRAMODEus";
+      reference
+        "Device.DSL.Line.{i}.ACTRAMODEus";
+    }
+    leaf actinpro-cds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTINPROCds";
+      reference
+        "Device.DSL.Line.{i}.ACTINPROCds";
+    }
+    leaf actinpro-cus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTINPROCus";
+      reference
+        "Device.DSL.Line.{i}.ACTINPROCus";
+    }
+    leaf snrmro-cds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.SNRMROCds";
+      reference
+        "Device.DSL.Line.{i}.SNRMROCds";
+    }
+    leaf snrmro-cus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.SNRMROCus";
+      reference
+        "Device.DSL.Line.{i}.SNRMROCus";
+    }
+    leaf last-state-transmitted-downstream {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LastStateTransmittedDownstream";
+      reference
+        "Device.DSL.Line.{i}.LastStateTransmittedDownstream";
+    }
+    leaf last-state-transmitted-upstream {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LastStateTransmittedUpstream";
+      reference
+        "Device.DSL.Line.{i}.LastStateTransmittedUpstream";
+    }
+    leaf upbokle {
+      type uint32 {
+        range "0..1280";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.UPBOKLE";
+      reference
+        "Device.DSL.Line.{i}.UPBOKLE";
+    }
+    leaf mrefps-dds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.MREFPSDds";
+      reference
+        "Device.DSL.Line.{i}.MREFPSDds";
+    }
+    leaf mrefps-dus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.MREFPSDus";
+      reference
+        "Device.DSL.Line.{i}.MREFPSDus";
+    }
+    leaf limitmask {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LIMITMASK";
+      reference
+        "Device.DSL.Line.{i}.LIMITMASK";
+    }
+    leaf u-s0-mask {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.US0MASK";
+      reference
+        "Device.DSL.Line.{i}.US0MASK";
+    }
+    leaf trelli-sds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TRELLISds";
+      reference
+        "Device.DSL.Line.{i}.TRELLISds";
+    }
+    leaf trelli-sus {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TRELLISus";
+      reference
+        "Device.DSL.Line.{i}.TRELLISus";
+    }
+    leaf actsnrmod-eds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTSNRMODEds";
+      reference
+        "Device.DSL.Line.{i}.ACTSNRMODEds";
+    }
+    leaf actsnrmod-eus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTSNRMODEus";
+      reference
+        "Device.DSL.Line.{i}.ACTSNRMODEus";
+    }
+    leaf virtual-noise-ps-dds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.VirtualNoisePSDds";
+      reference
+        "Device.DSL.Line.{i}.VirtualNoisePSDds";
+    }
+    leaf virtual-noise-ps-dus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.VirtualNoisePSDus";
+      reference
+        "Device.DSL.Line.{i}.VirtualNoisePSDus";
+    }
+    leaf actualce {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.ACTUALCE";
+      reference
+        "Device.DSL.Line.{i}.ACTUALCE";
+    }
+    leaf line-number {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.LineNumber";
+      reference
+        "Device.DSL.Line.{i}.LineNumber";
+    }
+    leaf upstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.UpstreamMaxBitRate";
+      reference
+        "Device.DSL.Line.{i}.UpstreamMaxBitRate";
+    }
+    leaf downstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DownstreamMaxBitRate";
+      reference
+        "Device.DSL.Line.{i}.DownstreamMaxBitRate";
+    }
+    leaf upstream-noise-margin {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.UpstreamNoiseMargin";
+      reference
+        "Device.DSL.Line.{i}.UpstreamNoiseMargin";
+    }
+    leaf downstream-noise-margin {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DownstreamNoiseMargin";
+      reference
+        "Device.DSL.Line.{i}.DownstreamNoiseMargin";
+    }
+    leaf snr-mpbus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.SNRMpbus";
+      reference
+        "Device.DSL.Line.{i}.SNRMpbus";
+    }
+    leaf snr-mpbds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.SNRMpbds";
+      reference
+        "Device.DSL.Line.{i}.SNRMpbds";
+    }
+    leaf inmiat-ods {
+      type uint32 {
+        range "3..511";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.INMIATOds";
+      reference
+        "Device.DSL.Line.{i}.INMIATOds";
+    }
+    leaf inmiat-sds {
+      type uint32 {
+        range "0..7";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.INMIATSds";
+      reference
+        "Device.DSL.Line.{i}.INMIATSds";
+    }
+    leaf inmc-cds {
+      type uint32 {
+        range "0..64";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.INMCCds";
+      reference
+        "Device.DSL.Line.{i}.INMCCds";
+    }
+    leaf inminpeqmod-eds {
+      type uint32 {
+        range "0..3";
+      }
+      config false;
+      description
+        "Device.DSL.Line.{i}.INMINPEQMODEds";
+      reference
+        "Device.DSL.Line.{i}.INMINPEQMODEds";
+    }
+    leaf upstream-attenuation {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.UpstreamAttenuation";
+      reference
+        "Device.DSL.Line.{i}.UpstreamAttenuation";
+    }
+    leaf downstream-attenuation {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DownstreamAttenuation";
+      reference
+        "Device.DSL.Line.{i}.DownstreamAttenuation";
+    }
+    leaf upstream-power {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.UpstreamPower";
+      reference
+        "Device.DSL.Line.{i}.UpstreamPower";
+    }
+    leaf downstream-power {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DownstreamPower";
+      reference
+        "Device.DSL.Line.{i}.DownstreamPower";
+    }
+    leaf xtur-vendor {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTURVendor";
+      reference
+        "Device.DSL.Line.{i}.XTURVendor";
+    }
+    leaf xtur-country {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTURCountry";
+      reference
+        "Device.DSL.Line.{i}.XTURCountry";
+    }
+    leaf xturansi-std {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTURANSIStd";
+      reference
+        "Device.DSL.Line.{i}.XTURANSIStd";
+    }
+    leaf xturansi-rev {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTURANSIRev";
+      reference
+        "Device.DSL.Line.{i}.XTURANSIRev";
+    }
+    leaf xtuc-vendor {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTUCVendor";
+      reference
+        "Device.DSL.Line.{i}.XTUCVendor";
+    }
+    leaf xtuc-country {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTUCCountry";
+      reference
+        "Device.DSL.Line.{i}.XTUCCountry";
+    }
+    leaf xtucansi-std {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTUCANSIStd";
+      reference
+        "Device.DSL.Line.{i}.XTUCANSIStd";
+    }
+    leaf xtucansi-rev {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.XTUCANSIRev";
+      reference
+        "Device.DSL.Line.{i}.XTUCANSIRev";
+    }
+  }
+
+  grouping line-data-gathering-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.DataGathering.";
+    leaf logging-depth-r {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DataGathering.LoggingDepthR";
+      reference
+        "Device.DSL.Line.{i}.DataGathering.LoggingDepthR";
+    }
+    leaf act-logging-depth-reporting-r {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DataGathering.ActLoggingDepthReportingR";
+      reference
+        "Device.DSL.Line.{i}.DataGathering.ActLoggingDepthReportingR";
+    }
+    leaf event-trace-buffer-r {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.DataGathering.EventTraceBufferR";
+      reference
+        "Device.DSL.Line.{i}.DataGathering.EventTraceBufferR";
+    }
+  }
+
+  grouping line-stats-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.BytesSent";
+      reference
+        "Device.DSL.Line.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.BytesReceived";
+      reference
+        "Device.DSL.Line.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.PacketsSent";
+      reference
+        "Device.DSL.Line.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.PacketsReceived";
+      reference
+        "Device.DSL.Line.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.ErrorsSent";
+      reference
+        "Device.DSL.Line.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.DSL.Line.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.DSL.Line.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.DSL.Line.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf total-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.TotalStart";
+      reference
+        "Device.DSL.Line.{i}.Stats.TotalStart";
+    }
+    leaf showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.ShowtimeStart";
+      reference
+        "Device.DSL.Line.{i}.Stats.ShowtimeStart";
+    }
+    leaf last-showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.LastShowtimeStart";
+      reference
+        "Device.DSL.Line.{i}.Stats.LastShowtimeStart";
+    }
+    leaf current-day-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.CurrentDayStart";
+      reference
+        "Device.DSL.Line.{i}.Stats.CurrentDayStart";
+    }
+    leaf quarter-hour-start {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.QuarterHourStart";
+      reference
+        "Device.DSL.Line.{i}.Stats.QuarterHourStart";
+    }
+  }
+
+  grouping line-stats-current-day-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.CurrentDay.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.CurrentDay.ErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.CurrentDay.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.CurrentDay.SeverelyErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.CurrentDay.SeverelyErroredSecs";
+    }
+  }
+
+  grouping line-stats-last-showtime-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.LastShowtime.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.LastShowtime.ErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.LastShowtime.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.LastShowtime.SeverelyErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.LastShowtime.SeverelyErroredSecs";
+    }
+  }
+
+  grouping line-stats-quarter-hour-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.QuarterHour.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.QuarterHour.ErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.QuarterHour.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.QuarterHour.SeverelyErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.QuarterHour.SeverelyErroredSecs";
+    }
+  }
+
+  grouping line-stats-showtime-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.Showtime.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.Showtime.ErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.Showtime.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.Showtime.SeverelyErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.Showtime.SeverelyErroredSecs";
+    }
+  }
+
+  grouping line-stats-total-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.Stats.Total.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.Total.ErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.Total.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.Stats.Total.SeverelyErroredSecs";
+      reference
+        "Device.DSL.Line.{i}.Stats.Total.SeverelyErroredSecs";
+    }
+  }
+
+  grouping line-test-params-g {
+    description
+      "Grouping object for Device.DSL.Line.{i}.TestParams.";
+    leaf hlog-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGGds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGGds";
+    }
+    leaf hlog-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGGus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGGus";
+    }
+    leaf hlo-gpsds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGpsds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGpsds";
+    }
+    leaf hlo-gpsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGpsus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGpsus";
+    }
+    leaf hlogm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGMTds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGMTds";
+    }
+    leaf hlogm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.HLOGMTus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.HLOGMTus";
+    }
+    leaf qln-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNGds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNGds";
+    }
+    leaf qln-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNGus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNGus";
+    }
+    leaf ql-npsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNpsds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNpsds";
+    }
+    leaf ql-npsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNpsus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNpsus";
+    }
+    leaf qlnm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNMTds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNMTds";
+    }
+    leaf qlnm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.QLNMTus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.QLNMTus";
+    }
+    leaf snr-gds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRGds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRGds";
+    }
+    leaf snr-gus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRGus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRGus";
+    }
+    leaf sn-rpsds {
+      type int32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRpsds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRpsds";
+    }
+    leaf sn-rpsus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRpsus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRpsus";
+    }
+    leaf snrm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRMTds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRMTds";
+    }
+    leaf snrm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SNRMTus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SNRMTus";
+    }
+    leaf lat-nds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.LATNds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.LATNds";
+    }
+    leaf lat-nus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.LATNus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.LATNus";
+    }
+    leaf sat-nds {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SATNds";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SATNds";
+    }
+    leaf sat-nus {
+      type string;
+      config false;
+      description
+        "Device.DSL.Line.{i}.TestParams.SATNus";
+      reference
+        "Device.DSL.Line.{i}.TestParams.SATNus";
+    }
+  }
+
+  grouping device-ds-lite-g {
+    description
+      "Grouping object for Device.DSLite.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.DSLite.Enable";
+      reference
+        "Device.DSLite.Enable";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DSLite.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.DSLite.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping ds-lite-interface-setting-g {
+    description
+      "Grouping object for Device.DSLite.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.Status";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DSLite.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.Alias";
+    }
+    leaf endpoint-assignment-precedence {
+      type enumeration {
+        enum DHCPv6 {
+          description
+            "Enum Value - DHCPv6";
+        }
+        enum Static {
+          description
+            "Enum Value - Static";
+        }
+      }
+      description
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAssignmentPrecedence";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAssignmentPrecedence";
+    }
+    leaf endpoint-address-type-precedence {
+      type enumeration {
+        enum FQDN {
+          description
+            "Enum Value - FQDN";
+        }
+        enum IPv6Address {
+          description
+            "Enum Value - IPv6Address";
+        }
+      }
+      description
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddressTypePrecedence";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddressTypePrecedence";
+    }
+    leaf endpoint-address-in-use {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddressInUse";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddressInUse";
+    }
+    leaf endpoint-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DSLite.InterfaceSetting.{i}.EndpointName";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.EndpointName";
+    }
+    leaf endpoint-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddress";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.EndpointAddress";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.Origin";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.Origin";
+    }
+    leaf tunnel-interface {
+      type string;
+      config false;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.TunnelInterface";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.TunnelInterface";
+    }
+    leaf tunneled-interface {
+      type string;
+      config false;
+      description
+        "Device.DSLite.InterfaceSetting.{i}.TunneledInterface";
+      reference
+        "Device.DSLite.InterfaceSetting.{i}.TunneledInterface";
+    }
+  }
+
+  grouping device-device-info-g {
+    description
+      "Grouping object for Device.DeviceInfo.";
+    leaf device-category {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.DeviceCategory";
+      reference
+        "Device.DeviceInfo.DeviceCategory";
+    }
+    leaf manufacturer {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Manufacturer";
+      reference
+        "Device.DeviceInfo.Manufacturer";
+    }
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ManufacturerOUI";
+      reference
+        "Device.DeviceInfo.ManufacturerOUI";
+    }
+    leaf supported-data-model-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.SupportedDataModelNumberOfEntries";
+      reference
+        "Device.DeviceInfo.SupportedDataModelNumberOfEntries";
+    }
+    leaf model-name {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ModelName";
+      reference
+        "Device.DeviceInfo.ModelName";
+    }
+    leaf model-number {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ModelNumber";
+      reference
+        "Device.DeviceInfo.ModelNumber";
+    }
+    leaf description {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Description";
+      reference
+        "Device.DeviceInfo.Description";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProductClass";
+      reference
+        "Device.DeviceInfo.ProductClass";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.SerialNumber";
+      reference
+        "Device.DeviceInfo.SerialNumber";
+    }
+    leaf hardware-version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.HardwareVersion";
+      reference
+        "Device.DeviceInfo.HardwareVersion";
+    }
+    leaf software-version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.SoftwareVersion";
+      reference
+        "Device.DeviceInfo.SoftwareVersion";
+    }
+    leaf active-firmware-image {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ActiveFirmwareImage";
+      reference
+        "Device.DeviceInfo.ActiveFirmwareImage";
+    }
+    leaf boot-firmware-image {
+      type string;
+      description
+        "Device.DeviceInfo.BootFirmwareImage";
+      reference
+        "Device.DeviceInfo.BootFirmwareImage";
+    }
+    leaf additional-hardware-version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.AdditionalHardwareVersion";
+      reference
+        "Device.DeviceInfo.AdditionalHardwareVersion";
+    }
+    leaf additional-software-version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.AdditionalSoftwareVersion";
+      reference
+        "Device.DeviceInfo.AdditionalSoftwareVersion";
+    }
+    leaf provisioning-code {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.ProvisioningCode";
+      reference
+        "Device.DeviceInfo.ProvisioningCode";
+    }
+    leaf up-time {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.UpTime";
+      reference
+        "Device.DeviceInfo.UpTime";
+    }
+    leaf first-use-date {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.FirstUseDate";
+      reference
+        "Device.DeviceInfo.FirstUseDate";
+    }
+    leaf firmware-image-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.FirmwareImageNumberOfEntries";
+      reference
+        "Device.DeviceInfo.FirmwareImageNumberOfEntries";
+    }
+    leaf vendor-config-file-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFileNumberOfEntries";
+      reference
+        "Device.DeviceInfo.VendorConfigFileNumberOfEntries";
+    }
+    leaf processor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessorNumberOfEntries";
+      reference
+        "Device.DeviceInfo.ProcessorNumberOfEntries";
+    }
+    leaf vendor-log-file-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.VendorLogFileNumberOfEntries";
+      reference
+        "Device.DeviceInfo.VendorLogFileNumberOfEntries";
+    }
+    leaf location-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.LocationNumberOfEntries";
+      reference
+        "Device.DeviceInfo.LocationNumberOfEntries";
+    }
+    leaf device-image-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.DeviceImageNumberOfEntries";
+      reference
+        "Device.DeviceInfo.DeviceImageNumberOfEntries";
+    }
+  }
+
+  grouping device-info-device-image-file-g {
+    description
+      "Grouping object for Device.DeviceInfo.DeviceImageFile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.DeviceImageFile.{i}.Alias";
+      reference
+        "Device.DeviceInfo.DeviceImageFile.{i}.Alias";
+    }
+    leaf location {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.DeviceImageFile.{i}.Location";
+      reference
+        "Device.DeviceInfo.DeviceImageFile.{i}.Location";
+    }
+    leaf image {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.DeviceImageFile.{i}.Image";
+      reference
+        "Device.DeviceInfo.DeviceImageFile.{i}.Image";
+    }
+  }
+
+  grouping device-info-firmware-image-g {
+    description
+      "Grouping object for Device.DeviceInfo.FirmwareImage.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.Alias";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.Name";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.Name";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.Version";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.Version";
+    }
+    leaf available {
+      type boolean;
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.Available";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.Available";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.Status";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.Status";
+    }
+    leaf boot-failure-log {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.FirmwareImage.{i}.BootFailureLog";
+      reference
+        "Device.DeviceInfo.FirmwareImage.{i}.BootFailureLog";
+    }
+  }
+
+  grouping device-info-location-g {
+    description
+      "Grouping object for Device.DeviceInfo.Location.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf source {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Location.{i}.Source";
+      reference
+        "Device.DeviceInfo.Location.{i}.Source";
+    }
+    leaf acquired-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Location.{i}.AcquiredTime";
+      reference
+        "Device.DeviceInfo.Location.{i}.AcquiredTime";
+    }
+    leaf external-source {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Location.{i}.ExternalSource";
+      reference
+        "Device.DeviceInfo.Location.{i}.ExternalSource";
+    }
+    leaf external-protocol {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Location.{i}.ExternalProtocol";
+      reference
+        "Device.DeviceInfo.Location.{i}.ExternalProtocol";
+    }
+    leaf data-object {
+      type string {
+        length "min..1200";
+      }
+      description
+        "Device.DeviceInfo.Location.{i}.DataObject";
+      reference
+        "Device.DeviceInfo.Location.{i}.DataObject";
+    }
+  }
+
+  grouping device-info-memory-status-g {
+    description
+      "Grouping object for Device.DeviceInfo.MemoryStatus.";
+    leaf total {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.MemoryStatus.Total";
+      reference
+        "Device.DeviceInfo.MemoryStatus.Total";
+    }
+    leaf free {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.MemoryStatus.Free";
+      reference
+        "Device.DeviceInfo.MemoryStatus.Free";
+    }
+  }
+
+  grouping device-info-network-properties-g {
+    description
+      "Grouping object for Device.DeviceInfo.NetworkProperties.";
+    leaf max-tcp-window-size {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.NetworkProperties.MaxTCPWindowSize";
+      reference
+        "Device.DeviceInfo.NetworkProperties.MaxTCPWindowSize";
+    }
+    leaf tcp-implementation {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.NetworkProperties.TCPImplementation";
+      reference
+        "Device.DeviceInfo.NetworkProperties.TCPImplementation";
+    }
+  }
+
+  grouping device-info-process-status-g {
+    description
+      "Grouping object for Device.DeviceInfo.ProcessStatus.";
+    leaf cpu-usage {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.CPUUsage";
+      reference
+        "Device.DeviceInfo.ProcessStatus.CPUUsage";
+    }
+    leaf process-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.ProcessNumberOfEntries";
+      reference
+        "Device.DeviceInfo.ProcessStatus.ProcessNumberOfEntries";
+    }
+  }
+
+  grouping process-status-process-g {
+    description
+      "Grouping object for Device.DeviceInfo.ProcessStatus.Process.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf pid {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.PID";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.PID";
+    }
+    leaf command {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Command";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Command";
+    }
+    leaf size {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Size";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Size";
+    }
+    leaf priority {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Priority";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.Priority";
+    }
+    leaf cpu-time {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.CPUTime";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.CPUTime";
+    }
+    leaf state {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.State";
+      reference
+        "Device.DeviceInfo.ProcessStatus.Process.{i}.State";
+    }
+  }
+
+  grouping device-info-processor-g {
+    description
+      "Grouping object for Device.DeviceInfo.Processor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.Processor.{i}.Alias";
+      reference
+        "Device.DeviceInfo.Processor.{i}.Alias";
+    }
+    leaf architecture {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.Processor.{i}.Architecture";
+      reference
+        "Device.DeviceInfo.Processor.{i}.Architecture";
+    }
+  }
+
+  grouping device-info-proxier-info-g {
+    description
+      "Grouping object for Device.DeviceInfo.ProxierInfo.";
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProxierInfo.ManufacturerOUI";
+      reference
+        "Device.DeviceInfo.ProxierInfo.ManufacturerOUI";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProxierInfo.ProductClass";
+      reference
+        "Device.DeviceInfo.ProxierInfo.ProductClass";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProxierInfo.SerialNumber";
+      reference
+        "Device.DeviceInfo.ProxierInfo.SerialNumber";
+    }
+    leaf proxy-protocol {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.ProxierInfo.ProxyProtocol";
+      reference
+        "Device.DeviceInfo.ProxierInfo.ProxyProtocol";
+    }
+  }
+
+  grouping device-info-supported-data-model-g {
+    description
+      "Grouping object for Device.DeviceInfo.SupportedDataModel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.SupportedDataModel.{i}.Alias";
+      reference
+        "Device.DeviceInfo.SupportedDataModel.{i}.Alias";
+    }
+    leaf url {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.SupportedDataModel.{i}.URL";
+      reference
+        "Device.DeviceInfo.SupportedDataModel.{i}.URL";
+    }
+    leaf uuid {
+      type string {
+        length "min..36";
+      }
+      config false;
+      description
+        "Device.DeviceInfo.SupportedDataModel.{i}.UUID";
+      reference
+        "Device.DeviceInfo.SupportedDataModel.{i}.UUID";
+    }
+    leaf urn {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.SupportedDataModel.{i}.URN";
+      reference
+        "Device.DeviceInfo.SupportedDataModel.{i}.URN";
+    }
+    leaf features {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.SupportedDataModel.{i}.Features";
+      reference
+        "Device.DeviceInfo.SupportedDataModel.{i}.Features";
+    }
+  }
+
+  grouping device-info-temperature-status-g {
+    description
+      "Grouping object for Device.DeviceInfo.TemperatureStatus.";
+    leaf temperature-sensor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensorNumberOfEntries";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensorNumberOfEntries";
+    }
+  }
+
+  grouping temperature-status-temperature-sensor-g {
+    description
+      "Grouping object for Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Alias";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Enable";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Status";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Status";
+    }
+    leaf reset-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.ResetTime";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.ResetTime";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Name";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Name";
+    }
+    leaf value {
+      type int32;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Value";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.Value";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LastUpdate";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LastUpdate";
+    }
+    leaf min-value {
+      type int32;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MinValue";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MinValue";
+    }
+    leaf min-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MinTime";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MinTime";
+    }
+    leaf max-value {
+      type int32;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MaxValue";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MaxValue";
+    }
+    leaf max-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MaxTime";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.MaxTime";
+    }
+    leaf low-alarm-value {
+      type int32 {
+        range "-274..max";
+      }
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LowAlarmValue";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LowAlarmValue";
+    }
+    leaf low-alarm-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LowAlarmTime";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.LowAlarmTime";
+    }
+    leaf high-alarm-value {
+      type int32 {
+        range "-274..max";
+      }
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.HighAlarmValue";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.HighAlarmValue";
+    }
+    leaf polling-interval {
+      type uint32;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.PollingInterval";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.PollingInterval";
+    }
+    leaf high-alarm-time {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.HighAlarmTime";
+      reference
+        "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.HighAlarmTime";
+    }
+  }
+
+  grouping device-info-vendor-config-file-g {
+    description
+      "Grouping object for Device.DeviceInfo.VendorConfigFile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.Alias";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.Name";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.Name";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.Version";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.Version";
+    }
+    leaf date {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.Date";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.Date";
+    }
+    leaf description {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.Description";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.Description";
+    }
+    leaf use-for-backup-restore {
+      type boolean;
+      config false;
+      description
+        "Device.DeviceInfo.VendorConfigFile.{i}.UseForBackupRestore";
+      reference
+        "Device.DeviceInfo.VendorConfigFile.{i}.UseForBackupRestore";
+    }
+  }
+
+  grouping device-info-vendor-log-file-g {
+    description
+      "Grouping object for Device.DeviceInfo.VendorLogFile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DeviceInfo.VendorLogFile.{i}.Alias";
+      reference
+        "Device.DeviceInfo.VendorLogFile.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.DeviceInfo.VendorLogFile.{i}.Name";
+      reference
+        "Device.DeviceInfo.VendorLogFile.{i}.Name";
+    }
+    leaf maximum-size {
+      type uint32;
+      config false;
+      description
+        "Device.DeviceInfo.VendorLogFile.{i}.MaximumSize";
+      reference
+        "Device.DeviceInfo.VendorLogFile.{i}.MaximumSize";
+    }
+    leaf persistent {
+      type boolean;
+      config false;
+      description
+        "Device.DeviceInfo.VendorLogFile.{i}.Persistent";
+      reference
+        "Device.DeviceInfo.VendorLogFile.{i}.Persistent";
+    }
+  }
+
+  grouping device-dynamic-dns-g {
+    description
+      "Grouping object for Device.DynamicDNS.";
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DynamicDNS.ClientNumberOfEntries";
+      reference
+        "Device.DynamicDNS.ClientNumberOfEntries";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DynamicDNS.ServerNumberOfEntries";
+      reference
+        "Device.DynamicDNS.ServerNumberOfEntries";
+    }
+    leaf supported-services {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.SupportedServices";
+      reference
+        "Device.DynamicDNS.SupportedServices";
+    }
+  }
+
+  grouping dynamic-dns-client-g {
+    description
+      "Grouping object for Device.DynamicDNS.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DynamicDNS.Client.{i}.Enable";
+      reference
+        "Device.DynamicDNS.Client.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.Client.{i}.Status";
+      reference
+        "Device.DynamicDNS.Client.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DynamicDNS.Client.{i}.Alias";
+      reference
+        "Device.DynamicDNS.Client.{i}.Alias";
+    }
+    leaf last-error {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.Client.{i}.LastError";
+      reference
+        "Device.DynamicDNS.Client.{i}.LastError";
+    }
+    leaf server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Client.{i}.Server";
+      reference
+        "Device.DynamicDNS.Client.{i}.Server";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Client.{i}.Interface";
+      reference
+        "Device.DynamicDNS.Client.{i}.Interface";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Client.{i}.Username";
+      reference
+        "Device.DynamicDNS.Client.{i}.Username";
+    }
+    leaf hostname-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.DynamicDNS.Client.{i}.HostnameNumberOfEntries";
+      reference
+        "Device.DynamicDNS.Client.{i}.HostnameNumberOfEntries";
+    }
+  }
+
+  grouping client-hostname-g {
+    description
+      "Grouping object for Device.DynamicDNS.Client.{i}.Hostname.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Enable";
+      reference
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Status";
+      reference
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Status";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Name";
+      reference
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.Name";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.LastUpdate";
+      reference
+        "Device.DynamicDNS.Client.{i}.Hostname.{i}.LastUpdate";
+    }
+  }
+
+  grouping dynamic-dns-server-g {
+    description
+      "Grouping object for Device.DynamicDNS.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.Enable";
+      reference
+        "Device.DynamicDNS.Server.{i}.Enable";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.Name";
+      reference
+        "Device.DynamicDNS.Server.{i}.Name";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.Alias";
+      reference
+        "Device.DynamicDNS.Server.{i}.Alias";
+    }
+    leaf service-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.ServiceName";
+      reference
+        "Device.DynamicDNS.Server.{i}.ServiceName";
+    }
+    leaf server-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.ServerAddress";
+      reference
+        "Device.DynamicDNS.Server.{i}.ServerAddress";
+    }
+    leaf server-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.DynamicDNS.Server.{i}.ServerPort";
+      reference
+        "Device.DynamicDNS.Server.{i}.ServerPort";
+    }
+    leaf supported-protocols {
+      type string;
+      config false;
+      description
+        "Device.DynamicDNS.Server.{i}.SupportedProtocols";
+      reference
+        "Device.DynamicDNS.Server.{i}.SupportedProtocols";
+    }
+    leaf protocol {
+      type string;
+      description
+        "Device.DynamicDNS.Server.{i}.Protocol";
+      reference
+        "Device.DynamicDNS.Server.{i}.Protocol";
+    }
+    leaf check-interval {
+      type uint32;
+      description
+        "Device.DynamicDNS.Server.{i}.CheckInterval";
+      reference
+        "Device.DynamicDNS.Server.{i}.CheckInterval";
+    }
+    leaf retry-interval {
+      type uint32;
+      description
+        "Device.DynamicDNS.Server.{i}.RetryInterval";
+      reference
+        "Device.DynamicDNS.Server.{i}.RetryInterval";
+    }
+    leaf max-retries {
+      type uint32;
+      description
+        "Device.DynamicDNS.Server.{i}.MaxRetries";
+      reference
+        "Device.DynamicDNS.Server.{i}.MaxRetries";
+    }
+  }
+
+  grouping device-etsi-m2-m-g {
+    description
+      "Grouping object for Device.ETSIM2M.";
+    leaf scl-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCLNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCLNumberOfEntries";
+    }
+  }
+
+  grouping etsi-m2-m-scl-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Alias";
+    }
+    leaf announced-to-scl-list {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.AnnouncedToSCLList";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AnnouncedToSCLList";
+    }
+    leaf saf-policy-set-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySetNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySetNumberOfEntries";
+    }
+    leaf area-nwk-instance-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstanceNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstanceNumberOfEntries";
+    }
+    leaf area-nwk-device-info-instance-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstanceNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstanceNumberOfEntries";
+    }
+  }
+
+  grouping scl-area-nwk-device-info-instance-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf area-nwk-instance {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.AreaNwkInstance";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.AreaNwkInstance";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Host";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Host";
+    }
+    leaf list-of-device-neighbors {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.ListOfDeviceNeighbors";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.ListOfDeviceNeighbors";
+    }
+    leaf list-of-device-applications {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.ListOfDeviceApplications";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.ListOfDeviceApplications";
+    }
+    leaf sleep-interval {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.SleepInterval";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.SleepInterval";
+    }
+    leaf sleep-duration {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.SleepDuration";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.SleepDuration";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Status";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Status";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Active";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Active";
+    }
+    leaf property-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.PropertyNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.PropertyNumberOfEntries";
+    }
+  }
+
+  grouping area-nwk-device-info-instance-property-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.Name";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.Name";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.Value";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.Value";
+    }
+  }
+
+  grouping scl-area-nwk-instance-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf id {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.ID";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.ID";
+    }
+    leaf area-nwk-type {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.AreaNwkType";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.AreaNwkType";
+    }
+    leaf list-of-devices {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.ListOfDevices";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.ListOfDevices";
+    }
+    leaf property-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.PropertyNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.PropertyNumberOfEntries";
+    }
+  }
+
+  grouping area-nwk-instance-property-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.Name";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.Name";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.Value";
+      reference
+        "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.Value";
+    }
+  }
+
+  grouping scl-discovery-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.Discovery.";
+    leaf max-number-of-discov-records {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.Discovery.MaxNumberOfDiscovRecords";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Discovery.MaxNumberOfDiscovRecords";
+    }
+    leaf max-size-of-discov-answer {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.Discovery.MaxSizeOfDiscovAnswer";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Discovery.MaxSizeOfDiscovAnswer";
+    }
+  }
+
+  grouping scl-reregistration-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.Reregistration.";
+    leaf reg-target-nscl-list {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegTargetNSCLList";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegTargetNSCLList";
+    }
+    leaf reg-search-strings {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegSearchStrings";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegSearchStrings";
+    }
+    leaf reg-access-right-id {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegAccessRightID";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegAccessRightID";
+    }
+    leaf reg-expiration-duration {
+      type int32;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegExpirationDuration";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.RegExpirationDuration";
+    }
+  }
+
+  grouping reregistration-action-status-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.";
+    leaf progress {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.Progress";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.Progress";
+    }
+    leaf final-status {
+      type string;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.FinalStatus";
+      reference
+        "Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.FinalStatus";
+    }
+  }
+
+  grouping scl-saf-policy-set-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.Alias";
+    }
+    leaf policy-scope {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.PolicyScope";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.PolicyScope";
+    }
+    leaf anp-policy-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicyNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicyNumberOfEntries";
+    }
+  }
+
+  grouping saf-policy-set-anp-policy-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.Alias";
+    }
+    leaf an-name {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.ANName";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.ANName";
+    }
+    leaf block-period-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriodNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriodNumberOfEntries";
+    }
+    leaf request-category-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategoryNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategoryNumberOfEntries";
+    }
+  }
+
+  grouping anp-policy-block-period-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.Alias";
+    }
+    leaf failed-attempts {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.FailedAttempts";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.FailedAttempts";
+    }
+    leaf block-duration {
+      type int32;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.BlockDuration";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.BlockDuration";
+    }
+  }
+
+  grouping anp-policy-request-category-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Alias";
+    }
+    leaf rcat {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.RCAT";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.RCAT";
+    }
+    leaf schedule-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.ScheduleNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.ScheduleNumberOfEntries";
+    }
+  }
+
+  grouping request-category-schedule-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Alias";
+    }
+    leaf schedules {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Schedules";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.Schedules";
+    }
+    leaf abs-time-span-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpanNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpanNumberOfEntries";
+    }
+  }
+
+  grouping schedule-abs-time-span-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.Alias";
+    }
+    leaf start-time {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.StartTime";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.StartTime";
+    }
+    leaf end-time {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.EndTime";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.EndTime";
+    }
+  }
+
+  grouping saf-policy-set-m2-msp-policy-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.";
+    leaf default-rcat-value {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.DefaultRCATValue";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.DefaultRCATValue";
+    }
+    leaf request-category-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategoryNumberOfEntries";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategoryNumberOfEntries";
+    }
+  }
+
+  grouping m2-msp-policy-request-category-g {
+    description
+      "Grouping object for Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Enable";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Alias";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Alias";
+    }
+    leaf rcat {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.RCAT";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.RCAT";
+    }
+    leaf tolerable-delay {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.TolerableDelay";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.TolerableDelay";
+    }
+    leaf thresh {
+      type uint32;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Thresh";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Thresh";
+    }
+    leaf mem {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Mem";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.Mem";
+    }
+    leaf ranked-an-list {
+      type string;
+      description
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.RankedANList";
+      reference
+        "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.RankedANList";
+    }
+  }
+
+  grouping device-ethernet-g {
+    description
+      "Grouping object for Device.Ethernet.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.InterfaceNumberOfEntries";
+      reference
+        "Device.Ethernet.InterfaceNumberOfEntries";
+    }
+    leaf link-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LinkNumberOfEntries";
+      reference
+        "Device.Ethernet.LinkNumberOfEntries";
+    }
+    leaf vlan-termination-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTerminationNumberOfEntries";
+      reference
+        "Device.Ethernet.VLANTerminationNumberOfEntries";
+    }
+    leaf rmon-stats-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.RMONStatsNumberOfEntries";
+      reference
+        "Device.Ethernet.RMONStatsNumberOfEntries";
+    }
+    leaf lag-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAGNumberOfEntries";
+      reference
+        "Device.Ethernet.LAGNumberOfEntries";
+    }
+  }
+
+  grouping ethernet-interface-g {
+    description
+      "Grouping object for Device.Ethernet.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ethernet.Interface.{i}.Enable";
+      reference
+        "Device.Ethernet.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Status";
+      reference
+        "Device.Ethernet.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ethernet.Interface.{i}.Alias";
+      reference
+        "Device.Ethernet.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Name";
+      reference
+        "Device.Ethernet.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.LastChange";
+      reference
+        "Device.Ethernet.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Ethernet.Interface.{i}.LowerLayers";
+      reference
+        "Device.Ethernet.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Upstream";
+      reference
+        "Device.Ethernet.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.MACAddress";
+      reference
+        "Device.Ethernet.Interface.{i}.MACAddress";
+    }
+    leaf max-bit-rate {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.Ethernet.Interface.{i}.MaxBitRate";
+      reference
+        "Device.Ethernet.Interface.{i}.MaxBitRate";
+    }
+    leaf current-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.CurrentBitRate";
+      reference
+        "Device.Ethernet.Interface.{i}.CurrentBitRate";
+    }
+    leaf duplex-mode {
+      type enumeration {
+        enum Half {
+          description
+            "Enum Value - Half";
+        }
+        enum Full {
+          description
+            "Enum Value - Full";
+        }
+        enum Auto {
+          description
+            "Enum Value - Auto";
+        }
+      }
+      description
+        "Device.Ethernet.Interface.{i}.DuplexMode";
+      reference
+        "Device.Ethernet.Interface.{i}.DuplexMode";
+    }
+    leaf eee-capability {
+      type boolean;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.EEECapability";
+      reference
+        "Device.Ethernet.Interface.{i}.EEECapability";
+    }
+    leaf eee-enable {
+      type boolean;
+      description
+        "Device.Ethernet.Interface.{i}.EEEEnable";
+      reference
+        "Device.Ethernet.Interface.{i}.EEEEnable";
+    }
+  }
+
+  grouping ethernet-interface-stats-g {
+    description
+      "Grouping object for Device.Ethernet.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ethernet.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping ethernet-lag-g {
+    description
+      "Grouping object for Device.Ethernet.LAG.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ethernet.LAG.{i}.Enable";
+      reference
+        "Device.Ethernet.LAG.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Status";
+      reference
+        "Device.Ethernet.LAG.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ethernet.LAG.{i}.Alias";
+      reference
+        "Device.Ethernet.LAG.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Name";
+      reference
+        "Device.Ethernet.LAG.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.LastChange";
+      reference
+        "Device.Ethernet.LAG.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Ethernet.LAG.{i}.LowerLayers";
+      reference
+        "Device.Ethernet.LAG.{i}.LowerLayers";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.Ethernet.LAG.{i}.MACAddress";
+      reference
+        "Device.Ethernet.LAG.{i}.MACAddress";
+    }
+  }
+
+  grouping lag-stats-g {
+    description
+      "Grouping object for Device.Ethernet.LAG.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.BytesSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.BytesReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.PacketsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.LAG.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ethernet.LAG.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping ethernet-link-g {
+    description
+      "Grouping object for Device.Ethernet.Link.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ethernet.Link.{i}.Enable";
+      reference
+        "Device.Ethernet.Link.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Status";
+      reference
+        "Device.Ethernet.Link.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ethernet.Link.{i}.Alias";
+      reference
+        "Device.Ethernet.Link.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Name";
+      reference
+        "Device.Ethernet.Link.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.LastChange";
+      reference
+        "Device.Ethernet.Link.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Ethernet.Link.{i}.LowerLayers";
+      reference
+        "Device.Ethernet.Link.{i}.LowerLayers";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.MACAddress";
+      reference
+        "Device.Ethernet.Link.{i}.MACAddress";
+    }
+    leaf priority-tagging {
+      type boolean;
+      description
+        "Device.Ethernet.Link.{i}.PriorityTagging";
+      reference
+        "Device.Ethernet.Link.{i}.PriorityTagging";
+    }
+  }
+
+  grouping ethernet-link-stats-g {
+    description
+      "Grouping object for Device.Ethernet.Link.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.BytesSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.BytesReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.PacketsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.Link.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ethernet.Link.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping ethernet-rmon-stats-g {
+    description
+      "Grouping object for Device.Ethernet.RMONStats.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ethernet.RMONStats.{i}.Enable";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Status";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ethernet.RMONStats.{i}.Alias";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Name";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Name";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.Ethernet.RMONStats.{i}.Interface";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Interface";
+    }
+    leaf vlanid {
+      type uint32 {
+        range "0..4094";
+      }
+      description
+        "Device.Ethernet.RMONStats.{i}.VLANID";
+      reference
+        "Device.Ethernet.RMONStats.{i}.VLANID";
+    }
+    leaf queue {
+      type string;
+      description
+        "Device.Ethernet.RMONStats.{i}.Queue";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Queue";
+    }
+    leaf all-queues {
+      type boolean;
+      description
+        "Device.Ethernet.RMONStats.{i}.AllQueues";
+      reference
+        "Device.Ethernet.RMONStats.{i}.AllQueues";
+    }
+    leaf drop-events {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.DropEvents";
+      reference
+        "Device.Ethernet.RMONStats.{i}.DropEvents";
+    }
+    leaf bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Bytes";
+    }
+    leaf packets {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets";
+    }
+    leaf broadcast-packets {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.BroadcastPackets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.BroadcastPackets";
+    }
+    leaf multicast-packets {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.MulticastPackets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.MulticastPackets";
+    }
+    leaf crc-errored-packets {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.CRCErroredPackets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.CRCErroredPackets";
+    }
+    leaf undersize-packets {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.UndersizePackets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.UndersizePackets";
+    }
+    leaf oversize-packets {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.OversizePackets";
+      reference
+        "Device.Ethernet.RMONStats.{i}.OversizePackets";
+    }
+    leaf packets64-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets64Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets64Bytes";
+    }
+    leaf packets65to127-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets65to127Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets65to127Bytes";
+    }
+    leaf packets128to255-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets128to255Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets128to255Bytes";
+    }
+    leaf packets256to511-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets256to511Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets256to511Bytes";
+    }
+    leaf packets512to1023-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets512to1023Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets512to1023Bytes";
+    }
+    leaf packets1024to1518-bytes {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.RMONStats.{i}.Packets1024to1518Bytes";
+      reference
+        "Device.Ethernet.RMONStats.{i}.Packets1024to1518Bytes";
+    }
+  }
+
+  grouping ethernet-vlan-termination-g {
+    description
+      "Grouping object for Device.Ethernet.VLANTermination.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Enable";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Status";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ethernet.VLANTermination.{i}.Alias";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Name";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.LastChange";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Ethernet.VLANTermination.{i}.LowerLayers";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.LowerLayers";
+    }
+    leaf vlanid {
+      type uint32 {
+        range "1..4094";
+      }
+      description
+        "Device.Ethernet.VLANTermination.{i}.VLANID";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.VLANID";
+    }
+    leaf tpid {
+      type uint32;
+      description
+        "Device.Ethernet.VLANTermination.{i}.TPID";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.TPID";
+    }
+  }
+
+  grouping vlan-termination-stats-g {
+    description
+      "Grouping object for Device.Ethernet.VLANTermination.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.BytesSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.BytesReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.PacketsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ethernet.VLANTermination.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping fap-application-platform-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.";
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Version";
+      reference
+        "Device.FAP.ApplicationPlatform.Version";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Enable";
+      reference
+        "Device.FAP.ApplicationPlatform.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Status";
+      reference
+        "Device.FAP.ApplicationPlatform.Status";
+    }
+    leaf max-number-of-applications {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.MaxNumberOfApplications";
+      reference
+        "Device.FAP.ApplicationPlatform.MaxNumberOfApplications";
+    }
+    leaf current-numberof-applications {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.CurrentNumberofApplications";
+      reference
+        "Device.FAP.ApplicationPlatform.CurrentNumberofApplications";
+    }
+  }
+
+  grouping application-platform-capabilities-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Capabilities.";
+    leaf presence-application-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.PresenceApplicationSupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.PresenceApplicationSupport";
+    }
+    leaf femto-awareness-api-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.FemtoAwarenessAPISupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.FemtoAwarenessAPISupport";
+    }
+    leaf smsapi-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.SMSAPISupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.SMSAPISupport";
+    }
+    leaf subscribe-to-notifications-of-sms-sent-to-application-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.SubscribeToNotificationsOfSMSSentToApplicationSupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.SubscribeToNotificationsOfSMSSentToApplicationSupport";
+    }
+    leaf query-sms-delivery-status-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.QuerySMSDeliveryStatusSupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.QuerySMSDeliveryStatusSupport";
+    }
+    leaf mmsapi-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.MMSAPISupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.MMSAPISupport";
+    }
+    leaf query-mms-delivery-status-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.QueryMMSDeliveryStatusSupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.QueryMMSDeliveryStatusSupport";
+    }
+    leaf subscribe-to-notifications-of-mms-sent-to-application-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.SubscribeToNotificationsOfMMSSentToApplicationSupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.SubscribeToNotificationsOfMMSSentToApplicationSupport";
+    }
+    leaf terminal-location-api-support {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.TerminalLocationAPISupport";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.TerminalLocationAPISupport";
+    }
+    leaf authentication-methods-supported {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.AuthenticationMethodsSupported";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.AuthenticationMethodsSupported";
+    }
+    leaf access-levels-supported {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.AccessLevelsSupported";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.AccessLevelsSupported";
+    }
+    leaf send-sms-target-address-type {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.SendSMSTargetAddressType";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.SendSMSTargetAddressType";
+    }
+    leaf send-mms-target-address-type {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Capabilities.SendMMSTargetAddressType";
+      reference
+        "Device.FAP.ApplicationPlatform.Capabilities.SendMMSTargetAddressType";
+    }
+  }
+
+  grouping application-platform-control-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Control.";
+    leaf authentication-method {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.AuthenticationMethod";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.AuthenticationMethod";
+    }
+    leaf tunnel-inst {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.TunnelInst";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TunnelInst";
+    }
+  }
+
+  grouping control-femto-awareness-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Control.FemtoAwareness.";
+    leaf api-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.APIEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.APIEnable";
+    }
+    leaf queue-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.QueueEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.QueueEnable";
+    }
+    leaf queueing {
+      type enumeration {
+        enum FiFo {
+          description
+            "Enum Value - FiFo";
+        }
+        enum Priority {
+          description
+            "Enum Value - Priority";
+        }
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.Queueing";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.Queueing";
+    }
+    leaf max-api-users-number {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.MaxAPIUsersNumber";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.MaxAPIUsersNumber";
+    }
+    leaf femtozone-id {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.FemtozoneID";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.FemtozoneID";
+    }
+    leaf notifications-user-identifier-msisdn {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.NotificationsUserIdentifierMSISDN";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.NotificationsUserIdentifierMSISDN";
+    }
+    leaf subscribe-to-notifications-response-callback-data {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.SubscribeToNotificationsResponseCallbackData";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.SubscribeToNotificationsResponseCallbackData";
+    }
+    leaf query-femtocell-response-timezone {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.QueryFemtocellResponseTimezone";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.QueryFemtocellResponseTimezone";
+    }
+  }
+
+  grouping control-mms-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Control.MMS.";
+    leaf api-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.APIEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.APIEnable";
+    }
+    leaf queue-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.QueueEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.QueueEnable";
+    }
+    leaf queueing {
+      type enumeration {
+        enum FiFo {
+          description
+            "Enum Value - FiFo";
+        }
+        enum Priority {
+          description
+            "Enum Value - Priority";
+        }
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.Queueing";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.Queueing";
+    }
+    leaf max-api-users-number {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.MaxAPIUsersNumber";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.MaxAPIUsersNumber";
+    }
+    leaf min-send-mms-time-interval {
+      type uint32 {
+        range "0..3599";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.MinSendMMSTimeInterval";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.MinSendMMSTimeInterval";
+    }
+    leaf enable-query-mms-delivery-status {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.EnableQueryMMSDeliveryStatus";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.EnableQueryMMSDeliveryStatus";
+    }
+    leaf enable-subscribe-to-notifications-of-message-sent-to-application {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.MMS.EnableSubscribeToNotificationsOfMessageSentToApplication";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.MMS.EnableSubscribeToNotificationsOfMessageSentToApplication";
+    }
+  }
+
+  grouping control-sms-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Control.SMS.";
+    leaf api-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.APIEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.APIEnable";
+    }
+    leaf queue-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.QueueEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.QueueEnable";
+    }
+    leaf queueing {
+      type enumeration {
+        enum FiFo {
+          description
+            "Enum Value - FiFo";
+        }
+        enum Priority {
+          description
+            "Enum Value - Priority";
+        }
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.Queueing";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.Queueing";
+    }
+    leaf max-api-users-number {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.MaxAPIUsersNumber";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.MaxAPIUsersNumber";
+    }
+    leaf min-send-sms-time-interval {
+      type uint32 {
+        range "0..3599";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.MinSendSMSTimeInterval";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.MinSendSMSTimeInterval";
+    }
+    leaf enable-query-sms-delivery-status {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.EnableQuerySMSDeliveryStatus";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.EnableQuerySMSDeliveryStatus";
+    }
+    leaf enable-subscribe-to-notifications-of-message-sent-to-application {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.SMS.EnableSubscribeToNotificationsOfMessageSentToApplication";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.SMS.EnableSubscribeToNotificationsOfMessageSentToApplication";
+    }
+  }
+
+  grouping control-terminal-location-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Control.TerminalLocation.";
+    leaf api-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.APIEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.APIEnable";
+    }
+    leaf queue-enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueueEnable";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueueEnable";
+    }
+    leaf queueing {
+      type enumeration {
+        enum FiFo {
+          description
+            "Enum Value - FiFo";
+        }
+        enum Priority {
+          description
+            "Enum Value - Priority";
+        }
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.Queueing";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.Queueing";
+    }
+    leaf max-api-users-number {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.MaxAPIUsersNumber";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.MaxAPIUsersNumber";
+    }
+    leaf query-mobile-location-response-address {
+      type enumeration {
+        enum TelUri {
+          description
+            "Enum Value - TelUri";
+        }
+        enum AnonymousReference {
+          description
+            "Enum Value - AnonymousReference";
+        }
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseAddress";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseAddress";
+    }
+    leaf query-mobile-location-response-longitude-latitude {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseLongitudeLatitude";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseLongitudeLatitude";
+    }
+    leaf query-mobile-location-response-altitude {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseAltitude";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseAltitude";
+    }
+    leaf query-mobile-location-response-timestamp {
+      type uint32 {
+        range "0..86399";
+      }
+      description
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseTimestamp";
+      reference
+        "Device.FAP.ApplicationPlatform.Control.TerminalLocation.QueryMobileLocationResponseTimestamp";
+    }
+  }
+
+  grouping application-platform-monitoring-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Monitoring.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.Enable";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.Enable";
+    }
+    leaf monitoring-interval {
+      type uint32;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MonitoringInterval";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MonitoringInterval";
+    }
+    leaf authentication-requests-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.AuthenticationRequestsReceived";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.AuthenticationRequestsReceived";
+    }
+    leaf authentication-requests-rejected {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.AuthenticationRequestsRejected";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.AuthenticationRequestsRejected";
+    }
+  }
+
+  grouping monitoring-femto-awareness-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.";
+    leaf api-available {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.APIAvailable";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.APIAvailable";
+    }
+    leaf api-users {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.APIUsers";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.APIUsers";
+    }
+    leaf queue-state {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueState";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueState";
+    }
+    leaf queue-num {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueNum";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueNum";
+    }
+    leaf queue-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueReceived";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueReceived";
+    }
+    leaf queue-discarded {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueDiscarded";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.QueueDiscarded";
+    }
+  }
+
+  grouping monitoring-mms-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Monitoring.MMS.";
+    leaf api-available {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.APIAvailable";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.APIAvailable";
+    }
+    leaf api-users {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.APIUsers";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.APIUsers";
+    }
+    leaf queue-state {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueState";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueState";
+    }
+    leaf queue-num {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueNum";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueNum";
+    }
+    leaf queue-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueReceived";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueReceived";
+    }
+    leaf queue-discarded {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueDiscarded";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.MMS.QueueDiscarded";
+    }
+  }
+
+  grouping monitoring-sms-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Monitoring.SMS.";
+    leaf api-available {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.APIAvailable";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.APIAvailable";
+    }
+    leaf api-users {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.APIUsers";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.APIUsers";
+    }
+    leaf queue-state {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueState";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueState";
+    }
+    leaf queue-num {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueNum";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueNum";
+    }
+    leaf queue-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueReceived";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueReceived";
+    }
+    leaf queue-discarded {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueDiscarded";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.SMS.QueueDiscarded";
+    }
+  }
+
+  grouping monitoring-terminal-location-g {
+    description
+      "Grouping object for Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.";
+    leaf api-available {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.APIAvailable";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.APIAvailable";
+    }
+    leaf api-users {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.APIUsers";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.APIUsers";
+    }
+    leaf queue-state {
+      type string;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueState";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueState";
+    }
+    leaf queue-num {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueNum";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueNum";
+    }
+    leaf queue-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueReceived";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueReceived";
+    }
+    leaf queue-discarded {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueDiscarded";
+      reference
+        "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.QueueDiscarded";
+    }
+  }
+
+  grouping fap-gps-g {
+    description
+      "Grouping object for Device.FAP.GPS.";
+    leaf scan-on-boot {
+      type boolean;
+      description
+        "Device.FAP.GPS.ScanOnBoot";
+      reference
+        "Device.FAP.GPS.ScanOnBoot";
+    }
+    leaf scan-periodically {
+      type boolean;
+      description
+        "Device.FAP.GPS.ScanPeriodically";
+      reference
+        "Device.FAP.GPS.ScanPeriodically";
+    }
+    leaf periodic-interval {
+      type uint32;
+      description
+        "Device.FAP.GPS.PeriodicInterval";
+      reference
+        "Device.FAP.GPS.PeriodicInterval";
+    }
+    leaf periodic-time {
+      type string;
+      description
+        "Device.FAP.GPS.PeriodicTime";
+      reference
+        "Device.FAP.GPS.PeriodicTime";
+    }
+    leaf continuous-gps {
+      type boolean;
+      description
+        "Device.FAP.GPS.ContinuousGPS";
+      reference
+        "Device.FAP.GPS.ContinuousGPS";
+    }
+    leaf scan-timeout {
+      type uint32;
+      description
+        "Device.FAP.GPS.ScanTimeout";
+      reference
+        "Device.FAP.GPS.ScanTimeout";
+    }
+    leaf scan-status {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.ScanStatus";
+      reference
+        "Device.FAP.GPS.ScanStatus";
+    }
+    leaf error-details {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.ErrorDetails";
+      reference
+        "Device.FAP.GPS.ErrorDetails";
+    }
+    leaf last-scan-time {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.LastScanTime";
+      reference
+        "Device.FAP.GPS.LastScanTime";
+    }
+    leaf last-successful-scan-time {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.LastSuccessfulScanTime";
+      reference
+        "Device.FAP.GPS.LastSuccessfulScanTime";
+    }
+    leaf locked-latitude {
+      type int32 {
+        range "-90000000..90000000";
+      }
+      config false;
+      description
+        "Device.FAP.GPS.LockedLatitude";
+      reference
+        "Device.FAP.GPS.LockedLatitude";
+    }
+    leaf locked-longitude {
+      type int32 {
+        range "-180000000..180000000";
+      }
+      config false;
+      description
+        "Device.FAP.GPS.LockedLongitude";
+      reference
+        "Device.FAP.GPS.LockedLongitude";
+    }
+    leaf number-of-satellites {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.GPS.NumberOfSatellites";
+      reference
+        "Device.FAP.GPS.NumberOfSatellites";
+    }
+  }
+
+  grouping gps-agps-server-config-g {
+    description
+      "Grouping object for Device.FAP.GPS.AGPSServerConfig.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.FAP.GPS.AGPSServerConfig.Enable";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.Enable";
+    }
+    leaf server-url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.GPS.AGPSServerConfig.ServerURL";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.ServerURL";
+    }
+    leaf server-port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.FAP.GPS.AGPSServerConfig.ServerPort";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.ServerPort";
+    }
+    leaf username {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.FAP.GPS.AGPSServerConfig.Username";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.Username";
+    }
+    leaf reference-latitude {
+      type int32 {
+        range "-90000000..90000000";
+      }
+      description
+        "Device.FAP.GPS.AGPSServerConfig.ReferenceLatitude";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.ReferenceLatitude";
+    }
+    leaf reference-longitude {
+      type int32 {
+        range "-180000000..180000000";
+      }
+      description
+        "Device.FAP.GPS.AGPSServerConfig.ReferenceLongitude";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.ReferenceLongitude";
+    }
+    leaf server-in-use {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.GPS.AGPSServerConfig.ServerInUse";
+      reference
+        "Device.FAP.GPS.AGPSServerConfig.ServerInUse";
+    }
+  }
+
+  grouping gps-continuous-gps-status-g {
+    description
+      "Grouping object for Device.FAP.GPS.ContinuousGPSStatus.";
+    leaf current-fix {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.CurrentFix";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.CurrentFix";
+    }
+    leaf got-fix {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.GotFix";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.GotFix";
+    }
+    leaf timing-good {
+      type boolean;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.TimingGood";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.TimingGood";
+    }
+    leaf latitude {
+      type int32 {
+        range "-90000000..90000000";
+      }
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.Latitude";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.Latitude";
+    }
+    leaf longitude {
+      type int32 {
+        range "-180000000..180000000";
+      }
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.Longitude";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.Longitude";
+    }
+    leaf elevation {
+      type int32 {
+        range "-5000000..25000000";
+      }
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.Elevation";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.Elevation";
+    }
+    leaf last-fix-time {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.LastFixTime";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.LastFixTime";
+    }
+    leaf last-fix-duration {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.LastFixDuration";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.LastFixDuration";
+    }
+    leaf first-fix-timeout {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.FirstFixTimeout";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.FirstFixTimeout";
+    }
+    leaf satellites-tracked {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.SatellitesTracked";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.SatellitesTracked";
+    }
+    leaf satellite-tracking-interval {
+      type uint32 {
+        range "60..3600";
+      }
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.SatelliteTrackingInterval";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.SatelliteTrackingInterval";
+    }
+    leaf receiver-status {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.ReceiverStatus";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.ReceiverStatus";
+    }
+    leaf location-type {
+      type string;
+      config false;
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.LocationType";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.LocationType";
+    }
+    leaf lock-time-out-duration {
+      type uint32 {
+        range "120..86400";
+      }
+      description
+        "Device.FAP.GPS.ContinuousGPSStatus.LockTimeOutDuration";
+      reference
+        "Device.FAP.GPS.ContinuousGPSStatus.LockTimeOutDuration";
+    }
+  }
+
+  grouping fap-perf-mgmt-g {
+    description
+      "Grouping object for Device.FAP.PerfMgmt.";
+    leaf config-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FAP.PerfMgmt.ConfigNumberOfEntries";
+      reference
+        "Device.FAP.PerfMgmt.ConfigNumberOfEntries";
+    }
+  }
+
+  grouping perf-mgmt-config-g {
+    description
+      "Grouping object for Device.FAP.PerfMgmt.Config.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.Enable";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.Alias";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.Alias";
+    }
+    leaf url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.URL";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.URL";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.Username";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.Username";
+    }
+    leaf periodic-upload-interval {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.PeriodicUploadInterval";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.PeriodicUploadInterval";
+    }
+    leaf periodic-upload-time {
+      type string;
+      description
+        "Device.FAP.PerfMgmt.Config.{i}.PeriodicUploadTime";
+      reference
+        "Device.FAP.PerfMgmt.Config.{i}.PeriodicUploadTime";
+    }
+  }
+
+  grouping device-fast-g {
+    description
+      "Grouping object for Device.FAST.";
+    leaf line-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.LineNumberOfEntries";
+      reference
+        "Device.FAST.LineNumberOfEntries";
+    }
+  }
+
+  grouping fast-line-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.FAST.Line.{i}.Enable";
+      reference
+        "Device.FAST.Line.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Status";
+      reference
+        "Device.FAST.Line.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.FAST.Line.{i}.Alias";
+      reference
+        "Device.FAST.Line.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Name";
+      reference
+        "Device.FAST.Line.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.LastChange";
+      reference
+        "Device.FAST.Line.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.FAST.Line.{i}.LowerLayers";
+      reference
+        "Device.FAST.Line.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Upstream";
+      reference
+        "Device.FAST.Line.{i}.Upstream";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.FirmwareVersion";
+      reference
+        "Device.FAST.Line.{i}.FirmwareVersion";
+    }
+    leaf link-status {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.LinkStatus";
+      reference
+        "Device.FAST.Line.{i}.LinkStatus";
+    }
+    leaf allowed-profiles {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.AllowedProfiles";
+      reference
+        "Device.FAST.Line.{i}.AllowedProfiles";
+    }
+    leaf current-profile {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.CurrentProfile";
+      reference
+        "Device.FAST.Line.{i}.CurrentProfile";
+    }
+    leaf power-management-state {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.PowerManagementState";
+      reference
+        "Device.FAST.Line.{i}.PowerManagementState";
+    }
+    leaf success-failure-cause {
+      type uint32 {
+        range "0..5";
+      }
+      config false;
+      description
+        "Device.FAST.Line.{i}.SuccessFailureCause";
+      reference
+        "Device.FAST.Line.{i}.SuccessFailureCause";
+    }
+    leaf upbokler {
+      type uint32 {
+        range "0..1280";
+      }
+      config false;
+      description
+        "Device.FAST.Line.{i}.UPBOKLER";
+      reference
+        "Device.FAST.Line.{i}.UPBOKLER";
+    }
+    leaf last-transmitted-downstream-signal {
+      type uint32 {
+        range "0..21";
+      }
+      config false;
+      description
+        "Device.FAST.Line.{i}.LastTransmittedDownstreamSignal";
+      reference
+        "Device.FAST.Line.{i}.LastTransmittedDownstreamSignal";
+    }
+    leaf last-transmitted-upstream-signal {
+      type uint32 {
+        range "0..21";
+      }
+      config false;
+      description
+        "Device.FAST.Line.{i}.LastTransmittedUpstreamSignal";
+      reference
+        "Device.FAST.Line.{i}.LastTransmittedUpstreamSignal";
+    }
+    leaf upbokle {
+      type uint32 {
+        range "0..1280";
+      }
+      config false;
+      description
+        "Device.FAST.Line.{i}.UPBOKLE";
+      reference
+        "Device.FAST.Line.{i}.UPBOKLE";
+    }
+    leaf line-number {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.LineNumber";
+      reference
+        "Device.FAST.Line.{i}.LineNumber";
+    }
+    leaf upstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.UpstreamMaxBitRate";
+      reference
+        "Device.FAST.Line.{i}.UpstreamMaxBitRate";
+    }
+    leaf downstream-max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.DownstreamMaxBitRate";
+      reference
+        "Device.FAST.Line.{i}.DownstreamMaxBitRate";
+    }
+    leaf upstream-noise-margin {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.UpstreamNoiseMargin";
+      reference
+        "Device.FAST.Line.{i}.UpstreamNoiseMargin";
+    }
+    leaf downstream-noise-margin {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.DownstreamNoiseMargin";
+      reference
+        "Device.FAST.Line.{i}.DownstreamNoiseMargin";
+    }
+    leaf upstream-attenuation {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.UpstreamAttenuation";
+      reference
+        "Device.FAST.Line.{i}.UpstreamAttenuation";
+    }
+    leaf downstream-attenuation {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.DownstreamAttenuation";
+      reference
+        "Device.FAST.Line.{i}.DownstreamAttenuation";
+    }
+    leaf upstream-power {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.UpstreamPower";
+      reference
+        "Device.FAST.Line.{i}.UpstreamPower";
+    }
+    leaf downstream-power {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.DownstreamPower";
+      reference
+        "Device.FAST.Line.{i}.DownstreamPower";
+    }
+    leaf snrmrm-cds {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.SNRMRMCds";
+      reference
+        "Device.FAST.Line.{i}.SNRMRMCds";
+    }
+    leaf snrmrm-cus {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.SNRMRMCus";
+      reference
+        "Device.FAST.Line.{i}.SNRMRMCus";
+    }
+    leaf bitsrm-cpsds {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.BITSRMCpsds";
+      reference
+        "Device.FAST.Line.{i}.BITSRMCpsds";
+    }
+    leaf bitsrm-cpsus {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.BITSRMCpsus";
+      reference
+        "Device.FAST.Line.{i}.BITSRMCpsus";
+    }
+    leaf fextcance-lds {
+      type boolean;
+      config false;
+      description
+        "Device.FAST.Line.{i}.FEXTCANCELds";
+      reference
+        "Device.FAST.Line.{i}.FEXTCANCELds";
+    }
+    leaf fextcance-lus {
+      type boolean;
+      config false;
+      description
+        "Device.FAST.Line.{i}.FEXTCANCELus";
+      reference
+        "Device.FAST.Line.{i}.FEXTCANCELus";
+    }
+    leaf et-rds {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.ETRds";
+      reference
+        "Device.FAST.Line.{i}.ETRds";
+    }
+    leaf et-rus {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.ETRus";
+      reference
+        "Device.FAST.Line.{i}.ETRus";
+    }
+    leaf attet-rds {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.ATTETRds";
+      reference
+        "Device.FAST.Line.{i}.ATTETRds";
+    }
+    leaf attet-rus {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.ATTETRus";
+      reference
+        "Device.FAST.Line.{i}.ATTETRus";
+    }
+    leaf mineftr {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.MINEFTR";
+      reference
+        "Device.FAST.Line.{i}.MINEFTR";
+    }
+  }
+
+  grouping fast-line-stats-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.BytesSent";
+      reference
+        "Device.FAST.Line.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.BytesReceived";
+      reference
+        "Device.FAST.Line.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.PacketsSent";
+      reference
+        "Device.FAST.Line.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.PacketsReceived";
+      reference
+        "Device.FAST.Line.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.ErrorsSent";
+      reference
+        "Device.FAST.Line.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.FAST.Line.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.FAST.Line.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.FAST.Line.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf total-start {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.TotalStart";
+      reference
+        "Device.FAST.Line.{i}.Stats.TotalStart";
+    }
+    leaf showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.ShowtimeStart";
+      reference
+        "Device.FAST.Line.{i}.Stats.ShowtimeStart";
+    }
+    leaf last-showtime-start {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtimeStart";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtimeStart";
+    }
+    leaf current-day-start {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDayStart";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDayStart";
+    }
+    leaf quarter-hour-start {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHourStart";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHourStart";
+    }
+  }
+
+  grouping fast-line-stats-current-day-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.CurrentDay.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.ErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SeverelyErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SeverelyErroredSecs";
+    }
+    leaf loss {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.LOSS";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.LOSS";
+    }
+    leaf lors {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.LORS";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.LORS";
+    }
+    leaf uas {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.UAS";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.UAS";
+    }
+    leaf rtxuc {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.RTXUC";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.RTXUC";
+    }
+    leaf rtxtx {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.RTXTX";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.RTXTX";
+    }
+    leaf success-bsw {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessBSW";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessBSW";
+    }
+    leaf success-sra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessSRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessSRA";
+    }
+    leaf success-fra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessFRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessFRA";
+    }
+    leaf success-rpa {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessRPA";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessRPA";
+    }
+    leaf success-tiga {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessTIGA";
+      reference
+        "Device.FAST.Line.{i}.Stats.CurrentDay.SuccessTIGA";
+    }
+  }
+
+  grouping fast-line-stats-last-showtime-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.LastShowtime.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.ErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SeverelyErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SeverelyErroredSecs";
+    }
+    leaf loss {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.LOSS";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.LOSS";
+    }
+    leaf lors {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.LORS";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.LORS";
+    }
+    leaf uas {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.UAS";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.UAS";
+    }
+    leaf rtxuc {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.RTXUC";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.RTXUC";
+    }
+    leaf rtxtx {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.RTXTX";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.RTXTX";
+    }
+    leaf success-bsw {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessBSW";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessBSW";
+    }
+    leaf success-sra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessSRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessSRA";
+    }
+    leaf success-fra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessFRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessFRA";
+    }
+    leaf success-rpa {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessRPA";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessRPA";
+    }
+    leaf success-tiga {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessTIGA";
+      reference
+        "Device.FAST.Line.{i}.Stats.LastShowtime.SuccessTIGA";
+    }
+  }
+
+  grouping fast-line-stats-quarter-hour-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.QuarterHour.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.ErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SeverelyErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SeverelyErroredSecs";
+    }
+    leaf loss {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.LOSS";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.LOSS";
+    }
+    leaf lors {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.LORS";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.LORS";
+    }
+    leaf uas {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.UAS";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.UAS";
+    }
+    leaf rtxuc {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.RTXUC";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.RTXUC";
+    }
+    leaf rtxtx {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.RTXTX";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.RTXTX";
+    }
+    leaf success-bsw {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessBSW";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessBSW";
+    }
+    leaf success-sra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessSRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessSRA";
+    }
+    leaf success-fra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessFRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessFRA";
+    }
+    leaf success-rpa {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessRPA";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessRPA";
+    }
+    leaf success-tiga {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessTIGA";
+      reference
+        "Device.FAST.Line.{i}.Stats.QuarterHour.SuccessTIGA";
+    }
+  }
+
+  grouping fast-line-stats-showtime-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.Showtime.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.ErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SeverelyErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SeverelyErroredSecs";
+    }
+    leaf loss {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.LOSS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.LOSS";
+    }
+    leaf lors {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.LORS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.LORS";
+    }
+    leaf uas {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.UAS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.UAS";
+    }
+    leaf rtxuc {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.RTXUC";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.RTXUC";
+    }
+    leaf rtxtx {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.RTXTX";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.RTXTX";
+    }
+    leaf success-bsw {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessBSW";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessBSW";
+    }
+    leaf success-sra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessSRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessSRA";
+    }
+    leaf success-fra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessFRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessFRA";
+    }
+    leaf success-rpa {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessRPA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessRPA";
+    }
+    leaf success-tiga {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessTIGA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Showtime.SuccessTIGA";
+    }
+  }
+
+  grouping fast-line-stats-total-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.Stats.Total.";
+    leaf errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.ErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.ErroredSecs";
+    }
+    leaf severely-errored-secs {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SeverelyErroredSecs";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SeverelyErroredSecs";
+    }
+    leaf loss {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.LOSS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.LOSS";
+    }
+    leaf lors {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.LORS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.LORS";
+    }
+    leaf uas {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.UAS";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.UAS";
+    }
+    leaf rtxuc {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.RTXUC";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.RTXUC";
+    }
+    leaf rtxtx {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.RTXTX";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.RTXTX";
+    }
+    leaf success-bsw {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SuccessBSW";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SuccessBSW";
+    }
+    leaf success-sra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SuccessSRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SuccessSRA";
+    }
+    leaf success-fra {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SuccessFRA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SuccessFRA";
+    }
+    leaf success-rpa {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SuccessRPA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SuccessRPA";
+    }
+    leaf success-tiga {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.Stats.Total.SuccessTIGA";
+      reference
+        "Device.FAST.Line.{i}.Stats.Total.SuccessTIGA";
+    }
+  }
+
+  grouping fast-line-test-params-g {
+    description
+      "Grouping object for Device.FAST.Line.{i}.TestParams.";
+    leaf snr-gds {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRGds";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRGds";
+    }
+    leaf snr-gus {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRGus";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRGus";
+    }
+    leaf sn-rpsds {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRpsds";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRpsds";
+    }
+    leaf sn-rpsus {
+      type string;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRpsus";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRpsus";
+    }
+    leaf snrm-tds {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRMTds";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRMTds";
+    }
+    leaf snrm-tus {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.SNRMTus";
+      reference
+        "Device.FAST.Line.{i}.TestParams.SNRMTus";
+    }
+    leaf actinp {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.ACTINP";
+      reference
+        "Device.FAST.Line.{i}.TestParams.ACTINP";
+    }
+    leaf nfec {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.NFEC";
+      reference
+        "Device.FAST.Line.{i}.TestParams.NFEC";
+    }
+    leaf rfec {
+      type int32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.RFEC";
+      reference
+        "Device.FAST.Line.{i}.TestParams.RFEC";
+    }
+    leaf upstream-curr-rate {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.UpstreamCurrRate";
+      reference
+        "Device.FAST.Line.{i}.TestParams.UpstreamCurrRate";
+    }
+    leaf downstream-curr-rate {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.DownstreamCurrRate";
+      reference
+        "Device.FAST.Line.{i}.TestParams.DownstreamCurrRate";
+    }
+    leaf actinprein {
+      type uint32;
+      config false;
+      description
+        "Device.FAST.Line.{i}.TestParams.ACTINPREIN";
+      reference
+        "Device.FAST.Line.{i}.TestParams.ACTINPREIN";
+    }
+  }
+
+  grouping device-fault-mgmt-g {
+    description
+      "Grouping object for Device.FaultMgmt.";
+    leaf supported-alarm-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.SupportedAlarmNumberOfEntries";
+      reference
+        "Device.FaultMgmt.SupportedAlarmNumberOfEntries";
+    }
+    leaf max-current-alarm-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.MaxCurrentAlarmEntries";
+      reference
+        "Device.FaultMgmt.MaxCurrentAlarmEntries";
+    }
+    leaf current-alarm-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarmNumberOfEntries";
+      reference
+        "Device.FaultMgmt.CurrentAlarmNumberOfEntries";
+    }
+    leaf history-event-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEventNumberOfEntries";
+      reference
+        "Device.FaultMgmt.HistoryEventNumberOfEntries";
+    }
+    leaf expedited-event-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEventNumberOfEntries";
+      reference
+        "Device.FaultMgmt.ExpeditedEventNumberOfEntries";
+    }
+    leaf queued-event-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEventNumberOfEntries";
+      reference
+        "Device.FaultMgmt.QueuedEventNumberOfEntries";
+    }
+  }
+
+  grouping fault-mgmt-current-alarm-g {
+    description
+      "Grouping object for Device.FaultMgmt.CurrentAlarm.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alarm-identifier {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmIdentifier";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmIdentifier";
+    }
+    leaf alarm-raised-time {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmRaisedTime";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmRaisedTime";
+    }
+    leaf alarm-changed-time {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmChangedTime";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.AlarmChangedTime";
+    }
+    leaf managed-object-instance {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.ManagedObjectInstance";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.ManagedObjectInstance";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.EventType";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.EventType";
+    }
+    leaf probable-cause {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.ProbableCause";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.ProbableCause";
+    }
+    leaf specific-problem {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.SpecificProblem";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.SpecificProblem";
+    }
+    leaf perceived-severity {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.PerceivedSeverity";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.PerceivedSeverity";
+    }
+    leaf additional-text {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.AdditionalText";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.AdditionalText";
+    }
+    leaf additional-information {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.CurrentAlarm.{i}.AdditionalInformation";
+      reference
+        "Device.FaultMgmt.CurrentAlarm.{i}.AdditionalInformation";
+    }
+  }
+
+  grouping fault-mgmt-expedited-event-g {
+    description
+      "Grouping object for Device.FaultMgmt.ExpeditedEvent.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf event-time {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.EventTime";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.EventTime";
+    }
+    leaf alarm-identifier {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AlarmIdentifier";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AlarmIdentifier";
+    }
+    leaf notification-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.NotificationType";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.NotificationType";
+    }
+    leaf managed-object-instance {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.ManagedObjectInstance";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.ManagedObjectInstance";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.EventType";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.EventType";
+    }
+    leaf probable-cause {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.ProbableCause";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.ProbableCause";
+    }
+    leaf specific-problem {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.SpecificProblem";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.SpecificProblem";
+    }
+    leaf perceived-severity {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.PerceivedSeverity";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.PerceivedSeverity";
+    }
+    leaf additional-text {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AdditionalText";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AdditionalText";
+    }
+    leaf additional-information {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AdditionalInformation";
+      reference
+        "Device.FaultMgmt.ExpeditedEvent.{i}.AdditionalInformation";
+    }
+  }
+
+  grouping fault-mgmt-history-event-g {
+    description
+      "Grouping object for Device.FaultMgmt.HistoryEvent.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf event-time {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.EventTime";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.EventTime";
+    }
+    leaf alarm-identifier {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.AlarmIdentifier";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.AlarmIdentifier";
+    }
+    leaf notification-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.NotificationType";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.NotificationType";
+    }
+    leaf managed-object-instance {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.ManagedObjectInstance";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.ManagedObjectInstance";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.EventType";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.EventType";
+    }
+    leaf probable-cause {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.ProbableCause";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.ProbableCause";
+    }
+    leaf specific-problem {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.SpecificProblem";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.SpecificProblem";
+    }
+    leaf perceived-severity {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.PerceivedSeverity";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.PerceivedSeverity";
+    }
+    leaf additional-text {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.AdditionalText";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.AdditionalText";
+    }
+    leaf additional-information {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.HistoryEvent.{i}.AdditionalInformation";
+      reference
+        "Device.FaultMgmt.HistoryEvent.{i}.AdditionalInformation";
+    }
+  }
+
+  grouping fault-mgmt-queued-event-g {
+    description
+      "Grouping object for Device.FaultMgmt.QueuedEvent.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf event-time {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.EventTime";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.EventTime";
+    }
+    leaf alarm-identifier {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.AlarmIdentifier";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.AlarmIdentifier";
+    }
+    leaf notification-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.NotificationType";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.NotificationType";
+    }
+    leaf managed-object-instance {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.ManagedObjectInstance";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.ManagedObjectInstance";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.EventType";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.EventType";
+    }
+    leaf probable-cause {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.ProbableCause";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.ProbableCause";
+    }
+    leaf specific-problem {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.SpecificProblem";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.SpecificProblem";
+    }
+    leaf perceived-severity {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.PerceivedSeverity";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.PerceivedSeverity";
+    }
+    leaf additional-text {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.AdditionalText";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.AdditionalText";
+    }
+    leaf additional-information {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.QueuedEvent.{i}.AdditionalInformation";
+      reference
+        "Device.FaultMgmt.QueuedEvent.{i}.AdditionalInformation";
+    }
+  }
+
+  grouping fault-mgmt-supported-alarm-g {
+    description
+      "Grouping object for Device.FaultMgmt.SupportedAlarm.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.SupportedAlarm.{i}.EventType";
+      reference
+        "Device.FaultMgmt.SupportedAlarm.{i}.EventType";
+    }
+    leaf probable-cause {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.SupportedAlarm.{i}.ProbableCause";
+      reference
+        "Device.FaultMgmt.SupportedAlarm.{i}.ProbableCause";
+    }
+    leaf specific-problem {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.SupportedAlarm.{i}.SpecificProblem";
+      reference
+        "Device.FaultMgmt.SupportedAlarm.{i}.SpecificProblem";
+    }
+    leaf perceived-severity {
+      type string;
+      config false;
+      description
+        "Device.FaultMgmt.SupportedAlarm.{i}.PerceivedSeverity";
+      reference
+        "Device.FaultMgmt.SupportedAlarm.{i}.PerceivedSeverity";
+    }
+    leaf reporting-mechanism {
+      type enumeration {
+        enum "0 Expedited" {
+          description
+            "Enum Value - 0 Expedited";
+        }
+        enum "1 Queued" {
+          description
+            "Enum Value - 1 Queued";
+        }
+        enum "2 Logged" {
+          description
+            "Enum Value - 2 Logged";
+        }
+        enum "3 Disabled" {
+          description
+            "Enum Value - 3 Disabled";
+        }
+      }
+      description
+        "Device.FaultMgmt.SupportedAlarm.{i}.ReportingMechanism";
+      reference
+        "Device.FaultMgmt.SupportedAlarm.{i}.ReportingMechanism";
+    }
+  }
+
+  grouping device-firewall-g {
+    description
+      "Grouping object for Device.Firewall.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.Firewall.Enable";
+      reference
+        "Device.Firewall.Enable";
+    }
+    leaf config {
+      type enumeration {
+        enum High {
+          description
+            "Enum Value - High";
+        }
+        enum Low {
+          description
+            "Enum Value - Low";
+        }
+        enum Off {
+          description
+            "Enum Value - Off";
+        }
+        enum Advanced {
+          description
+            "Enum Value - Advanced";
+        }
+      }
+      description
+        "Device.Firewall.Config";
+      reference
+        "Device.Firewall.Config";
+    }
+    leaf advanced-level {
+      type string;
+      description
+        "Device.Firewall.AdvancedLevel";
+      reference
+        "Device.Firewall.AdvancedLevel";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Type";
+      reference
+        "Device.Firewall.Type";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Version";
+      reference
+        "Device.Firewall.Version";
+    }
+    leaf last-change {
+      type string;
+      config false;
+      description
+        "Device.Firewall.LastChange";
+      reference
+        "Device.Firewall.LastChange";
+    }
+    leaf level-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Firewall.LevelNumberOfEntries";
+      reference
+        "Device.Firewall.LevelNumberOfEntries";
+    }
+    leaf chain-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Firewall.ChainNumberOfEntries";
+      reference
+        "Device.Firewall.ChainNumberOfEntries";
+    }
+  }
+
+  grouping firewall-chain-g {
+    description
+      "Grouping object for Device.Firewall.Chain.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Enable";
+      reference
+        "Device.Firewall.Chain.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Alias";
+      reference
+        "Device.Firewall.Chain.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Name";
+      reference
+        "Device.Firewall.Chain.{i}.Name";
+    }
+    leaf creator {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Chain.{i}.Creator";
+      reference
+        "Device.Firewall.Chain.{i}.Creator";
+    }
+    leaf rule-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Firewall.Chain.{i}.RuleNumberOfEntries";
+      reference
+        "Device.Firewall.Chain.{i}.RuleNumberOfEntries";
+    }
+  }
+
+  grouping chain-rule-g {
+    description
+      "Grouping object for Device.Firewall.Chain.{i}.Rule.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Enable";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Status";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Order";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Alias";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Alias";
+    }
+    leaf description {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Description";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Description";
+    }
+    leaf target {
+      type enumeration {
+        enum Drop {
+          description
+            "Enum Value - Drop";
+        }
+        enum Accept {
+          description
+            "Enum Value - Accept";
+        }
+        enum Reject {
+          description
+            "Enum Value - Reject";
+        }
+        enum Return {
+          description
+            "Enum Value - Return";
+        }
+        enum TargetChain {
+          description
+            "Enum Value - TargetChain";
+        }
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Target";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Target";
+    }
+    leaf target-chain {
+      type string;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.TargetChain";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.TargetChain";
+    }
+    leaf log {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Log";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Log";
+    }
+    leaf creation-date {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.CreationDate";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.CreationDate";
+    }
+    leaf expiry-date {
+      type string;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.ExpiryDate";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.ExpiryDate";
+    }
+    leaf source-interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceInterface";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceInterface";
+    }
+    leaf source-interface-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceInterfaceExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceInterfaceExclude";
+    }
+    leaf source-all-interfaces {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceAllInterfaces";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceAllInterfaces";
+    }
+    leaf dest-interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestInterface";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestInterface";
+    }
+    leaf dest-interface-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestInterfaceExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestInterfaceExclude";
+    }
+    leaf dest-all-interfaces {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestAllInterfaces";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestAllInterfaces";
+    }
+    leaf ip-version {
+      type int32 {
+        range "-1..15";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.IPVersion";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.IPVersion";
+    }
+    leaf dest-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestIP";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestIP";
+    }
+    leaf dest-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestMask";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestMask";
+    }
+    leaf dest-ip-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestIPExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestIPExclude";
+    }
+    leaf source-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceIP";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceIP";
+    }
+    leaf source-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceMask";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceMask";
+    }
+    leaf source-ip-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceIPExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourceIPExclude";
+    }
+    leaf protocol {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.Protocol";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.Protocol";
+    }
+    leaf protocol-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.ProtocolExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.ProtocolExclude";
+    }
+    leaf dest-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPort";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPort";
+    }
+    leaf dest-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPortRangeMax";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPortRangeMax";
+    }
+    leaf dest-port-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPortExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DestPortExclude";
+    }
+    leaf source-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePort";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePort";
+    }
+    leaf source-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePortRangeMax";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePortRangeMax";
+    }
+    leaf source-port-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePortExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.SourcePortExclude";
+    }
+    leaf dscp {
+      type int32 {
+        range "-1..63";
+      }
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DSCP";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DSCP";
+    }
+    leaf dscp-exclude {
+      type boolean;
+      description
+        "Device.Firewall.Chain.{i}.Rule.{i}.DSCPExclude";
+      reference
+        "Device.Firewall.Chain.{i}.Rule.{i}.DSCPExclude";
+    }
+  }
+
+  grouping firewall-level-g {
+    description
+      "Grouping object for Device.Firewall.Level.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Firewall.Level.{i}.Alias";
+      reference
+        "Device.Firewall.Level.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Firewall.Level.{i}.Name";
+      reference
+        "Device.Firewall.Level.{i}.Name";
+    }
+    leaf description {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Firewall.Level.{i}.Description";
+      reference
+        "Device.Firewall.Level.{i}.Description";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.Firewall.Level.{i}.Order";
+      reference
+        "Device.Firewall.Level.{i}.Order";
+    }
+    leaf chain {
+      type string;
+      config false;
+      description
+        "Device.Firewall.Level.{i}.Chain";
+      reference
+        "Device.Firewall.Level.{i}.Chain";
+    }
+    leaf port-mapping-enabled {
+      type boolean;
+      description
+        "Device.Firewall.Level.{i}.PortMappingEnabled";
+      reference
+        "Device.Firewall.Level.{i}.PortMappingEnabled";
+    }
+    leaf default-policy {
+      type enumeration {
+        enum Drop {
+          description
+            "Enum Value - Drop";
+        }
+        enum Accept {
+          description
+            "Enum Value - Accept";
+        }
+        enum Reject {
+          description
+            "Enum Value - Reject";
+        }
+      }
+      description
+        "Device.Firewall.Level.{i}.DefaultPolicy";
+      reference
+        "Device.Firewall.Level.{i}.DefaultPolicy";
+    }
+    leaf default-log-policy {
+      type boolean;
+      description
+        "Device.Firewall.Level.{i}.DefaultLogPolicy";
+      reference
+        "Device.Firewall.Level.{i}.DefaultLogPolicy";
+    }
+  }
+
+  grouping device-gre-g {
+    description
+      "Grouping object for Device.GRE.";
+    leaf tunnel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.TunnelNumberOfEntries";
+      reference
+        "Device.GRE.TunnelNumberOfEntries";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.FilterNumberOfEntries";
+      reference
+        "Device.GRE.FilterNumberOfEntries";
+    }
+  }
+
+  grouping gre-filter-g {
+    description
+      "Grouping object for Device.GRE.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.GRE.Filter.{i}.Enable";
+      reference
+        "Device.GRE.Filter.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.GRE.Filter.{i}.Status";
+      reference
+        "Device.GRE.Filter.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.GRE.Filter.{i}.Order";
+      reference
+        "Device.GRE.Filter.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.GRE.Filter.{i}.Alias";
+      reference
+        "Device.GRE.Filter.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.GRE.Filter.{i}.Interface";
+      reference
+        "Device.GRE.Filter.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.GRE.Filter.{i}.AllInterfaces";
+      reference
+        "Device.GRE.Filter.{i}.AllInterfaces";
+    }
+    leaf vlanid-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.GRE.Filter.{i}.VLANIDCheck";
+      reference
+        "Device.GRE.Filter.{i}.VLANIDCheck";
+    }
+    leaf vlanid-exclude {
+      type boolean;
+      description
+        "Device.GRE.Filter.{i}.VLANIDExclude";
+      reference
+        "Device.GRE.Filter.{i}.VLANIDExclude";
+    }
+    leaf dscp-mark-policy {
+      type int32 {
+        range "-2..63";
+      }
+      description
+        "Device.GRE.Filter.{i}.DSCPMarkPolicy";
+      reference
+        "Device.GRE.Filter.{i}.DSCPMarkPolicy";
+    }
+  }
+
+  grouping gre-tunnel-g {
+    description
+      "Grouping object for Device.GRE.Tunnel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.GRE.Tunnel.{i}.Enable";
+      reference
+        "Device.GRE.Tunnel.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Status";
+      reference
+        "Device.GRE.Tunnel.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.GRE.Tunnel.{i}.Alias";
+      reference
+        "Device.GRE.Tunnel.{i}.Alias";
+    }
+    leaf remote-endpoints {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.GRE.Tunnel.{i}.RemoteEndpoints";
+      reference
+        "Device.GRE.Tunnel.{i}.RemoteEndpoints";
+    }
+    leaf keep-alive-policy {
+      type enumeration {
+        enum ICMP {
+          description
+            "Enum Value - ICMP";
+        }
+        enum None {
+          description
+            "Enum Value - None";
+        }
+      }
+      description
+        "Device.GRE.Tunnel.{i}.KeepAlivePolicy";
+      reference
+        "Device.GRE.Tunnel.{i}.KeepAlivePolicy";
+    }
+    leaf keep-alive-timeout {
+      type uint32;
+      description
+        "Device.GRE.Tunnel.{i}.KeepAliveTimeout";
+      reference
+        "Device.GRE.Tunnel.{i}.KeepAliveTimeout";
+    }
+    leaf keep-alive-threshold {
+      type uint32;
+      description
+        "Device.GRE.Tunnel.{i}.KeepAliveThreshold";
+      reference
+        "Device.GRE.Tunnel.{i}.KeepAliveThreshold";
+    }
+    leaf delivery-header-protocol {
+      type enumeration {
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.GRE.Tunnel.{i}.DeliveryHeaderProtocol";
+      reference
+        "Device.GRE.Tunnel.{i}.DeliveryHeaderProtocol";
+    }
+    leaf default-dscp-mark {
+      type uint32;
+      description
+        "Device.GRE.Tunnel.{i}.DefaultDSCPMark";
+      reference
+        "Device.GRE.Tunnel.{i}.DefaultDSCPMark";
+    }
+    leaf connected-remote-endpoint {
+      type string;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.ConnectedRemoteEndpoint";
+      reference
+        "Device.GRE.Tunnel.{i}.ConnectedRemoteEndpoint";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.InterfaceNumberOfEntries";
+      reference
+        "Device.GRE.Tunnel.{i}.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping tunnel-interface-g {
+    description
+      "Grouping object for Device.GRE.Tunnel.{i}.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Enable";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Status";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Alias";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Name";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.LastChange";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.LowerLayers";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.LowerLayers";
+    }
+    leaf protocol-id-override {
+      type uint32;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.ProtocolIdOverride";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.ProtocolIdOverride";
+    }
+    leaf use-checksum {
+      type boolean;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.UseChecksum";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.UseChecksum";
+    }
+    leaf key-identifier-generation-policy {
+      type enumeration {
+        enum Disabled {
+          description
+            "Enum Value - Disabled";
+        }
+        enum Provisioned {
+          description
+            "Enum Value - Provisioned";
+        }
+        enum CPE_Generated {
+          description
+            "Enum Value - CPE_Generated";
+        }
+      }
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.KeyIdentifierGenerationPolicy";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.KeyIdentifierGenerationPolicy";
+    }
+    leaf key-identifier {
+      type uint32;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.KeyIdentifier";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.KeyIdentifier";
+    }
+    leaf use-sequence-number {
+      type boolean;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.UseSequenceNumber";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.UseSequenceNumber";
+    }
+  }
+
+  grouping tunnel-interface-stats-g {
+    description
+      "Grouping object for Device.GRE.Tunnel.{i}.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-checksum-received {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+    }
+    leaf discard-sequence-number-received {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+    }
+  }
+
+  grouping tunnel-stats-g {
+    description
+      "Grouping object for Device.GRE.Tunnel.{i}.Stats.";
+    leaf keep-alive-sent {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.KeepAliveSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.KeepAliveSent";
+    }
+    leaf keep-alive-received {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.KeepAliveReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.KeepAliveReceived";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.BytesSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.BytesReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.PacketsSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.PacketsReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.ErrorsSent";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.GRE.Tunnel.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.GRE.Tunnel.{i}.Stats.ErrorsReceived";
+    }
+  }
+
+  grouping device-gateway-info-g {
+    description
+      "Grouping object for Device.GatewayInfo.";
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.GatewayInfo.ManufacturerOUI";
+      reference
+        "Device.GatewayInfo.ManufacturerOUI";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.GatewayInfo.ProductClass";
+      reference
+        "Device.GatewayInfo.ProductClass";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.GatewayInfo.SerialNumber";
+      reference
+        "Device.GatewayInfo.SerialNumber";
+    }
+  }
+
+  grouping device-ghn-g {
+    description
+      "Grouping object for Device.Ghn.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.InterfaceNumberOfEntries";
+      reference
+        "Device.Ghn.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping diagnostics-phy-throughput-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PHYThroughput.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+      }
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.DiagnosticsState";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.DiagnosticsState";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.Interface";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.Interface";
+    }
+    leaf diagnose-mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.DiagnoseMACAddress";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.DiagnoseMACAddress";
+    }
+    leaf phy-throughput-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.PHYThroughputResultNumberOfEntries";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.PHYThroughputResultNumberOfEntries";
+    }
+  }
+
+  grouping phy-throughput-result-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf destination-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.DestinationMACAddress";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.DestinationMACAddress";
+    }
+    leaf link-state {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.LinkState";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.LinkState";
+    }
+    leaf tx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.TxPhyRate";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.TxPhyRate";
+    }
+    leaf rx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.RxPhyRate";
+      reference
+        "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.RxPhyRate";
+    }
+  }
+
+  grouping diagnostics-performance-monitoring-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PerformanceMonitoring.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+      }
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.DiagnosticsState";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.DiagnosticsState";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Interface";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Interface";
+    }
+    leaf diagnose-mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.DiagnoseMACAddress";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.DiagnoseMACAddress";
+    }
+    leaf sample-interval {
+      type uint32;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.SampleInterval";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.SampleInterval";
+    }
+    leaf snr-group-length {
+      type uint32 {
+        range "1 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
+      }
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.SNRGroupLength";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.SNRGroupLength";
+    }
+  }
+
+  grouping performance-monitoring-channels-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.";
+    leaf time-stamp {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.TimeStamp";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.TimeStamp";
+    }
+    leaf channel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.ChannelNumberOfEntries";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.ChannelNumberOfEntries";
+    }
+  }
+
+  grouping channels-channel-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf destination-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.DestinationMACAddress";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.DestinationMACAddress";
+    }
+    leaf snr {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.SNR";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.SNR";
+    }
+  }
+
+  grouping performance-monitoring-nodes-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.";
+    leaf current-start {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.CurrentStart";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.CurrentStart";
+    }
+    leaf current-end {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.CurrentEnd";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.CurrentEnd";
+    }
+    leaf node-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.NodeNumberOfEntries";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.NodeNumberOfEntries";
+    }
+  }
+
+  grouping nodes-node-g {
+    description
+      "Grouping object for Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf destination-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DestinationMACAddress";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DestinationMACAddress";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ErrorsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ErrorsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnicastPacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnicastPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DiscardPacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DiscardPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.UnknownProtoPacketsReceived";
+    }
+    leaf mgmt-bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtBytesSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtBytesSent";
+    }
+    leaf mgmt-bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtBytesReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtBytesReceived";
+    }
+    leaf mgmt-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtPacketsSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtPacketsSent";
+    }
+    leaf mgmt-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtPacketsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MgmtPacketsReceived";
+    }
+    leaf blocks-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksSent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksSent";
+    }
+    leaf blocks-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksReceived";
+    }
+    leaf blocks-resent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksResent";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksResent";
+    }
+    leaf blocks-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksErrorsReceived";
+      reference
+        "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BlocksErrorsReceived";
+    }
+  }
+
+  grouping ghn-interface-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ghn.Interface.{i}.Enable";
+      reference
+        "Device.Ghn.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Status";
+      reference
+        "Device.Ghn.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Ghn.Interface.{i}.Alias";
+      reference
+        "Device.Ghn.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Name";
+      reference
+        "Device.Ghn.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.LastChange";
+      reference
+        "Device.Ghn.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Ghn.Interface.{i}.LowerLayers";
+      reference
+        "Device.Ghn.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Upstream";
+      reference
+        "Device.Ghn.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.MACAddress";
+      reference
+        "Device.Ghn.Interface.{i}.MACAddress";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.FirmwareVersion";
+      reference
+        "Device.Ghn.Interface.{i}.FirmwareVersion";
+    }
+    leaf connection-type {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.ConnectionType";
+      reference
+        "Device.Ghn.Interface.{i}.ConnectionType";
+    }
+    leaf max-transmit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.MaxTransmitRate";
+      reference
+        "Device.Ghn.Interface.{i}.MaxTransmitRate";
+    }
+    leaf target-domain-names {
+      type string {
+        length "min..32";
+      }
+      description
+        "Device.Ghn.Interface.{i}.TargetDomainNames";
+      reference
+        "Device.Ghn.Interface.{i}.TargetDomainNames";
+    }
+    leaf domain-name {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DomainName";
+      reference
+        "Device.Ghn.Interface.{i}.DomainName";
+    }
+    leaf domain-name-identifier {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DomainNameIdentifier";
+      reference
+        "Device.Ghn.Interface.{i}.DomainNameIdentifier";
+    }
+    leaf domain-id {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DomainId";
+      reference
+        "Device.Ghn.Interface.{i}.DomainId";
+    }
+    leaf device-id {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DeviceId";
+      reference
+        "Device.Ghn.Interface.{i}.DeviceId";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.MaxBitRate";
+      reference
+        "Device.Ghn.Interface.{i}.MaxBitRate";
+    }
+    leaf node-type-dm-capable {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.NodeTypeDMCapable";
+      reference
+        "Device.Ghn.Interface.{i}.NodeTypeDMCapable";
+    }
+    leaf dm-requested {
+      type boolean;
+      description
+        "Device.Ghn.Interface.{i}.DMRequested";
+      reference
+        "Device.Ghn.Interface.{i}.DMRequested";
+    }
+    leaf is-dm {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.IsDM";
+      reference
+        "Device.Ghn.Interface.{i}.IsDM";
+    }
+    leaf node-type-sc-capable {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.NodeTypeSCCapable";
+      reference
+        "Device.Ghn.Interface.{i}.NodeTypeSCCapable";
+    }
+    leaf sc-requested {
+      type boolean;
+      description
+        "Device.Ghn.Interface.{i}.SCRequested";
+      reference
+        "Device.Ghn.Interface.{i}.SCRequested";
+    }
+    leaf is-sc {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.IsSC";
+      reference
+        "Device.Ghn.Interface.{i}.IsSC";
+    }
+    leaf standard-versions {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.StandardVersions";
+      reference
+        "Device.Ghn.Interface.{i}.StandardVersions";
+    }
+    leaf max-band-plan {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.MaxBandPlan";
+      reference
+        "Device.Ghn.Interface.{i}.MaxBandPlan";
+    }
+    leaf medium-type {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.MediumType";
+      reference
+        "Device.Ghn.Interface.{i}.MediumType";
+    }
+    leaf taifg {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.TAIFG";
+      reference
+        "Device.Ghn.Interface.{i}.TAIFG";
+    }
+    leaf notched-amateur-radio-bands {
+      type string {
+        length "min..2";
+      }
+      description
+        "Device.Ghn.Interface.{i}.NotchedAmateurRadioBands";
+      reference
+        "Device.Ghn.Interface.{i}.NotchedAmateurRadioBands";
+    }
+    leaf phy-throughput-diagnostics-enable {
+      type string;
+      description
+        "Device.Ghn.Interface.{i}.PHYThroughputDiagnosticsEnable";
+      reference
+        "Device.Ghn.Interface.{i}.PHYThroughputDiagnosticsEnable";
+    }
+    leaf performance-monitoring-diagnostics-enable {
+      type string;
+      description
+        "Device.Ghn.Interface.{i}.PerformanceMonitoringDiagnosticsEnable";
+      reference
+        "Device.Ghn.Interface.{i}.PerformanceMonitoringDiagnosticsEnable";
+    }
+    leaf sm-masked-band-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.SMMaskedBandNumberOfEntries";
+      reference
+        "Device.Ghn.Interface.{i}.SMMaskedBandNumberOfEntries";
+    }
+    leaf node-type-dm-config {
+      type boolean;
+      description
+        "Device.Ghn.Interface.{i}.NodeTypeDMConfig";
+      reference
+        "Device.Ghn.Interface.{i}.NodeTypeDMConfig";
+    }
+    leaf node-type-dm-status {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.NodeTypeDMStatus";
+      reference
+        "Device.Ghn.Interface.{i}.NodeTypeDMStatus";
+    }
+    leaf node-type-sc-status {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.NodeTypeSCStatus";
+      reference
+        "Device.Ghn.Interface.{i}.NodeTypeSCStatus";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+    leaf psm {
+      type uint32 {
+        range "min..max";
+      }
+      description
+        "Device.Ghn.Interface.{i}.PSM";
+      reference
+        "Device.Ghn.Interface.{i}.PSM";
+    }
+  }
+
+  grouping interface-associated-device-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf device-id {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.DeviceId";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.DeviceId";
+    }
+    leaf tx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.TxPhyRate";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.TxPhyRate";
+    }
+    leaf rx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.RxPhyRate";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.RxPhyRate";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping interface-dm-info-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.DMInfo.";
+    leaf domain-name {
+      type string {
+        length "min..32";
+      }
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.DomainName";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.DomainName";
+    }
+    leaf domain-name-identifier {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.DomainNameIdentifier";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.DomainNameIdentifier";
+    }
+    leaf domain-id {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.DomainId";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.DomainId";
+    }
+    leaf mac-cycle-duration {
+      type uint32 {
+        range "0 | 10..200";
+      }
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.MACCycleDuration";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.MACCycleDuration";
+    }
+    leaf sc-device-id {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.SCDeviceId";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.SCDeviceId";
+    }
+    leaf scmac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.SCMACAddress";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.SCMACAddress";
+    }
+    leaf reregistration-time-period {
+      type uint32 {
+        range "5..63";
+      }
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.ReregistrationTimePeriod";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.ReregistrationTimePeriod";
+    }
+    leaf topology-periodic-interval {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.TopologyPeriodicInterval";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.TopologyPeriodicInterval";
+    }
+    leaf min-supported-bandplan {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.MinSupportedBandplan";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.MinSupportedBandplan";
+    }
+    leaf max-supported-bandplan {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.DMInfo.MaxSupportedBandplan";
+      reference
+        "Device.Ghn.Interface.{i}.DMInfo.MaxSupportedBandplan";
+    }
+  }
+
+  grouping interface-sc-info-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.SCInfo.";
+    leaf modes-supported {
+      type string;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.SCInfo.ModesSupported";
+      reference
+        "Device.Ghn.Interface.{i}.SCInfo.ModesSupported";
+    }
+    leaf mode-enabled {
+      type string;
+      description
+        "Device.Ghn.Interface.{i}.SCInfo.ModeEnabled";
+      reference
+        "Device.Ghn.Interface.{i}.SCInfo.ModeEnabled";
+    }
+    leaf mic-size {
+      type enumeration {
+        enum "4-byte MIC" {
+          description
+            "Enum Value - 4-byte MIC";
+        }
+        enum "8-byte MIC" {
+          description
+            "Enum Value - 8-byte MIC";
+        }
+        enum "16-byte MIC" {
+          description
+            "Enum Value - 16-byte MIC";
+        }
+      }
+      description
+        "Device.Ghn.Interface.{i}.SCInfo.MICSize";
+      reference
+        "Device.Ghn.Interface.{i}.SCInfo.MICSize";
+    }
+    leaf location {
+      type boolean;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.SCInfo.Location";
+      reference
+        "Device.Ghn.Interface.{i}.SCInfo.Location";
+    }
+  }
+
+  grouping interface-sm-masked-band-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.SMMaskedBand.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.Enable";
+      reference
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.Enable";
+    }
+    leaf band-number {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.BandNumber";
+      reference
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.BandNumber";
+    }
+    leaf start-sub-carrier {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.StartSubCarrier";
+      reference
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.StartSubCarrier";
+    }
+    leaf stop-sub-carrier {
+      type uint32;
+      description
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.StopSubCarrier";
+      reference
+        "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.StopSubCarrier";
+    }
+  }
+
+  grouping ghn-interface-stats-g {
+    description
+      "Grouping object for Device.Ghn.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+    leaf mgmt-bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MgmtBytesSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MgmtBytesSent";
+    }
+    leaf mgmt-bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MgmtBytesReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MgmtBytesReceived";
+    }
+    leaf mgmt-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MgmtPacketsSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MgmtPacketsSent";
+    }
+    leaf mgmt-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.MgmtPacketsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.MgmtPacketsReceived";
+    }
+    leaf blocks-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BlocksSent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BlocksSent";
+    }
+    leaf blocks-received {
+      type uint64;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BlocksReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BlocksReceived";
+    }
+    leaf blocks-resent {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BlocksResent";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BlocksResent";
+    }
+    leaf blocks-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Ghn.Interface.{i}.Stats.BlocksErrorsReceived";
+      reference
+        "Device.Ghn.Interface.{i}.Stats.BlocksErrorsReceived";
+    }
+  }
+
+  grouping device-hpna-g {
+    description
+      "Grouping object for Device.HPNA.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.InterfaceNumberOfEntries";
+      reference
+        "Device.HPNA.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping hpna-diagnostics-phy-throughput-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PHYThroughput.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_FailToEnableCert {
+          description
+            "Enum Value - Error_FailToEnableCert";
+        }
+        enum Error_CertCmdTimeout {
+          description
+            "Enum Value - Error_CertCmdTimeout";
+        }
+        enum Error_UnknownErr {
+          description
+            "Enum Value - Error_UnknownErr";
+        }
+        enum Error_UnsupportedOpcode {
+          description
+            "Enum Value - Error_UnsupportedOpcode";
+        }
+        enum Error_InvalidParam {
+          description
+            "Enum Value - Error_InvalidParam";
+        }
+        enum Error_UnsupportedCmdSegment {
+          description
+            "Enum Value - Error_UnsupportedCmdSegment";
+        }
+        enum Error_UnsupportedDataGen {
+          description
+            "Enum Value - Error_UnsupportedDataGen";
+        }
+        enum Error_InvalidSequence {
+          description
+            "Enum Value - Error_InvalidSequence";
+        }
+        enum Error_InvalidFrame {
+          description
+            "Enum Value - Error_InvalidFrame";
+        }
+        enum Eror_InvalidOpcode {
+          description
+            "Enum Value - Eror_InvalidOpcode";
+        }
+      }
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.DiagnosticsState";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Interface";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Interface";
+    }
+    leaf num-packets-in-burst {
+      type uint32;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.NumPacketsInBurst";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.NumPacketsInBurst";
+    }
+    leaf burst-interval {
+      type uint32;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.BurstInterval";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.BurstInterval";
+    }
+    leaf test-packet-payload-length {
+      type uint32 {
+        range "0..1480";
+      }
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.TestPacketPayloadLength";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.TestPacketPayloadLength";
+    }
+    leaf payload-encoding {
+      type uint32;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadEncoding";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadEncoding";
+    }
+    leaf payload-data-gen {
+      type uint32;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadDataGen";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadDataGen";
+    }
+    leaf payload-type {
+      type enumeration {
+        enum Pattern {
+          description
+            "Enum Value - Pattern";
+        }
+        enum IncrementByte {
+          description
+            "Enum Value - IncrementByte";
+        }
+      }
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadType";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.PayloadType";
+    }
+    leaf priority-level {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.PriorityLevel";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.PriorityLevel";
+    }
+    leaf result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.ResultNumberOfEntries";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.ResultNumberOfEntries";
+    }
+  }
+
+  grouping diagnostics-phy-throughput-result-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf src-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.SrcMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.SrcMACAddress";
+    }
+    leaf dest-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.DestMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.DestMACAddress";
+    }
+    leaf phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.PHYRate";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.PHYRate";
+    }
+    leaf baud-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.BaudRate";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.BaudRate";
+    }
+    leaf snr {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.SNR";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.SNR";
+    }
+    leaf packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.PacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.PacketsReceived";
+    }
+    leaf attenuation {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.Attenuation";
+      reference
+        "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.Attenuation";
+    }
+  }
+
+  grouping hpna-diagnostics-performance-monitoring-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PerformanceMonitoring.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_SampleIntervalTooSmall {
+          description
+            "Enum Value - Error_SampleIntervalTooSmall";
+        }
+      }
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.DiagnosticsState";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Interface";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Interface";
+    }
+    leaf sample-interval {
+      type uint32;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.SampleInterval";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.SampleInterval";
+    }
+  }
+
+  grouping diagnostics-performance-monitoring-channels-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.";
+    leaf time-stamp {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.TimeStamp";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.TimeStamp";
+    }
+    leaf channel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.ChannelNumberOfEntries";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.ChannelNumberOfEntries";
+    }
+  }
+
+  grouping performance-monitoring-channels-channel-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf host-src-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HostSrcMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HostSrcMACAddress";
+    }
+    leaf host-dest-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HostDestMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HostDestMACAddress";
+    }
+    leaf hpna-src-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HPNASrcMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HPNASrcMACAddress";
+    }
+    leaf hpna-dest-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HPNADestMACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.HPNADestMACAddress";
+    }
+    leaf phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PHYRate";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PHYRate";
+    }
+    leaf baud-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.BaudRate";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.BaudRate";
+    }
+    leaf snr {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.SNR";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.SNR";
+    }
+    leaf packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PacketsSent";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PacketsSent";
+    }
+    leaf packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.PacketsReceived";
+    }
+    leaf larq-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.LARQPacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.LARQPacketsReceived";
+    }
+    leaf flow-spec {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.FlowSpec";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.FlowSpec";
+    }
+  }
+
+  grouping diagnostics-performance-monitoring-nodes-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.";
+    leaf current-start {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.CurrentStart";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.CurrentStart";
+    }
+    leaf current-end {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.CurrentEnd";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.CurrentEnd";
+    }
+    leaf node-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.NodeNumberOfEntries";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.NodeNumberOfEntries";
+    }
+  }
+
+  grouping performance-monitoring-nodes-node-g {
+    description
+      "Grouping object for Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MACAddress";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MACAddress";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesSent";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSent";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSent";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSent";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsReceived";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsReceived";
+    }
+    leaf packets-crc-errored {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsCrcErrored";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsCrcErrored";
+    }
+    leaf packets-crc-errored-host {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsCrcErroredHost";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsCrcErroredHost";
+    }
+    leaf packets-short-errored {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsShortErrored";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsShortErrored";
+    }
+    leaf packets-short-errored-host {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsShortErroredHost";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsShortErroredHost";
+    }
+    leaf rx-packets-dropped {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.RxPacketsDropped";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.RxPacketsDropped";
+    }
+    leaf tx-packets-dropped {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.TxPacketsDropped";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.TxPacketsDropped";
+    }
+    leaf control-request-local {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlRequestLocal";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlRequestLocal";
+    }
+    leaf control-reply-local {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlReplyLocal";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlReplyLocal";
+    }
+    leaf control-request-remote {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlRequestRemote";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlRequestRemote";
+    }
+    leaf control-reply-remote {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlReplyRemote";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.ControlReplyRemote";
+    }
+    leaf packets-sent-wire {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSentWire";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsSentWire";
+    }
+    leaf broadcast-packets-sent-wire {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSentWire";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsSentWire";
+    }
+    leaf multicast-packets-sent-wire {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSentWire";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.MulticastPacketsSentWire";
+    }
+    leaf packets-internal-control {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsInternalControl";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsInternalControl";
+    }
+    leaf broadcast-packets-internal-control {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsInternalControl";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.BroadcastPacketsInternalControl";
+    }
+    leaf packets-received-queued {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceivedQueued";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceivedQueued";
+    }
+    leaf packets-received-forward-unknown {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceivedForwardUnknown";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.PacketsReceivedForwardUnknown";
+    }
+    leaf node-utilization {
+      type uint32 {
+        range "0..1000";
+      }
+      config false;
+      description
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.NodeUtilization";
+      reference
+        "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.NodeUtilization";
+    }
+  }
+
+  grouping hpna-interface-g {
+    description
+      "Grouping object for Device.HPNA.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.HPNA.Interface.{i}.Enable";
+      reference
+        "Device.HPNA.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Status";
+      reference
+        "Device.HPNA.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.HPNA.Interface.{i}.Alias";
+      reference
+        "Device.HPNA.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Name";
+      reference
+        "Device.HPNA.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.LastChange";
+      reference
+        "Device.HPNA.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.HPNA.Interface.{i}.LowerLayers";
+      reference
+        "Device.HPNA.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Upstream";
+      reference
+        "Device.HPNA.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.MACAddress";
+      reference
+        "Device.HPNA.Interface.{i}.MACAddress";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.FirmwareVersion";
+      reference
+        "Device.HPNA.Interface.{i}.FirmwareVersion";
+    }
+    leaf node-id {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.NodeID";
+      reference
+        "Device.HPNA.Interface.{i}.NodeID";
+    }
+    leaf is-master {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.IsMaster";
+      reference
+        "Device.HPNA.Interface.{i}.IsMaster";
+    }
+    leaf synced {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Synced";
+      reference
+        "Device.HPNA.Interface.{i}.Synced";
+    }
+    leaf total-sync-time {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.TotalSyncTime";
+      reference
+        "Device.HPNA.Interface.{i}.TotalSyncTime";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.MaxBitRate";
+      reference
+        "Device.HPNA.Interface.{i}.MaxBitRate";
+    }
+    leaf network-utilization {
+      type uint32 {
+        range "0..1000";
+      }
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.NetworkUtilization";
+      reference
+        "Device.HPNA.Interface.{i}.NetworkUtilization";
+    }
+    leaf possible-connection-types {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.PossibleConnectionTypes";
+      reference
+        "Device.HPNA.Interface.{i}.PossibleConnectionTypes";
+    }
+    leaf connection-type {
+      type string;
+      description
+        "Device.HPNA.Interface.{i}.ConnectionType";
+      reference
+        "Device.HPNA.Interface.{i}.ConnectionType";
+    }
+    leaf possible-spectral-modes {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.PossibleSpectralModes";
+      reference
+        "Device.HPNA.Interface.{i}.PossibleSpectralModes";
+    }
+    leaf spectral-mode {
+      type string;
+      description
+        "Device.HPNA.Interface.{i}.SpectralMode";
+      reference
+        "Device.HPNA.Interface.{i}.SpectralMode";
+    }
+    leaf mtu {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.MTU";
+      reference
+        "Device.HPNA.Interface.{i}.MTU";
+    }
+    leaf noise-margin {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.NoiseMargin";
+      reference
+        "Device.HPNA.Interface.{i}.NoiseMargin";
+    }
+    leaf default-non-larqper {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.DefaultNonLARQPER";
+      reference
+        "Device.HPNA.Interface.{i}.DefaultNonLARQPER";
+    }
+    leaf larq-enable {
+      type boolean;
+      description
+        "Device.HPNA.Interface.{i}.LARQEnable";
+      reference
+        "Device.HPNA.Interface.{i}.LARQEnable";
+    }
+    leaf min-multicast-rate {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.MinMulticastRate";
+      reference
+        "Device.HPNA.Interface.{i}.MinMulticastRate";
+    }
+    leaf neg-multicast-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.NegMulticastRate";
+      reference
+        "Device.HPNA.Interface.{i}.NegMulticastRate";
+    }
+    leaf master-selection-mode {
+      type enumeration {
+        enum Automatic {
+          description
+            "Enum Value - Automatic";
+        }
+        enum ForceEndpoint {
+          description
+            "Enum Value - ForceEndpoint";
+        }
+        enum ForceMaster {
+          description
+            "Enum Value - ForceMaster";
+        }
+      }
+      description
+        "Device.HPNA.Interface.{i}.MasterSelectionMode";
+      reference
+        "Device.HPNA.Interface.{i}.MasterSelectionMode";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+  }
+
+  grouping hpna-interface-associated-device-g {
+    description
+      "Grouping object for Device.HPNA.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf node-id {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.NodeID";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.NodeID";
+    }
+    leaf is-master {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.IsMaster";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.IsMaster";
+    }
+    leaf synced {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.Synced";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.Synced";
+    }
+    leaf total-sync-time {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.TotalSyncTime";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.TotalSyncTime";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.MaxBitRate";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.MaxBitRate";
+    }
+    leaf phy-diagnostics-enable {
+      type boolean;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.PHYDiagnosticsEnable";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.PHYDiagnosticsEnable";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping interface-qo-s-g {
+    description
+      "Grouping object for Device.HPNA.Interface.{i}.QoS.";
+    leaf flow-spec-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpecNumberOfEntries";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpecNumberOfEntries";
+    }
+  }
+
+  grouping qo-s-flow-spec-g {
+    description
+      "Grouping object for Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Enable";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Status";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Alias";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Alias";
+    }
+    leaf traffic-classes {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.TrafficClasses";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.TrafficClasses";
+    }
+    leaf flow-type {
+      type enumeration {
+        enum CBR {
+          description
+            "Enum Value - CBR";
+        }
+        enum VBR {
+          description
+            "Enum Value - VBR";
+        }
+        enum VBR-NRT {
+          description
+            "Enum Value - VBR-NRT";
+        }
+        enum BE {
+          description
+            "Enum Value - BE";
+        }
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.FlowType";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.FlowType";
+    }
+    leaf priority {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Priority";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Priority";
+    }
+    leaf latency {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Latency";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Latency";
+    }
+    leaf jitter {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Jitter";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Jitter";
+    }
+    leaf packet-size {
+      type uint32 {
+        range "0..max";
+      }
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.PacketSize";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.PacketSize";
+    }
+    leaf min-rate {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.MinRate";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.MinRate";
+    }
+    leaf avg-rate {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.AvgRate";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.AvgRate";
+    }
+    leaf max-rate {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.MaxRate";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.MaxRate";
+    }
+    leaf per {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.PER";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.PER";
+    }
+    leaf timeout {
+      type uint32;
+      description
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Timeout";
+      reference
+        "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.Timeout";
+    }
+  }
+
+  grouping hpna-interface-stats-g {
+    description
+      "Grouping object for Device.HPNA.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HPNA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.HPNA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping device-home-plug-g {
+    description
+      "Grouping object for Device.HomePlug.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.InterfaceNumberOfEntries";
+      reference
+        "Device.HomePlug.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping home-plug-interface-g {
+    description
+      "Grouping object for Device.HomePlug.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.HomePlug.Interface.{i}.Enable";
+      reference
+        "Device.HomePlug.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Status";
+      reference
+        "Device.HomePlug.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.HomePlug.Interface.{i}.Alias";
+      reference
+        "Device.HomePlug.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Name";
+      reference
+        "Device.HomePlug.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.LastChange";
+      reference
+        "Device.HomePlug.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.HomePlug.Interface.{i}.LowerLayers";
+      reference
+        "Device.HomePlug.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Upstream";
+      reference
+        "Device.HomePlug.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.MACAddress";
+      reference
+        "Device.HomePlug.Interface.{i}.MACAddress";
+    }
+    leaf logical-network {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.HomePlug.Interface.{i}.LogicalNetwork";
+      reference
+        "Device.HomePlug.Interface.{i}.LogicalNetwork";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Version";
+      reference
+        "Device.HomePlug.Interface.{i}.Version";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.FirmwareVersion";
+      reference
+        "Device.HomePlug.Interface.{i}.FirmwareVersion";
+    }
+    leaf force-c-co {
+      type boolean;
+      description
+        "Device.HomePlug.Interface.{i}.ForceCCo";
+      reference
+        "Device.HomePlug.Interface.{i}.ForceCCo";
+    }
+    leaf other-networks-present {
+      type string;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.OtherNetworksPresent";
+      reference
+        "Device.HomePlug.Interface.{i}.OtherNetworksPresent";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.MaxBitRate";
+      reference
+        "Device.HomePlug.Interface.{i}.MaxBitRate";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+  }
+
+  grouping home-plug-interface-associated-device-g {
+    description
+      "Grouping object for Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf tx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.TxPhyRate";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.TxPhyRate";
+    }
+    leaf rx-phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.RxPhyRate";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.RxPhyRate";
+    }
+    leaf snr-per-tone {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.SNRPerTone";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.SNRPerTone";
+    }
+    leaf avg-attenuation {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.AvgAttenuation";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.AvgAttenuation";
+    }
+    leaf end-station-ma-cs {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.EndStationMACs";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.EndStationMACs";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping home-plug-interface-stats-g {
+    description
+      "Grouping object for Device.HomePlug.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+    leaf mpdu-tx-ack {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxAck";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxAck";
+    }
+    leaf mpdu-tx-col {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxCol";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxCol";
+    }
+    leaf mpdu-tx-failed {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxFailed";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MPDUTxFailed";
+    }
+    leaf mpdu-rx-ack {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MPDURxAck";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MPDURxAck";
+    }
+    leaf mpdu-rx-failed {
+      type uint64;
+      config false;
+      description
+        "Device.HomePlug.Interface.{i}.Stats.MPDURxFailed";
+      reference
+        "Device.HomePlug.Interface.{i}.Stats.MPDURxFailed";
+    }
+  }
+
+  grouping device-hosts-g {
+    description
+      "Grouping object for Device.Hosts.";
+    leaf host-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.HostNumberOfEntries";
+      reference
+        "Device.Hosts.HostNumberOfEntries";
+    }
+  }
+
+  grouping hosts-host-g {
+    description
+      "Grouping object for Device.Hosts.Host.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Hosts.Host.{i}.Alias";
+      reference
+        "Device.Hosts.Host.{i}.Alias";
+    }
+    leaf phys-address {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.PhysAddress";
+      reference
+        "Device.Hosts.Host.{i}.PhysAddress";
+    }
+    leaf ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.Hosts.Host.{i}.IPAddress";
+      reference
+        "Device.Hosts.Host.{i}.IPAddress";
+    }
+    leaf address-source {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.AddressSource";
+      reference
+        "Device.Hosts.Host.{i}.AddressSource";
+    }
+    leaf dhcp-client {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.DHCPClient";
+      reference
+        "Device.Hosts.Host.{i}.DHCPClient";
+    }
+    leaf lease-time-remaining {
+      type int32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.LeaseTimeRemaining";
+      reference
+        "Device.Hosts.Host.{i}.LeaseTimeRemaining";
+    }
+    leaf associated-device {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.AssociatedDevice";
+      reference
+        "Device.Hosts.Host.{i}.AssociatedDevice";
+    }
+    leaf layer1-interface {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.Layer1Interface";
+      reference
+        "Device.Hosts.Host.{i}.Layer1Interface";
+    }
+    leaf layer3-interface {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.Layer3Interface";
+      reference
+        "Device.Hosts.Host.{i}.Layer3Interface";
+    }
+    leaf vendor-class-id {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.VendorClassID";
+      reference
+        "Device.Hosts.Host.{i}.VendorClassID";
+    }
+    leaf client-id {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.ClientID";
+      reference
+        "Device.Hosts.Host.{i}.ClientID";
+    }
+    leaf user-class-id {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.UserClassID";
+      reference
+        "Device.Hosts.Host.{i}.UserClassID";
+    }
+    leaf host-name {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.HostName";
+      reference
+        "Device.Hosts.Host.{i}.HostName";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.Active";
+      reference
+        "Device.Hosts.Host.{i}.Active";
+    }
+    leaf active-last-change {
+      type string;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.ActiveLastChange";
+      reference
+        "Device.Hosts.Host.{i}.ActiveLastChange";
+    }
+    leaf ipv4-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.IPv4AddressNumberOfEntries";
+      reference
+        "Device.Hosts.Host.{i}.IPv4AddressNumberOfEntries";
+    }
+    leaf ipv6-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.IPv6AddressNumberOfEntries";
+      reference
+        "Device.Hosts.Host.{i}.IPv6AddressNumberOfEntries";
+    }
+  }
+
+  grouping host-ipv4-address-g {
+    description
+      "Grouping object for Device.Hosts.Host.{i}.IPv4Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ip-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.Hosts.Host.{i}.IPv4Address.{i}.IPAddress";
+      reference
+        "Device.Hosts.Host.{i}.IPv4Address.{i}.IPAddress";
+    }
+  }
+
+  grouping host-ipv6-address-g {
+    description
+      "Grouping object for Device.Hosts.Host.{i}.IPv6Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.Hosts.Host.{i}.IPv6Address.{i}.IPAddress";
+      reference
+        "Device.Hosts.Host.{i}.IPv6Address.{i}.IPAddress";
+    }
+  }
+
+  grouping host-wan-stats-g {
+    description
+      "Grouping object for Device.Hosts.Host.{i}.WANStats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.BytesSent";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.BytesReceived";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.PacketsSent";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.PacketsReceived";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.ErrorsSent";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.ErrorsSent";
+    }
+    leaf retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.RetransCount";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.RetransCount";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Hosts.Host.{i}.WANStats.DiscardPacketsSent";
+      reference
+        "Device.Hosts.Host.{i}.WANStats.DiscardPacketsSent";
+    }
+  }
+
+  grouping device-ieee1905-g {
+    description
+      "Grouping object for Device.IEEE1905.";
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.Version";
+      reference
+        "Device.IEEE1905.Version";
+    }
+  }
+
+  grouping ieee1905-al-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.";
+    leaf ieee1905-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.IEEE1905Id";
+      reference
+        "Device.IEEE1905.AL.IEEE1905Id";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Status";
+      reference
+        "Device.IEEE1905.AL.Status";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.LastChange";
+      reference
+        "Device.IEEE1905.AL.LastChange";
+    }
+    leaf lower-layers {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.LowerLayers";
+      reference
+        "Device.IEEE1905.AL.LowerLayers";
+    }
+    leaf registrar-freq-band {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.RegistrarFreqBand";
+      reference
+        "Device.IEEE1905.AL.RegistrarFreqBand";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.InterfaceNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping al-forwarding-table-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.ForwardingTable.";
+    leaf set-forwarding-enabled {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.SetForwardingEnabled";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.SetForwardingEnabled";
+    }
+    leaf forwarding-rule-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRuleNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRuleNumberOfEntries";
+    }
+  }
+
+  grouping forwarding-table-forwarding-rule-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-list {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.InterfaceList";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.InterfaceList";
+    }
+    leaf mac-destination-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACDestinationAddress";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACDestinationAddress";
+    }
+    leaf mac-destination-address-flag {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACDestinationAddressFlag";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACDestinationAddressFlag";
+    }
+    leaf mac-source-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACSourceAddress";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACSourceAddress";
+    }
+    leaf mac-source-address-flag {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACSourceAddressFlag";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.MACSourceAddressFlag";
+    }
+    leaf ether-type {
+      type uint32;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.EtherType";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.EtherType";
+    }
+    leaf ether-type-flag {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.EtherTypeFlag";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.EtherTypeFlag";
+    }
+    leaf vid {
+      type uint32 {
+        range "0..4095";
+      }
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.Vid";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.Vid";
+    }
+    leaf vid-flag {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.VidFlag";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.VidFlag";
+    }
+    leaf pcp {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.PCP";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.PCP";
+    }
+    leaf pcp-flag {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.PCPFlag";
+      reference
+        "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.PCPFlag";
+    }
+  }
+
+  grouping al-interface-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.InterfaceId";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.InterfaceId";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Status";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Status";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.LastChange";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.LowerLayers";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.LowerLayers";
+    }
+    leaf interface-stack-reference {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.InterfaceStackReference";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.InterfaceStackReference";
+    }
+    leaf media-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.MediaType";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.MediaType";
+    }
+    leaf generic-phy-oui {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyOUI";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyOUI";
+    }
+    leaf generic-phy-variant {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyVariant";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyVariant";
+    }
+    leaf generic-phy-url {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyURL";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.GenericPhyURL";
+    }
+    leaf set-intf-power-state-enabled {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.SetIntfPowerStateEnabled";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.SetIntfPowerStateEnabled";
+    }
+    leaf power-state {
+      type enumeration {
+        enum On {
+          description
+            "Enum Value - On";
+        }
+        enum Power_Save {
+          description
+            "Enum Value - Power_Save";
+        }
+        enum Off {
+          description
+            "Enum Value - Off";
+        }
+        enum Unsupported {
+          description
+            "Enum Value - Unsupported";
+        }
+      }
+      description
+        "Device.IEEE1905.AL.Interface.{i}.PowerState";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.PowerState";
+    }
+    leaf vendor-properties-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.VendorPropertiesNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.VendorPropertiesNumberOfEntries";
+    }
+    leaf link-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.LinkNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.LinkNumberOfEntries";
+    }
+  }
+
+  grouping interface-link-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.Interface.{i}.Link.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.InterfaceId";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.InterfaceId";
+    }
+    leaf ieee1905-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.IEEE1905Id";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.IEEE1905Id";
+    }
+    leaf media-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.MediaType";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.MediaType";
+    }
+    leaf generic-phy-oui {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyOUI";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyOUI";
+    }
+    leaf generic-phy-variant {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyVariant";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyVariant";
+    }
+    leaf generic-phy-url {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyURL";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.GenericPhyURL";
+    }
+  }
+
+  grouping link-metric-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.";
+    leaf ieee802dot1-bridge {
+      type boolean;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.IEEE802dot1Bridge";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.IEEE802dot1Bridge";
+    }
+    leaf packet-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketErrors";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketErrors";
+    }
+    leaf packet-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketErrorsReceived";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketErrorsReceived";
+    }
+    leaf transmitted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.TransmittedPackets";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.TransmittedPackets";
+    }
+    leaf packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketsReceived";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PacketsReceived";
+    }
+    leaf mac-throughput-capacity {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.MACThroughputCapacity";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.MACThroughputCapacity";
+    }
+    leaf link-availability {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.LinkAvailability";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.LinkAvailability";
+    }
+    leaf phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PHYRate";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.PHYRate";
+    }
+    leaf rssi {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.RSSI";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.RSSI";
+    }
+  }
+
+  grouping interface-vendor-properties-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf oui {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.OUI";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.OUI";
+    }
+    leaf information {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.Information";
+      reference
+        "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.Information";
+    }
+  }
+
+  grouping al-network-topology-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.Enable";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.Status";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.Status";
+    }
+    leaf max-change-log-entries {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IEEE1905.AL.NetworkTopology.MaxChangeLogEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.MaxChangeLogEntries";
+    }
+    leaf last-change {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.LastChange";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.LastChange";
+    }
+    leaf ieee1905-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905DeviceNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905DeviceNumberOfEntries";
+    }
+    leaf change-log-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLogNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLogNumberOfEntries";
+    }
+  }
+
+  grouping network-topology-change-log-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf time-stamp {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.TimeStamp";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.TimeStamp";
+    }
+    leaf event-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.EventType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.EventType";
+    }
+    leaf reporter-device-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.ReporterDeviceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.ReporterDeviceId";
+    }
+    leaf reporter-interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.ReporterInterfaceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.ReporterInterfaceId";
+    }
+    leaf neighbor-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.NeighborType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.NeighborType";
+    }
+    leaf neighbor-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.NeighborId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.NeighborId";
+    }
+  }
+
+  grouping network-topology-ieee1905-device-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ieee1905-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Id";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Id";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Version";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Version";
+    }
+    leaf registrar-freq-band {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.RegistrarFreqBand";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.RegistrarFreqBand";
+    }
+    leaf friendly-name {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.FriendlyName";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.FriendlyName";
+    }
+    leaf manufacturer-name {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ManufacturerName";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ManufacturerName";
+    }
+    leaf manufacturer-model {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ManufacturerModel";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ManufacturerModel";
+    }
+    leaf control-url {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ControlURL";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.ControlURL";
+    }
+    leaf vendor-properties-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorPropertiesNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorPropertiesNumberOfEntries";
+    }
+    leaf ipv4-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4AddressNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4AddressNumberOfEntries";
+    }
+    leaf ipv6-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6AddressNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6AddressNumberOfEntries";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.InterfaceNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.InterfaceNumberOfEntries";
+    }
+    leaf non-ieee1905-neighbor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905NeighborNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905NeighborNumberOfEntries";
+    }
+    leaf ieee1905-neighbor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905NeighborNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905NeighborNumberOfEntries";
+    }
+    leaf l2-neighbor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2NeighborNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2NeighborNumberOfEntries";
+    }
+    leaf bridging-tuple-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTupleNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTupleNumberOfEntries";
+    }
+  }
+
+  grouping ieee1905-device-bridging-tuple-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTuple.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-list {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTuple.{i}.InterfaceList";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTuple.{i}.InterfaceList";
+    }
+  }
+
+  grouping ieee1905-device-ieee1905-neighbor-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf local-interface {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.LocalInterface";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.LocalInterface";
+    }
+    leaf neighbor-device-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.NeighborDeviceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.NeighborDeviceId";
+    }
+    leaf metric-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.MetricNumberOfEntries";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.MetricNumberOfEntries";
+    }
+  }
+
+  grouping ieee1905-neighbor-metric-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf neighbor-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.NeighborMACAddress";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.NeighborMACAddress";
+    }
+    leaf ieee802dot1-bridge {
+      type boolean;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.IEEE802dot1Bridge";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.IEEE802dot1Bridge";
+    }
+    leaf packet-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketErrors";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketErrors";
+    }
+    leaf packet-errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketErrorsReceived";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketErrorsReceived";
+    }
+    leaf transmitted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.TransmittedPackets";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.TransmittedPackets";
+    }
+    leaf packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketsReceived";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PacketsReceived";
+    }
+    leaf mac-throughput-capacity {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.MACThroughputCapacity";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.MACThroughputCapacity";
+    }
+    leaf link-availability {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.LinkAvailability";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.LinkAvailability";
+    }
+    leaf phy-rate {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PHYRate";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.PHYRate";
+    }
+    leaf rssi {
+      type uint32 {
+        range "0..255";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.RSSI";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.RSSI";
+    }
+  }
+
+  grouping ieee1905-device-ipv4-address-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.MACAddress";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.MACAddress";
+    }
+    leaf ipv4-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.IPv4Address";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.IPv4Address";
+    }
+    leaf ipv4-address-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.IPv4AddressType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.IPv4AddressType";
+    }
+    leaf dhcp-server {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.DHCPServer";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.DHCPServer";
+    }
+  }
+
+  grouping ieee1905-device-ipv6-address-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.MACAddress";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.MACAddress";
+    }
+    leaf ipv6-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6Address";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6Address";
+    }
+    leaf ipv6-address-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6AddressType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6AddressType";
+    }
+    leaf ipv6-address-origin {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6AddressOrigin";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.IPv6AddressOrigin";
+    }
+  }
+
+  grouping ieee1905-device-interface-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.InterfaceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.InterfaceId";
+    }
+    leaf media-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.MediaType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.MediaType";
+    }
+    leaf power-state {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.PowerState";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.PowerState";
+    }
+    leaf generic-phy-oui {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyOUI";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyOUI";
+    }
+    leaf generic-phy-variant {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyVariant";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyVariant";
+    }
+    leaf generic-phy-url {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyURL";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.GenericPhyURL";
+    }
+    leaf network-membership {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.NetworkMembership";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.NetworkMembership";
+    }
+    leaf role {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.Role";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.Role";
+    }
+    leaf ap-channel-band {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.APChannelBand";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.APChannelBand";
+    }
+    leaf frequency-index1 {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.FrequencyIndex1";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.FrequencyIndex1";
+    }
+    leaf frequency-index2 {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.FrequencyIndex2";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.FrequencyIndex2";
+    }
+  }
+
+  grouping ieee1905-device-l2-neighbor-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf local-interface {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.LocalInterface";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.LocalInterface";
+    }
+    leaf neighbor-interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.NeighborInterfaceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.NeighborInterfaceId";
+    }
+    leaf behind-interface-ids {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.BehindInterfaceIds";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.BehindInterfaceIds";
+    }
+  }
+
+  grouping ieee1905-device-non-ieee1905-neighbor-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf local-interface {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.LocalInterface";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.LocalInterface";
+    }
+    leaf neighbor-interface-id {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.NeighborInterfaceId";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.NeighborInterfaceId";
+    }
+  }
+
+  grouping ieee1905-device-vendor-properties-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf message-type {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.MessageType";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.MessageType";
+    }
+    leaf oui {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.OUI";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.OUI";
+    }
+    leaf information {
+      type string;
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.Information";
+      reference
+        "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.Information";
+    }
+  }
+
+  grouping al-networking-registrar-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.NetworkingRegistrar.";
+    leaf registrar2dot4 {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar2dot4";
+      reference
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar2dot4";
+    }
+    leaf registrar5 {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar5";
+      reference
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar5";
+    }
+    leaf registrar60 {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar60";
+      reference
+        "Device.IEEE1905.AL.NetworkingRegistrar.Registrar60";
+    }
+  }
+
+  grouping al-security-g {
+    description
+      "Grouping object for Device.IEEE1905.AL.Security.";
+    leaf setup-method {
+      type enumeration {
+        enum UCPK {
+          description
+            "Enum Value - UCPK";
+        }
+        enum PBC {
+          description
+            "Enum Value - PBC";
+        }
+        enum NFCNK {
+          description
+            "Enum Value - NFCNK";
+        }
+      }
+      description
+        "Device.IEEE1905.AL.Security.SetupMethod";
+      reference
+        "Device.IEEE1905.AL.Security.SetupMethod";
+    }
+  }
+
+  grouping device-ieee8021x-g {
+    description
+      "Grouping object for Device.IEEE8021x.";
+    leaf supplicant-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.SupplicantNumberOfEntries";
+      reference
+        "Device.IEEE8021x.SupplicantNumberOfEntries";
+    }
+  }
+
+  grouping ieee8021x-supplicant-g {
+    description
+      "Grouping object for Device.IEEE8021x.Supplicant.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Enable";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Status";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Alias";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Interface";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Interface";
+    }
+    leaf pae-state {
+      type string;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.PAEState";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.PAEState";
+    }
+    leaf eap-identity {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.EAPIdentity";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.EAPIdentity";
+    }
+    leaf max-start {
+      type uint32 {
+        range "1..10";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.MaxStart";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.MaxStart";
+    }
+    leaf start-period {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.StartPeriod";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.StartPeriod";
+    }
+    leaf held-period {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.HeldPeriod";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.HeldPeriod";
+    }
+    leaf auth-period {
+      type uint32;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.AuthPeriod";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.AuthPeriod";
+    }
+    leaf authentication-capabilities {
+      type string;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.AuthenticationCapabilities";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.AuthenticationCapabilities";
+    }
+    leaf start-failure-policy {
+      type enumeration {
+        enum FailAuthentication {
+          description
+            "Enum Value - FailAuthentication";
+        }
+        enum AssumeAuthentication {
+          description
+            "Enum Value - AssumeAuthentication";
+        }
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.StartFailurePolicy";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.StartFailurePolicy";
+    }
+    leaf authentication-success-policy {
+      type enumeration {
+        enum NoAction {
+          description
+            "Enum Value - NoAction";
+        }
+        enum RenewConnection {
+          description
+            "Enum Value - RenewConnection";
+        }
+      }
+      description
+        "Device.IEEE8021x.Supplicant.{i}.AuthenticationSuccessPolicy";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.AuthenticationSuccessPolicy";
+    }
+  }
+
+  grouping supplicant-eapm-d5-g {
+    description
+      "Grouping object for Device.IEEE8021x.Supplicant.{i}.EAPMD5.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.EAPMD5.Enable";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.EAPMD5.Enable";
+    }
+  }
+
+  grouping supplicant-eaptls-g {
+    description
+      "Grouping object for Device.IEEE8021x.Supplicant.{i}.EAPTLS.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.EAPTLS.Enable";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.EAPTLS.Enable";
+    }
+    leaf mutual-authentication-enable {
+      type boolean;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.EAPTLS.MutualAuthenticationEnable";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.EAPTLS.MutualAuthenticationEnable";
+    }
+  }
+
+  grouping supplicant-stats-g {
+    description
+      "Grouping object for Device.IEEE8021x.Supplicant.{i}.Stats.";
+    leaf received-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedFrames";
+    }
+    leaf transmitted-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedFrames";
+    }
+    leaf transmitted-start-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedStartFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedStartFrames";
+    }
+    leaf transmitted-logoff-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedLogoffFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedLogoffFrames";
+    }
+    leaf transmitted-response-id-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedResponseIdFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedResponseIdFrames";
+    }
+    leaf transmitted-response-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedResponseFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.TransmittedResponseFrames";
+    }
+    leaf received-request-id-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedRequestIdFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedRequestIdFrames";
+    }
+    leaf received-request-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedRequestFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedRequestFrames";
+    }
+    leaf received-invalid-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedInvalidFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedInvalidFrames";
+    }
+    leaf received-length-error-frames {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedLengthErrorFrames";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.ReceivedLengthErrorFrames";
+    }
+    leaf last-frame-version {
+      type uint32;
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.LastFrameVersion";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.LastFrameVersion";
+    }
+    leaf last-frame-source-mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.IEEE8021x.Supplicant.{i}.Stats.LastFrameSourceMACAddress";
+      reference
+        "Device.IEEE8021x.Supplicant.{i}.Stats.LastFrameSourceMACAddress";
+    }
+  }
+
+  grouping device-ip-g {
+    description
+      "Grouping object for Device.IP.";
+    leaf ipv4-capable {
+      type boolean;
+      config false;
+      description
+        "Device.IP.IPv4Capable";
+      reference
+        "Device.IP.IPv4Capable";
+    }
+    leaf ipv4-enable {
+      type boolean;
+      description
+        "Device.IP.IPv4Enable";
+      reference
+        "Device.IP.IPv4Enable";
+    }
+    leaf ipv4-status {
+      type string;
+      config false;
+      description
+        "Device.IP.IPv4Status";
+      reference
+        "Device.IP.IPv4Status";
+    }
+    leaf ipv6-capable {
+      type boolean;
+      config false;
+      description
+        "Device.IP.IPv6Capable";
+      reference
+        "Device.IP.IPv6Capable";
+    }
+    leaf ipv6-enable {
+      type boolean;
+      description
+        "Device.IP.IPv6Enable";
+      reference
+        "Device.IP.IPv6Enable";
+    }
+    leaf ipv6-status {
+      type string;
+      config false;
+      description
+        "Device.IP.IPv6Status";
+      reference
+        "Device.IP.IPv6Status";
+    }
+    leaf ula-prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.IP.ULAPrefix";
+      reference
+        "Device.IP.ULAPrefix";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.InterfaceNumberOfEntries";
+      reference
+        "Device.IP.InterfaceNumberOfEntries";
+    }
+    leaf active-port-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.ActivePortNumberOfEntries";
+      reference
+        "Device.IP.ActivePortNumberOfEntries";
+    }
+  }
+
+  grouping ip-active-port-g {
+    description
+      "Grouping object for Device.IP.ActivePort.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf local-ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.ActivePort.{i}.LocalIPAddress";
+      reference
+        "Device.IP.ActivePort.{i}.LocalIPAddress";
+    }
+    leaf local-port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.IP.ActivePort.{i}.LocalPort";
+      reference
+        "Device.IP.ActivePort.{i}.LocalPort";
+    }
+    leaf remote-ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.ActivePort.{i}.RemoteIPAddress";
+      reference
+        "Device.IP.ActivePort.{i}.RemoteIPAddress";
+    }
+    leaf remote-port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.IP.ActivePort.{i}.RemotePort";
+      reference
+        "Device.IP.ActivePort.{i}.RemotePort";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.ActivePort.{i}.Status";
+      reference
+        "Device.IP.ActivePort.{i}.Status";
+    }
+  }
+
+  grouping ip-diagnostics-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.";
+    leaf ipv4-ping-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4PingSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4PingSupported";
+    }
+    leaf ipv6-ping-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6PingSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6PingSupported";
+    }
+    leaf ipv4-trace-route-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4TraceRouteSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4TraceRouteSupported";
+    }
+    leaf ipv6-trace-route-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6TraceRouteSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6TraceRouteSupported";
+    }
+    leaf ipv4-download-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4DownloadDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4DownloadDiagnosticsSupported";
+    }
+    leaf ipv6-download-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6DownloadDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6DownloadDiagnosticsSupported";
+    }
+    leaf ipv4-upload-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4UploadDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4UploadDiagnosticsSupported";
+    }
+    leaf ipv6-upload-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6UploadDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6UploadDiagnosticsSupported";
+    }
+    leaf ipv4-udp-echo-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4UDPEchoDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4UDPEchoDiagnosticsSupported";
+    }
+    leaf ipv6-udp-echo-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6UDPEchoDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6UDPEchoDiagnosticsSupported";
+    }
+    leaf ipv4-server-selection-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv4ServerSelectionDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv4ServerSelectionDiagnosticsSupported";
+    }
+    leaf ipv6-server-selection-diagnostics-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPv6ServerSelectionDiagnosticsSupported";
+      reference
+        "Device.IP.Diagnostics.IPv6ServerSelectionDiagnosticsSupported";
+    }
+  }
+
+  grouping diagnostics-download-diagnostics-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.DownloadDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Completed {
+          description
+            "Enum Value - Completed";
+        }
+        enum Error_CannotResolveHostName {
+          description
+            "Enum Value - Error_CannotResolveHostName";
+        }
+        enum Error_NoRouteToHost {
+          description
+            "Enum Value - Error_NoRouteToHost";
+        }
+        enum Error_InitConnectionFailed {
+          description
+            "Enum Value - Error_InitConnectionFailed";
+        }
+        enum Error_NoResponse {
+          description
+            "Enum Value - Error_NoResponse";
+        }
+        enum Error_TransferFailed {
+          description
+            "Enum Value - Error_TransferFailed";
+        }
+        enum Error_PasswordRequestFailed {
+          description
+            "Enum Value - Error_PasswordRequestFailed";
+        }
+        enum Error_LoginFailed {
+          description
+            "Enum Value - Error_LoginFailed";
+        }
+        enum Error_NoTransferMode {
+          description
+            "Enum Value - Error_NoTransferMode";
+        }
+        enum Error_NoPASV {
+          description
+            "Enum Value - Error_NoPASV";
+        }
+        enum Error_IncorrectSize {
+          description
+            "Enum Value - Error_IncorrectSize";
+        }
+        enum Error_Timeout {
+          description
+            "Enum Value - Error_Timeout";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.Interface";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.Interface";
+    }
+    leaf download-url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadURL";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadURL";
+    }
+    leaf download-transports {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadTransports";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadTransports";
+    }
+    leaf download-diagnostic-max-connections {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadDiagnosticMaxConnections";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadDiagnosticMaxConnections";
+    }
+    leaf download-diagnostics-max-incremental-result {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadDiagnosticsMaxIncrementalResult";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DownloadDiagnosticsMaxIncrementalResult";
+    }
+    leaf dscp {
+      type uint32 {
+        range "0..63";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.DSCP";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.DSCP";
+    }
+    leaf ethernet-priority {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.EthernetPriority";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.EthernetPriority";
+    }
+    leaf time-based-test-duration {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestDuration";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestDuration";
+    }
+    leaf time-based-test-measurement-interval {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestMeasurementInterval";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestMeasurementInterval";
+    }
+    leaf time-based-test-measurement-offset {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestMeasurementOffset";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TimeBasedTestMeasurementOffset";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.ProtocolVersion";
+    }
+    leaf number-of-connections {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.NumberOfConnections";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.NumberOfConnections";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IPAddressUsed";
+    }
+    leaf rom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.ROMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.ROMTime";
+    }
+    leaf bom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.BOMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.BOMTime";
+    }
+    leaf eom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.EOMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.EOMTime";
+    }
+    leaf test-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TestBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TestBytesReceived";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesSent";
+    }
+    leaf test-bytes-received-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TestBytesReceivedUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TestBytesReceivedUnderFullLoading";
+    }
+    leaf total-bytes-received-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesReceivedUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesReceivedUnderFullLoading";
+    }
+    leaf total-bytes-sent-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesSentUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TotalBytesSentUnderFullLoading";
+    }
+    leaf period-of-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PeriodOfFullLoading";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PeriodOfFullLoading";
+    }
+    leaf tcp-open-request-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TCPOpenRequestTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TCPOpenRequestTime";
+    }
+    leaf tcp-open-response-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.TCPOpenResponseTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.TCPOpenResponseTime";
+    }
+    leaf per-connection-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResultNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResultNumberOfEntries";
+    }
+    leaf enable-per-connection-results {
+      type boolean;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.EnablePerConnectionResults";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.EnablePerConnectionResults";
+    }
+    leaf incremental-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResultNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResultNumberOfEntries";
+    }
+  }
+
+  grouping download-diagnostics-incremental-result-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf test-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TestBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TestBytesReceived";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.TotalBytesSent";
+    }
+    leaf start-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.StartTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.StartTime";
+    }
+    leaf end-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.EndTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.EndTime";
+    }
+  }
+
+  grouping download-diagnostics-per-connection-result-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf rom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.ROMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.ROMTime";
+    }
+    leaf bom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.BOMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.BOMTime";
+    }
+    leaf eom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.EOMTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.EOMTime";
+    }
+    leaf test-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TestBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TestBytesReceived";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TotalBytesSent";
+    }
+    leaf tcp-open-request-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TCPOpenRequestTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TCPOpenRequestTime";
+    }
+    leaf tcp-open-response-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TCPOpenResponseTime";
+      reference
+        "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.TCPOpenResponseTime";
+    }
+  }
+
+  grouping diagnostics-ip-ping-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.IPPing.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_CannotResolveHostName {
+          description
+            "Enum Value - Error_CannotResolveHostName";
+        }
+        enum Error_NoRouteToHost {
+          description
+            "Enum Value - Error_NoRouteToHost";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.IPPing.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.Interface";
+      reference
+        "Device.IP.Diagnostics.IPPing.Interface";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.IPPing.ProtocolVersion";
+    }
+    leaf host {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.Host";
+      reference
+        "Device.IP.Diagnostics.IPPing.Host";
+    }
+    leaf number-of-repetitions {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.NumberOfRepetitions";
+      reference
+        "Device.IP.Diagnostics.IPPing.NumberOfRepetitions";
+    }
+    leaf timeout {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.Timeout";
+      reference
+        "Device.IP.Diagnostics.IPPing.Timeout";
+    }
+    leaf data-block-size {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.DataBlockSize";
+      reference
+        "Device.IP.Diagnostics.IPPing.DataBlockSize";
+    }
+    leaf dscp {
+      type uint32 {
+        range "0..63";
+      }
+      description
+        "Device.IP.Diagnostics.IPPing.DSCP";
+      reference
+        "Device.IP.Diagnostics.IPPing.DSCP";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.IPPing.IPAddressUsed";
+    }
+    leaf success-count {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.SuccessCount";
+      reference
+        "Device.IP.Diagnostics.IPPing.SuccessCount";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.FailureCount";
+      reference
+        "Device.IP.Diagnostics.IPPing.FailureCount";
+    }
+    leaf average-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.AverageResponseTime";
+      reference
+        "Device.IP.Diagnostics.IPPing.AverageResponseTime";
+    }
+    leaf minimum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.MinimumResponseTime";
+      reference
+        "Device.IP.Diagnostics.IPPing.MinimumResponseTime";
+    }
+    leaf maximum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.MaximumResponseTime";
+      reference
+        "Device.IP.Diagnostics.IPPing.MaximumResponseTime";
+    }
+    leaf average-response-time-detailed {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.AverageResponseTimeDetailed";
+      reference
+        "Device.IP.Diagnostics.IPPing.AverageResponseTimeDetailed";
+    }
+    leaf minimum-response-time-detailed {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.MinimumResponseTimeDetailed";
+      reference
+        "Device.IP.Diagnostics.IPPing.MinimumResponseTimeDetailed";
+    }
+    leaf maximum-response-time-detailed {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.IPPing.MaximumResponseTimeDetailed";
+      reference
+        "Device.IP.Diagnostics.IPPing.MaximumResponseTimeDetailed";
+    }
+  }
+
+  grouping diagnostics-server-selection-diagnostics-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.ServerSelectionDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Completed {
+          description
+            "Enum Value - Completed";
+        }
+        enum Error_CannotResolveHostName {
+          description
+            "Enum Value - Error_CannotResolveHostName";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Interface";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Interface";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.ProtocolVersion";
+    }
+    leaf protocol {
+      type enumeration {
+        enum ICMP {
+          description
+            "Enum Value - ICMP";
+        }
+        enum "UDP Echo" {
+          description
+            "Enum Value - UDP Echo";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Protocol";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Protocol";
+    }
+    leaf host-list {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.HostList";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.HostList";
+    }
+    leaf number-of-repetitions {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.NumberOfRepetitions";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.NumberOfRepetitions";
+    }
+    leaf timeout {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Timeout";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.Timeout";
+    }
+    leaf fastest-host {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.FastestHost";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.FastestHost";
+    }
+    leaf minimum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.MinimumResponseTime";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.MinimumResponseTime";
+    }
+    leaf average-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.AverageResponseTime";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.AverageResponseTime";
+    }
+    leaf maximum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.MaximumResponseTime";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.MaximumResponseTime";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.ServerSelectionDiagnostics.IPAddressUsed";
+    }
+  }
+
+  grouping diagnostics-trace-route-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.TraceRoute.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_MaxHopCountExceeded {
+          description
+            "Enum Value - Error_MaxHopCountExceeded";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.Interface";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.Interface";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.ProtocolVersion";
+    }
+    leaf host {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.Host";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.Host";
+    }
+    leaf number-of-tries {
+      type uint32 {
+        range "1..3";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.NumberOfTries";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.NumberOfTries";
+    }
+    leaf timeout {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.Timeout";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.Timeout";
+    }
+    leaf data-block-size {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.DataBlockSize";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.DataBlockSize";
+    }
+    leaf dscp {
+      type uint32 {
+        range "0..63";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.DSCP";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.DSCP";
+    }
+    leaf max-hop-count {
+      type uint32 {
+        range "1..64";
+      }
+      description
+        "Device.IP.Diagnostics.TraceRoute.MaxHopCount";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.MaxHopCount";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.IPAddressUsed";
+    }
+    leaf response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.ResponseTime";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.ResponseTime";
+    }
+    leaf route-hops-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.RouteHopsNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.RouteHopsNumberOfEntries";
+    }
+  }
+
+  grouping trace-route-route-hops-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.Host";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.Host";
+    }
+    leaf host-address {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.HostAddress";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.HostAddress";
+    }
+    leaf error-code {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.ErrorCode";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.ErrorCode";
+    }
+    leaf rt-times {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.RTTimes";
+      reference
+        "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.RTTimes";
+    }
+  }
+
+  grouping diagnostics-udp-echo-config-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UDPEchoConfig.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.Enable";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.Enable";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.Interface";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.Interface";
+    }
+    leaf source-ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.SourceIPAddress";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.SourceIPAddress";
+    }
+    leaf udp-port {
+      type uint32;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.UDPPort";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.UDPPort";
+    }
+    leaf echo-plus-enabled {
+      type boolean;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.EchoPlusEnabled";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.EchoPlusEnabled";
+    }
+    leaf echo-plus-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.EchoPlusSupported";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.EchoPlusSupported";
+    }
+    leaf packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.PacketsReceived";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.PacketsReceived";
+    }
+    leaf packets-responded {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.PacketsResponded";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.PacketsResponded";
+    }
+    leaf bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.BytesReceived";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.BytesReceived";
+    }
+    leaf bytes-responded {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.BytesResponded";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.BytesResponded";
+    }
+    leaf time-first-packet-received {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.TimeFirstPacketReceived";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.TimeFirstPacketReceived";
+    }
+    leaf time-last-packet-received {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoConfig.TimeLastPacketReceived";
+      reference
+        "Device.IP.Diagnostics.UDPEchoConfig.TimeLastPacketReceived";
+    }
+  }
+
+  grouping diagnostics-udp-echo-diagnostics-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UDPEchoDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Completed {
+          description
+            "Enum Value - Completed";
+        }
+        enum Error_CannotResolveHostName {
+          description
+            "Enum Value - Error_CannotResolveHostName";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Interface";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Interface";
+    }
+    leaf host {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Host";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Host";
+    }
+    leaf port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Port";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Port";
+    }
+    leaf number-of-repetitions {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.NumberOfRepetitions";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.NumberOfRepetitions";
+    }
+    leaf timeout {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Timeout";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.Timeout";
+    }
+    leaf data-block-size {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DataBlockSize";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DataBlockSize";
+    }
+    leaf dscp {
+      type uint32 {
+        range "0..63";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DSCP";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.DSCP";
+    }
+    leaf inter-transmission-time {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.InterTransmissionTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.InterTransmissionTime";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.ProtocolVersion";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IPAddressUsed";
+    }
+    leaf success-count {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.SuccessCount";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.SuccessCount";
+    }
+    leaf failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.FailureCount";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.FailureCount";
+    }
+    leaf average-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.AverageResponseTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.AverageResponseTime";
+    }
+    leaf minimum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.MinimumResponseTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.MinimumResponseTime";
+    }
+    leaf maximum-response-time {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.MaximumResponseTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.MaximumResponseTime";
+    }
+    leaf enable-individual-packet-results {
+      type boolean;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.EnableIndividualPacketResults";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.EnableIndividualPacketResults";
+    }
+    leaf individual-packet-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResultNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResultNumberOfEntries";
+    }
+    leaf udp-echo-diagnostics-max-results {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.UDPEchoDiagnosticsMaxResults";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.UDPEchoDiagnosticsMaxResults";
+    }
+  }
+
+  grouping udp-echo-diagnostics-individual-packet-result-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf packet-success {
+      type boolean;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketSuccess";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketSuccess";
+    }
+    leaf packet-send-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketSendTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketSendTime";
+    }
+    leaf packet-receive-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketReceiveTime";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.PacketReceiveTime";
+    }
+    leaf test-gen-sn {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestGenSN";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestGenSN";
+    }
+    leaf test-resp-sn {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespSN";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespSN";
+    }
+    leaf test-resp-rcv-time-stamp {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespRcvTimeStamp";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespRcvTimeStamp";
+    }
+    leaf test-resp-reply-time-stamp {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespReplyTimeStamp";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespReplyTimeStamp";
+    }
+    leaf test-resp-reply-failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespReplyFailureCount";
+      reference
+        "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.TestRespReplyFailureCount";
+    }
+  }
+
+  grouping diagnostics-upload-diagnostics-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UploadDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Completed {
+          description
+            "Enum Value - Completed";
+        }
+        enum Error_CannotResolveHostName {
+          description
+            "Enum Value - Error_CannotResolveHostName";
+        }
+        enum Error_NoRouteToHost {
+          description
+            "Enum Value - Error_NoRouteToHost";
+        }
+        enum Error_InitConnectionFailed {
+          description
+            "Enum Value - Error_InitConnectionFailed";
+        }
+        enum Error_NoResponse {
+          description
+            "Enum Value - Error_NoResponse";
+        }
+        enum Error_PasswordRequestFailed {
+          description
+            "Enum Value - Error_PasswordRequestFailed";
+        }
+        enum Error_LoginFailed {
+          description
+            "Enum Value - Error_LoginFailed";
+        }
+        enum Error_NoTransferMode {
+          description
+            "Enum Value - Error_NoTransferMode";
+        }
+        enum Error_NoPASV {
+          description
+            "Enum Value - Error_NoPASV";
+        }
+        enum Error_NoCWD {
+          description
+            "Enum Value - Error_NoCWD";
+        }
+        enum Error_NoSTOR {
+          description
+            "Enum Value - Error_NoSTOR";
+        }
+        enum Error_NoTransferComplete {
+          description
+            "Enum Value - Error_NoTransferComplete";
+        }
+        enum Error_Timeout {
+          description
+            "Enum Value - Error_Timeout";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.DiagnosticsState";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.DiagnosticsState";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.Interface";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.Interface";
+    }
+    leaf upload-url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadURL";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadURL";
+    }
+    leaf upload-transports {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadTransports";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadTransports";
+    }
+    leaf upload-diagnostics-max-connections {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadDiagnosticsMaxConnections";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadDiagnosticsMaxConnections";
+    }
+    leaf upload-diagnostics-max-incremental-result {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadDiagnosticsMaxIncrementalResult";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.UploadDiagnosticsMaxIncrementalResult";
+    }
+    leaf dscp {
+      type uint32 {
+        range "0..63";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.DSCP";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.DSCP";
+    }
+    leaf ethernet-priority {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.EthernetPriority";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.EthernetPriority";
+    }
+    leaf test-file-length {
+      type uint32;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TestFileLength";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TestFileLength";
+    }
+    leaf time-based-test-duration {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestDuration";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestDuration";
+    }
+    leaf time-based-test-measurement-interval {
+      type uint32 {
+        range "0..999";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestMeasurementInterval";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestMeasurementInterval";
+    }
+    leaf time-based-test-measurement-offset {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestMeasurementOffset";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TimeBasedTestMeasurementOffset";
+    }
+    leaf protocol-version {
+      type enumeration {
+        enum Any {
+          description
+            "Enum Value - Any";
+        }
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.ProtocolVersion";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.ProtocolVersion";
+    }
+    leaf number-of-connections {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.NumberOfConnections";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.NumberOfConnections";
+    }
+    leaf ip-address-used {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IPAddressUsed";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IPAddressUsed";
+    }
+    leaf rom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.ROMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.ROMTime";
+    }
+    leaf bom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.BOMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.BOMTime";
+    }
+    leaf eom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.EOMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.EOMTime";
+    }
+    leaf test-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TestBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TestBytesSent";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesSent";
+    }
+    leaf test-bytes-sent-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TestBytesSentUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TestBytesSentUnderFullLoading";
+    }
+    leaf total-bytes-received-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesReceivedUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesReceivedUnderFullLoading";
+    }
+    leaf total-bytes-sent-under-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesSentUnderFullLoading";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TotalBytesSentUnderFullLoading";
+    }
+    leaf period-of-full-loading {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PeriodOfFullLoading";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PeriodOfFullLoading";
+    }
+    leaf tcp-open-request-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TCPOpenRequestTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TCPOpenRequestTime";
+    }
+    leaf tcp-open-response-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.TCPOpenResponseTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.TCPOpenResponseTime";
+    }
+    leaf per-connection-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResultNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResultNumberOfEntries";
+    }
+    leaf enable-per-connection-results {
+      type boolean;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.EnablePerConnectionResults";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.EnablePerConnectionResults";
+    }
+    leaf incremental-result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResultNumberOfEntries";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResultNumberOfEntries";
+    }
+  }
+
+  grouping upload-diagnostics-incremental-result-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf test-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TestBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TestBytesSent";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.TotalBytesSent";
+    }
+    leaf start-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.StartTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.StartTime";
+    }
+    leaf end-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.EndTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.EndTime";
+    }
+  }
+
+  grouping upload-diagnostics-per-connection-result-g {
+    description
+      "Grouping object for Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf rom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.ROMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.ROMTime";
+    }
+    leaf bom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.BOMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.BOMTime";
+    }
+    leaf eom-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.EOMTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.EOMTime";
+    }
+    leaf test-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TestBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TestBytesSent";
+    }
+    leaf total-bytes-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TotalBytesReceived";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TotalBytesReceived";
+    }
+    leaf total-bytes-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TotalBytesSent";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TotalBytesSent";
+    }
+    leaf tcp-open-request-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TCPOpenRequestTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TCPOpenRequestTime";
+    }
+    leaf tcp-open-response-time {
+      type string;
+      config false;
+      description
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TCPOpenResponseTime";
+      reference
+        "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.TCPOpenResponseTime";
+    }
+  }
+
+  grouping ip-interface-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.Enable";
+      reference
+        "Device.IP.Interface.{i}.Enable";
+    }
+    leaf ipv4-enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv4Enable";
+      reference
+        "Device.IP.Interface.{i}.IPv4Enable";
+    }
+    leaf ipv6-enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Enable";
+      reference
+        "Device.IP.Interface.{i}.IPv6Enable";
+    }
+    leaf ula-enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.ULAEnable";
+      reference
+        "Device.IP.Interface.{i}.ULAEnable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Status";
+      reference
+        "Device.IP.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IP.Interface.{i}.Alias";
+      reference
+        "Device.IP.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Name";
+      reference
+        "Device.IP.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.LastChange";
+      reference
+        "Device.IP.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.IP.Interface.{i}.LowerLayers";
+      reference
+        "Device.IP.Interface.{i}.LowerLayers";
+    }
+    leaf router {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IP.Interface.{i}.Router";
+      reference
+        "Device.IP.Interface.{i}.Router";
+    }
+    leaf max-mtu-size {
+      type uint32 {
+        range "64..65535";
+      }
+      description
+        "Device.IP.Interface.{i}.MaxMTUSize";
+      reference
+        "Device.IP.Interface.{i}.MaxMTUSize";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Type";
+      reference
+        "Device.IP.Interface.{i}.Type";
+    }
+    leaf loopback {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.Loopback";
+      reference
+        "Device.IP.Interface.{i}.Loopback";
+    }
+    leaf ipv4-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv4AddressNumberOfEntries";
+      reference
+        "Device.IP.Interface.{i}.IPv4AddressNumberOfEntries";
+    }
+    leaf ipv6-address-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6AddressNumberOfEntries";
+      reference
+        "Device.IP.Interface.{i}.IPv6AddressNumberOfEntries";
+    }
+    leaf ipv6-prefix-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6PrefixNumberOfEntries";
+      reference
+        "Device.IP.Interface.{i}.IPv6PrefixNumberOfEntries";
+    }
+    leaf auto-ip-enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.AutoIPEnable";
+      reference
+        "Device.IP.Interface.{i}.AutoIPEnable";
+    }
+    leaf twamp-reflector-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.TWAMPReflectorNumberOfEntries";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflectorNumberOfEntries";
+    }
+  }
+
+  grouping interface-ipv4-address-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.IPv4Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Enable";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Status";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Alias";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.Alias";
+    }
+    leaf ip-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.IPAddress";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.IPAddress";
+    }
+    leaf subnet-mask {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.SubnetMask";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.SubnetMask";
+    }
+    leaf addressing-type {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv4Address.{i}.AddressingType";
+      reference
+        "Device.IP.Interface.{i}.IPv4Address.{i}.AddressingType";
+    }
+  }
+
+  grouping interface-ipv6-address-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.IPv6Address.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Enable";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Status";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Status";
+    }
+    leaf ip-address-status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.IPAddressStatus";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.IPAddressStatus";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Alias";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Alias";
+    }
+    leaf ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.IPAddress";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.IPAddress";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Origin";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Origin";
+    }
+    leaf prefix {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Prefix";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Prefix";
+    }
+    leaf preferred-lifetime {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.PreferredLifetime";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.PreferredLifetime";
+    }
+    leaf valid-lifetime {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.ValidLifetime";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.ValidLifetime";
+    }
+    leaf anycast {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Anycast";
+      reference
+        "Device.IP.Interface.{i}.IPv6Address.{i}.Anycast";
+    }
+  }
+
+  grouping interface-ipv6-prefix-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.IPv6Prefix.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Enable";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Status";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Status";
+    }
+    leaf prefix-status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.PrefixStatus";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.PrefixStatus";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Alias";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Alias";
+    }
+    leaf prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Prefix";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Prefix";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Origin";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Origin";
+    }
+    leaf static-type {
+      type enumeration {
+        enum Static {
+          description
+            "Enum Value - Static";
+        }
+        enum Inapplicable {
+          description
+            "Enum Value - Inapplicable";
+        }
+        enum PrefixDelegation {
+          description
+            "Enum Value - PrefixDelegation";
+        }
+        enum Child {
+          description
+            "Enum Value - Child";
+        }
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.StaticType";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.StaticType";
+    }
+    leaf parent-prefix {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ParentPrefix";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ParentPrefix";
+    }
+    leaf child-prefix-bits {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ChildPrefixBits";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ChildPrefixBits";
+    }
+    leaf on-link {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.OnLink";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.OnLink";
+    }
+    leaf autonomous {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Autonomous";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.Autonomous";
+    }
+    leaf preferred-lifetime {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.PreferredLifetime";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.PreferredLifetime";
+    }
+    leaf valid-lifetime {
+      type string;
+      description
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ValidLifetime";
+      reference
+        "Device.IP.Interface.{i}.IPv6Prefix.{i}.ValidLifetime";
+    }
+  }
+
+  grouping ip-interface-stats-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.IP.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.IP.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.IP.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping interface-twamp-reflector-g {
+    description
+      "Grouping object for Device.IP.Interface.{i}.TWAMPReflector.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Enable";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Status";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Alias";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Alias";
+    }
+    leaf port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Port";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.Port";
+    }
+    leaf maximum-ttl {
+      type uint32 {
+        range "1..255";
+      }
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.MaximumTTL";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.MaximumTTL";
+    }
+    leaf ip-allowed-list {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.IPAllowedList";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.IPAllowedList";
+    }
+    leaf port-allowed-list {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.PortAllowedList";
+      reference
+        "Device.IP.Interface.{i}.TWAMPReflector.{i}.PortAllowedList";
+    }
+  }
+
+  grouping device-i-psec-g {
+    description
+      "Grouping object for Device.IPsec.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IPsec.Enable";
+      reference
+        "Device.IPsec.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IPsec.Status";
+      reference
+        "Device.IPsec.Status";
+    }
+    leaf ah-supported {
+      type boolean;
+      config false;
+      description
+        "Device.IPsec.AHSupported";
+      reference
+        "Device.IPsec.AHSupported";
+    }
+    leaf ikev2-supported-encryption-algorithms {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SupportedEncryptionAlgorithms";
+      reference
+        "Device.IPsec.IKEv2SupportedEncryptionAlgorithms";
+    }
+    leaf esp-supported-encryption-algorithms {
+      type string;
+      config false;
+      description
+        "Device.IPsec.ESPSupportedEncryptionAlgorithms";
+      reference
+        "Device.IPsec.ESPSupportedEncryptionAlgorithms";
+    }
+    leaf ikev2-supported-pseudo-random-functions {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SupportedPseudoRandomFunctions";
+      reference
+        "Device.IPsec.IKEv2SupportedPseudoRandomFunctions";
+    }
+    leaf supported-integrity-algorithms {
+      type string;
+      config false;
+      description
+        "Device.IPsec.SupportedIntegrityAlgorithms";
+      reference
+        "Device.IPsec.SupportedIntegrityAlgorithms";
+    }
+    leaf supported-diffie-hellman-group-transforms {
+      type string;
+      config false;
+      description
+        "Device.IPsec.SupportedDiffieHellmanGroupTransforms";
+      reference
+        "Device.IPsec.SupportedDiffieHellmanGroupTransforms";
+    }
+    leaf max-filter-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.MaxFilterEntries";
+      reference
+        "Device.IPsec.MaxFilterEntries";
+    }
+    leaf max-profile-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.MaxProfileEntries";
+      reference
+        "Device.IPsec.MaxProfileEntries";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.FilterNumberOfEntries";
+      reference
+        "Device.IPsec.FilterNumberOfEntries";
+    }
+    leaf profile-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.ProfileNumberOfEntries";
+      reference
+        "Device.IPsec.ProfileNumberOfEntries";
+    }
+    leaf tunnel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.TunnelNumberOfEntries";
+      reference
+        "Device.IPsec.TunnelNumberOfEntries";
+    }
+    leaf ikev2-sa-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SANumberOfEntries";
+      reference
+        "Device.IPsec.IKEv2SANumberOfEntries";
+    }
+  }
+
+  grouping i-psec-filter-g {
+    description
+      "Grouping object for Device.IPsec.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.Enable";
+      reference
+        "Device.IPsec.Filter.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IPsec.Filter.{i}.Status";
+      reference
+        "Device.IPsec.Filter.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.IPsec.Filter.{i}.Order";
+      reference
+        "Device.IPsec.Filter.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.Filter.{i}.Alias";
+      reference
+        "Device.IPsec.Filter.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IPsec.Filter.{i}.Interface";
+      reference
+        "Device.IPsec.Filter.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.AllInterfaces";
+      reference
+        "Device.IPsec.Filter.{i}.AllInterfaces";
+    }
+    leaf dest-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IPsec.Filter.{i}.DestIP";
+      reference
+        "Device.IPsec.Filter.{i}.DestIP";
+    }
+    leaf dest-mask {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IPsec.Filter.{i}.DestMask";
+      reference
+        "Device.IPsec.Filter.{i}.DestMask";
+    }
+    leaf dest-ip-exclude {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.DestIPExclude";
+      reference
+        "Device.IPsec.Filter.{i}.DestIPExclude";
+    }
+    leaf source-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IPsec.Filter.{i}.SourceIP";
+      reference
+        "Device.IPsec.Filter.{i}.SourceIP";
+    }
+    leaf source-mask {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.IPsec.Filter.{i}.SourceMask";
+      reference
+        "Device.IPsec.Filter.{i}.SourceMask";
+    }
+    leaf source-ip-exclude {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.SourceIPExclude";
+      reference
+        "Device.IPsec.Filter.{i}.SourceIPExclude";
+    }
+    leaf protocol {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.IPsec.Filter.{i}.Protocol";
+      reference
+        "Device.IPsec.Filter.{i}.Protocol";
+    }
+    leaf protocol-exclude {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.ProtocolExclude";
+      reference
+        "Device.IPsec.Filter.{i}.ProtocolExclude";
+    }
+    leaf dest-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.IPsec.Filter.{i}.DestPort";
+      reference
+        "Device.IPsec.Filter.{i}.DestPort";
+    }
+    leaf dest-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.IPsec.Filter.{i}.DestPortRangeMax";
+      reference
+        "Device.IPsec.Filter.{i}.DestPortRangeMax";
+    }
+    leaf dest-port-exclude {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.DestPortExclude";
+      reference
+        "Device.IPsec.Filter.{i}.DestPortExclude";
+    }
+    leaf source-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.IPsec.Filter.{i}.SourcePort";
+      reference
+        "Device.IPsec.Filter.{i}.SourcePort";
+    }
+    leaf source-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.IPsec.Filter.{i}.SourcePortRangeMax";
+      reference
+        "Device.IPsec.Filter.{i}.SourcePortRangeMax";
+    }
+    leaf source-port-exclude {
+      type boolean;
+      description
+        "Device.IPsec.Filter.{i}.SourcePortExclude";
+      reference
+        "Device.IPsec.Filter.{i}.SourcePortExclude";
+    }
+    leaf processing-choice {
+      type enumeration {
+        enum Discard {
+          description
+            "Enum Value - Discard";
+        }
+        enum Bypass {
+          description
+            "Enum Value - Bypass";
+        }
+        enum Protect {
+          description
+            "Enum Value - Protect";
+        }
+      }
+      description
+        "Device.IPsec.Filter.{i}.ProcessingChoice";
+      reference
+        "Device.IPsec.Filter.{i}.ProcessingChoice";
+    }
+    leaf profile {
+      type string;
+      description
+        "Device.IPsec.Filter.{i}.Profile";
+      reference
+        "Device.IPsec.Filter.{i}.Profile";
+    }
+  }
+
+  grouping i-psec-ikev2-sa-g {
+    description
+      "Grouping object for Device.IPsec.IKEv2SA.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Status";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.IKEv2SA.{i}.Alias";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Alias";
+    }
+    leaf tunnel {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Tunnel";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Tunnel";
+    }
+    leaf local-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.LocalAddress";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.LocalAddress";
+    }
+    leaf remote-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.RemoteAddress";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.RemoteAddress";
+    }
+    leaf encryption-algorithm {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.EncryptionAlgorithm";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.EncryptionAlgorithm";
+    }
+    leaf encryption-key-length {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.EncryptionKeyLength";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.EncryptionKeyLength";
+    }
+    leaf pseudo-random-function {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.PseudoRandomFunction";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.PseudoRandomFunction";
+    }
+    leaf integrity-algorithm {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.IntegrityAlgorithm";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.IntegrityAlgorithm";
+    }
+    leaf diffie-hellman-group-transform {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.DiffieHellmanGroupTransform";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.DiffieHellmanGroupTransform";
+    }
+    leaf creation-time {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.CreationTime";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.CreationTime";
+    }
+    leaf nat-detected {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.NATDetected";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.NATDetected";
+    }
+    leaf received-cp-attr-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttrNumberOfEntries";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttrNumberOfEntries";
+    }
+    leaf child-sa-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSANumberOfEntries";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSANumberOfEntries";
+    }
+  }
+
+  grouping ikev2-sa-child-sa-g {
+    description
+      "Grouping object for Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Status";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Alias";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Alias";
+    }
+    leaf inbound-spi {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.InboundSPI";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.InboundSPI";
+    }
+    leaf outbound-spi {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.OutboundSPI";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.OutboundSPI";
+    }
+    leaf creation-time {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.CreationTime";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.CreationTime";
+    }
+  }
+
+  grouping child-sa-stats-g {
+    description
+      "Grouping object for Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.BytesSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.BytesReceived";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PacketsSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PacketsReceived";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.ErrorsSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.ErrorsSent";
+    }
+    leaf decryption-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.DecryptionErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.DecryptionErrors";
+    }
+    leaf integrity-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.IntegrityErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.IntegrityErrors";
+    }
+    leaf replay-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.ReplayErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.ReplayErrors";
+    }
+    leaf policy-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PolicyErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.PolicyErrors";
+    }
+    leaf other-receive-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.OtherReceiveErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.OtherReceiveErrors";
+    }
+  }
+
+  grouping ikev2-sa-received-cp-attr-g {
+    description
+      "Grouping object for Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf type {
+      type uint32 {
+        range "0..32767";
+      }
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.Type";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.Type";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.Value";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.Value";
+    }
+  }
+
+  grouping ikev2-sa-stats-g {
+    description
+      "Grouping object for Device.IPsec.IKEv2SA.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.BytesSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.BytesReceived";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.PacketsSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.PacketsReceived";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.ErrorsSent";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.ErrorsSent";
+    }
+    leaf decryption-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.DecryptionErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.DecryptionErrors";
+    }
+    leaf integrity-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.IntegrityErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.IntegrityErrors";
+    }
+    leaf other-receive-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.IKEv2SA.{i}.Stats.OtherReceiveErrors";
+      reference
+        "Device.IPsec.IKEv2SA.{i}.Stats.OtherReceiveErrors";
+    }
+  }
+
+  grouping i-psec-profile-g {
+    description
+      "Grouping object for Device.IPsec.Profile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.Profile.{i}.Alias";
+      reference
+        "Device.IPsec.Profile.{i}.Alias";
+    }
+    leaf max-child-s-as {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.MaxChildSAs";
+      reference
+        "Device.IPsec.Profile.{i}.MaxChildSAs";
+    }
+    leaf remote-endpoints {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.Profile.{i}.RemoteEndpoints";
+      reference
+        "Device.IPsec.Profile.{i}.RemoteEndpoints";
+    }
+    leaf forwarding-policy {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.ForwardingPolicy";
+      reference
+        "Device.IPsec.Profile.{i}.ForwardingPolicy";
+    }
+    leaf protocol {
+      type enumeration {
+        enum AH {
+          description
+            "Enum Value - AH";
+        }
+        enum ESP {
+          description
+            "Enum Value - ESP";
+        }
+      }
+      description
+        "Device.IPsec.Profile.{i}.Protocol";
+      reference
+        "Device.IPsec.Profile.{i}.Protocol";
+    }
+    leaf ikev2-authentication-method {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2AuthenticationMethod";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2AuthenticationMethod";
+    }
+    leaf ikev2-allowed-encryption-algorithms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2AllowedEncryptionAlgorithms";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2AllowedEncryptionAlgorithms";
+    }
+    leaf esp-allowed-encryption-algorithms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.ESPAllowedEncryptionAlgorithms";
+      reference
+        "Device.IPsec.Profile.{i}.ESPAllowedEncryptionAlgorithms";
+    }
+    leaf ikev2-allowed-pseudo-random-functions {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2AllowedPseudoRandomFunctions";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2AllowedPseudoRandomFunctions";
+    }
+    leaf ikev2-allowed-integrity-algorithms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2AllowedIntegrityAlgorithms";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2AllowedIntegrityAlgorithms";
+    }
+    leaf ah-allowed-integrity-algorithms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.AHAllowedIntegrityAlgorithms";
+      reference
+        "Device.IPsec.Profile.{i}.AHAllowedIntegrityAlgorithms";
+    }
+    leaf esp-allowed-integrity-algorithms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.ESPAllowedIntegrityAlgorithms";
+      reference
+        "Device.IPsec.Profile.{i}.ESPAllowedIntegrityAlgorithms";
+    }
+    leaf ikev2-allowed-diffie-hellman-group-transforms {
+      type string;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2AllowedDiffieHellmanGroupTransforms";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2AllowedDiffieHellmanGroupTransforms";
+    }
+    leaf ikev2-dead-peer-detection-timeout {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2DeadPeerDetectionTimeout";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2DeadPeerDetectionTimeout";
+    }
+    leaf ikev2-natt-keepalive-timeout {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2NATTKeepaliveTimeout";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2NATTKeepaliveTimeout";
+    }
+    leaf anti-replay-window-size {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.AntiReplayWindowSize";
+      reference
+        "Device.IPsec.Profile.{i}.AntiReplayWindowSize";
+    }
+    leaf do-not-fragment {
+      type enumeration {
+        enum Set {
+          description
+            "Enum Value - Set";
+        }
+        enum Clear {
+          description
+            "Enum Value - Clear";
+        }
+        enum Copy {
+          description
+            "Enum Value - Copy";
+        }
+      }
+      description
+        "Device.IPsec.Profile.{i}.DoNotFragment";
+      reference
+        "Device.IPsec.Profile.{i}.DoNotFragment";
+    }
+    leaf dscp-mark-policy {
+      type int32 {
+        range "-2..63";
+      }
+      description
+        "Device.IPsec.Profile.{i}.DSCPMarkPolicy";
+      reference
+        "Device.IPsec.Profile.{i}.DSCPMarkPolicy";
+    }
+    leaf ikev2-sa-traffic-limit {
+      type uint64;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2SATrafficLimit";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2SATrafficLimit";
+    }
+    leaf ikev2-sa-time-limit {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.IKEv2SATimeLimit";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2SATimeLimit";
+    }
+    leaf ikev2-sa-expiry-action {
+      type enumeration {
+        enum Renegotiate {
+          description
+            "Enum Value - Renegotiate";
+        }
+        enum Delete {
+          description
+            "Enum Value - Delete";
+        }
+      }
+      description
+        "Device.IPsec.Profile.{i}.IKEv2SAExpiryAction";
+      reference
+        "Device.IPsec.Profile.{i}.IKEv2SAExpiryAction";
+    }
+    leaf child-sa-traffic-limit {
+      type uint64;
+      description
+        "Device.IPsec.Profile.{i}.ChildSATrafficLimit";
+      reference
+        "Device.IPsec.Profile.{i}.ChildSATrafficLimit";
+    }
+    leaf child-sa-time-limit {
+      type uint32;
+      description
+        "Device.IPsec.Profile.{i}.ChildSATimeLimit";
+      reference
+        "Device.IPsec.Profile.{i}.ChildSATimeLimit";
+    }
+    leaf child-sa-expiry-action {
+      type enumeration {
+        enum Renegotiate {
+          description
+            "Enum Value - Renegotiate";
+        }
+        enum Delete {
+          description
+            "Enum Value - Delete";
+        }
+      }
+      description
+        "Device.IPsec.Profile.{i}.ChildSAExpiryAction";
+      reference
+        "Device.IPsec.Profile.{i}.ChildSAExpiryAction";
+    }
+    leaf sent-cp-attr-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Profile.{i}.SentCPAttrNumberOfEntries";
+      reference
+        "Device.IPsec.Profile.{i}.SentCPAttrNumberOfEntries";
+    }
+  }
+
+  grouping profile-sent-cp-attr-g {
+    description
+      "Grouping object for Device.IPsec.Profile.{i}.SentCPAttr.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Enable";
+      reference
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Alias";
+      reference
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Alias";
+    }
+    leaf type {
+      type uint32 {
+        range "0..32767";
+      }
+      description
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Type";
+      reference
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Type";
+    }
+    leaf value {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Value";
+      reference
+        "Device.IPsec.Profile.{i}.SentCPAttr.{i}.Value";
+    }
+  }
+
+  grouping i-psec-stats-g {
+    description
+      "Grouping object for Device.IPsec.Stats.";
+    leaf negotiation-failures {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.NegotiationFailures";
+      reference
+        "Device.IPsec.Stats.NegotiationFailures";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.Stats.BytesSent";
+      reference
+        "Device.IPsec.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.Stats.BytesReceived";
+      reference
+        "Device.IPsec.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.Stats.PacketsSent";
+      reference
+        "Device.IPsec.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.IPsec.Stats.PacketsReceived";
+      reference
+        "Device.IPsec.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.ErrorsSent";
+      reference
+        "Device.IPsec.Stats.ErrorsSent";
+    }
+    leaf unknown-spi-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.UnknownSPIErrors";
+      reference
+        "Device.IPsec.Stats.UnknownSPIErrors";
+    }
+    leaf decryption-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.DecryptionErrors";
+      reference
+        "Device.IPsec.Stats.DecryptionErrors";
+    }
+    leaf integrity-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.IntegrityErrors";
+      reference
+        "Device.IPsec.Stats.IntegrityErrors";
+    }
+    leaf replay-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.ReplayErrors";
+      reference
+        "Device.IPsec.Stats.ReplayErrors";
+    }
+    leaf policy-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.PolicyErrors";
+      reference
+        "Device.IPsec.Stats.PolicyErrors";
+    }
+    leaf other-receive-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Stats.OtherReceiveErrors";
+      reference
+        "Device.IPsec.Stats.OtherReceiveErrors";
+    }
+  }
+
+  grouping i-psec-tunnel-g {
+    description
+      "Grouping object for Device.IPsec.Tunnel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPsec.Tunnel.{i}.Alias";
+      reference
+        "Device.IPsec.Tunnel.{i}.Alias";
+    }
+    leaf tunnel-interface {
+      type string;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.TunnelInterface";
+      reference
+        "Device.IPsec.Tunnel.{i}.TunnelInterface";
+    }
+    leaf tunneled-interface {
+      type string;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.TunneledInterface";
+      reference
+        "Device.IPsec.Tunnel.{i}.TunneledInterface";
+    }
+    leaf filters {
+      type string;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Filters";
+      reference
+        "Device.IPsec.Tunnel.{i}.Filters";
+    }
+  }
+
+  grouping i-psec-tunnel-stats-g {
+    description
+      "Grouping object for Device.IPsec.Tunnel.{i}.Stats.";
+    leaf decryption-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Stats.DecryptionErrors";
+      reference
+        "Device.IPsec.Tunnel.{i}.Stats.DecryptionErrors";
+    }
+    leaf integrity-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Stats.IntegrityErrors";
+      reference
+        "Device.IPsec.Tunnel.{i}.Stats.IntegrityErrors";
+    }
+    leaf replay-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Stats.ReplayErrors";
+      reference
+        "Device.IPsec.Tunnel.{i}.Stats.ReplayErrors";
+    }
+    leaf policy-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Stats.PolicyErrors";
+      reference
+        "Device.IPsec.Tunnel.{i}.Stats.PolicyErrors";
+    }
+    leaf other-receive-errors {
+      type uint32;
+      config false;
+      description
+        "Device.IPsec.Tunnel.{i}.Stats.OtherReceiveErrors";
+      reference
+        "Device.IPsec.Tunnel.{i}.Stats.OtherReceiveErrors";
+    }
+  }
+
+  grouping device-ipv6rd-g {
+    description
+      "Grouping object for Device.IPv6rd.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.IPv6rd.Enable";
+      reference
+        "Device.IPv6rd.Enable";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.IPv6rd.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.IPv6rd.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping ipv6rd-interface-setting-g {
+    description
+      "Grouping object for Device.IPv6rd.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.Status";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.Alias";
+    }
+    leaf border-relay-ipv4-addresses {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.BorderRelayIPv4Addresses";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.BorderRelayIPv4Addresses";
+    }
+    leaf all-traffic-to-border-relay {
+      type boolean;
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.AllTrafficToBorderRelay";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.AllTrafficToBorderRelay";
+    }
+    leaf spipv6-prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.SPIPv6Prefix";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.SPIPv6Prefix";
+    }
+    leaf ipv4-mask-length {
+      type uint32 {
+        range "0..32";
+      }
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.IPv4MaskLength";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.IPv4MaskLength";
+    }
+    leaf address-source {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.AddressSource";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.AddressSource";
+    }
+    leaf tunnel-interface {
+      type string;
+      config false;
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.TunnelInterface";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.TunnelInterface";
+    }
+    leaf tunneled-interface {
+      type string;
+      config false;
+      description
+        "Device.IPv6rd.InterfaceSetting.{i}.TunneledInterface";
+      reference
+        "Device.IPv6rd.InterfaceSetting.{i}.TunneledInterface";
+    }
+  }
+
+  grouping device-interface-stack-g {
+    description
+      "Grouping object for Device.InterfaceStack.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.InterfaceStack.{i}.Alias";
+      reference
+        "Device.InterfaceStack.{i}.Alias";
+    }
+    leaf higher-layer {
+      type string;
+      config false;
+      description
+        "Device.InterfaceStack.{i}.HigherLayer";
+      reference
+        "Device.InterfaceStack.{i}.HigherLayer";
+    }
+    leaf lower-layer {
+      type string;
+      config false;
+      description
+        "Device.InterfaceStack.{i}.LowerLayer";
+      reference
+        "Device.InterfaceStack.{i}.LowerLayer";
+    }
+    leaf higher-alias {
+      type string;
+      config false;
+      description
+        "Device.InterfaceStack.{i}.HigherAlias";
+      reference
+        "Device.InterfaceStack.{i}.HigherAlias";
+    }
+    leaf lower-alias {
+      type string;
+      config false;
+      description
+        "Device.InterfaceStack.{i}.LowerAlias";
+      reference
+        "Device.InterfaceStack.{i}.LowerAlias";
+    }
+  }
+
+  grouping device-l2-tpv3-g {
+    description
+      "Grouping object for Device.L2TPv3.";
+    leaf tunnel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.TunnelNumberOfEntries";
+      reference
+        "Device.L2TPv3.TunnelNumberOfEntries";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.FilterNumberOfEntries";
+      reference
+        "Device.L2TPv3.FilterNumberOfEntries";
+    }
+  }
+
+  grouping l2-tpv3-filter-g {
+    description
+      "Grouping object for Device.L2TPv3.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.L2TPv3.Filter.{i}.Enable";
+      reference
+        "Device.L2TPv3.Filter.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.L2TPv3.Filter.{i}.Status";
+      reference
+        "Device.L2TPv3.Filter.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.L2TPv3.Filter.{i}.Order";
+      reference
+        "Device.L2TPv3.Filter.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.L2TPv3.Filter.{i}.Alias";
+      reference
+        "Device.L2TPv3.Filter.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.L2TPv3.Filter.{i}.Interface";
+      reference
+        "Device.L2TPv3.Filter.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.L2TPv3.Filter.{i}.AllInterfaces";
+      reference
+        "Device.L2TPv3.Filter.{i}.AllInterfaces";
+    }
+    leaf vlanid-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.L2TPv3.Filter.{i}.VLANIDCheck";
+      reference
+        "Device.L2TPv3.Filter.{i}.VLANIDCheck";
+    }
+    leaf vlanid-exclude {
+      type boolean;
+      description
+        "Device.L2TPv3.Filter.{i}.VLANIDExclude";
+      reference
+        "Device.L2TPv3.Filter.{i}.VLANIDExclude";
+    }
+    leaf dscp-mark-policy {
+      type int32 {
+        range "-2..63";
+      }
+      description
+        "Device.L2TPv3.Filter.{i}.DSCPMarkPolicy";
+      reference
+        "Device.L2TPv3.Filter.{i}.DSCPMarkPolicy";
+    }
+  }
+
+  grouping l2-tpv3-tunnel-g {
+    description
+      "Grouping object for Device.L2TPv3.Tunnel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Enable";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Status";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.Alias";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Alias";
+    }
+    leaf remote-endpoints {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.RemoteEndpoints";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.RemoteEndpoints";
+    }
+    leaf keep-alive-policy {
+      type enumeration {
+        enum ICMP {
+          description
+            "Enum Value - ICMP";
+        }
+        enum None {
+          description
+            "Enum Value - None";
+        }
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.KeepAlivePolicy";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.KeepAlivePolicy";
+    }
+    leaf keep-alive-timeout {
+      type uint32;
+      description
+        "Device.L2TPv3.Tunnel.{i}.KeepAliveTimeout";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.KeepAliveTimeout";
+    }
+    leaf keep-alive-threshold {
+      type uint32;
+      description
+        "Device.L2TPv3.Tunnel.{i}.KeepAliveThreshold";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.KeepAliveThreshold";
+    }
+    leaf delivery-header-protocol {
+      type enumeration {
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.DeliveryHeaderProtocol";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.DeliveryHeaderProtocol";
+    }
+    leaf default-dscp-mark {
+      type uint32;
+      description
+        "Device.L2TPv3.Tunnel.{i}.DefaultDSCPMark";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.DefaultDSCPMark";
+    }
+    leaf tunnel-encapsulation {
+      type enumeration {
+        enum IP {
+          description
+            "Enum Value - IP";
+        }
+        enum UDP {
+          description
+            "Enum Value - UDP";
+        }
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.TunnelEncapsulation";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.TunnelEncapsulation";
+    }
+    leaf connected-remote-endpoint {
+      type string;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.ConnectedRemoteEndpoint";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.ConnectedRemoteEndpoint";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.InterfaceNumberOfEntries";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping l2-tpv3-tunnel-interface-g {
+    description
+      "Grouping object for Device.L2TPv3.Tunnel.{i}.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Enable";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Status";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Alias";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Name";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.LastChange";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.LowerLayers";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.LowerLayers";
+    }
+    leaf session-id {
+      type int32 {
+        range "-1 | 1..65535";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.SessionID";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.SessionID";
+    }
+    leaf cookie-policy {
+      type enumeration {
+        enum Disabled {
+          description
+            "Enum Value - Disabled";
+        }
+        enum Configured {
+          description
+            "Enum Value - Configured";
+        }
+        enum Generated {
+          description
+            "Enum Value - Generated";
+        }
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.CookiePolicy";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.CookiePolicy";
+    }
+    leaf cookie {
+      type uint64;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Cookie";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Cookie";
+    }
+  }
+
+  grouping l2-tpv3-tunnel-interface-stats-g {
+    description
+      "Grouping object for Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-checksum-received {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+    }
+    leaf discard-sequence-number-received {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+    }
+  }
+
+  grouping l2-tpv3-tunnel-stats-g {
+    description
+      "Grouping object for Device.L2TPv3.Tunnel.{i}.Stats.";
+    leaf keep-alive-sent {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.KeepAliveSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.KeepAliveSent";
+    }
+    leaf keep-alive-received {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.KeepAliveReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.KeepAliveReceived";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.BytesSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.BytesReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.PacketsSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.PacketsReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.ErrorsSent";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.L2TPv3.Tunnel.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.Stats.ErrorsReceived";
+    }
+  }
+
+  grouping tunnel-udp-g {
+    description
+      "Grouping object for Device.L2TPv3.Tunnel.{i}.UDP.";
+    leaf source-port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.UDP.SourcePort";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.UDP.SourcePort";
+    }
+    leaf remote-port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.L2TPv3.Tunnel.{i}.UDP.RemotePort";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.UDP.RemotePort";
+    }
+    leaf enable-checksum {
+      type boolean;
+      description
+        "Device.L2TPv3.Tunnel.{i}.UDP.EnableChecksum";
+      reference
+        "Device.L2TPv3.Tunnel.{i}.UDP.EnableChecksum";
+    }
+  }
+
+  grouping device-le-ds-g {
+    description
+      "Grouping object for Device.LEDs.";
+    leaf led-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LEDs.LEDNumberOfEntries";
+      reference
+        "Device.LEDs.LEDNumberOfEntries";
+    }
+  }
+
+  grouping le-ds-led-g {
+    description
+      "Grouping object for Device.LEDs.LED.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LEDs.LED.{i}.Alias";
+      reference
+        "Device.LEDs.LED.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      description
+        "Device.LEDs.LED.{i}.Name";
+      reference
+        "Device.LEDs.LED.{i}.Name";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.Status";
+      reference
+        "Device.LEDs.LED.{i}.Status";
+    }
+    leaf reason {
+      type string;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.Reason";
+      reference
+        "Device.LEDs.LED.{i}.Reason";
+    }
+    leaf cycle-period-repetitions {
+      type int32;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.CyclePeriodRepetitions";
+      reference
+        "Device.LEDs.LED.{i}.CyclePeriodRepetitions";
+    }
+    leaf location {
+      type string;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.Location";
+      reference
+        "Device.LEDs.LED.{i}.Location";
+    }
+    leaf relative-x-position {
+      type uint32;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.RelativeXPosition";
+      reference
+        "Device.LEDs.LED.{i}.RelativeXPosition";
+    }
+    leaf relative-y-position {
+      type uint32;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.RelativeYPosition";
+      reference
+        "Device.LEDs.LED.{i}.RelativeYPosition";
+    }
+    leaf cycle-element-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.CycleElementNumberOfEntries";
+      reference
+        "Device.LEDs.LED.{i}.CycleElementNumberOfEntries";
+    }
+  }
+
+  grouping led-current-cycle-element-g {
+    description
+      "Grouping object for Device.LEDs.LED.{i}.CurrentCycleElement.";
+    leaf cycle-element-reference {
+      type string;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.CurrentCycleElement.CycleElementReference";
+      reference
+        "Device.LEDs.LED.{i}.CurrentCycleElement.CycleElementReference";
+    }
+    leaf color {
+      type string;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.CurrentCycleElement.Color";
+      reference
+        "Device.LEDs.LED.{i}.CurrentCycleElement.Color";
+    }
+    leaf duration {
+      type uint32;
+      config false;
+      description
+        "Device.LEDs.LED.{i}.CurrentCycleElement.Duration";
+      reference
+        "Device.LEDs.LED.{i}.CurrentCycleElement.Duration";
+    }
+  }
+
+  grouping led-cycle-element-g {
+    description
+      "Grouping object for Device.LEDs.LED.{i}.CycleElement.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Alias";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Enable";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Enable";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Order";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Order";
+    }
+    leaf color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Color";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Color";
+    }
+    leaf duration {
+      type uint32;
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Duration";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.Duration";
+    }
+    leaf fade-interval {
+      type uint32;
+      description
+        "Device.LEDs.LED.{i}.CycleElement.{i}.FadeInterval";
+      reference
+        "Device.LEDs.LED.{i}.CycleElement.{i}.FadeInterval";
+    }
+  }
+
+  grouping lldp-discovery-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.";
+    leaf device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.DeviceNumberOfEntries";
+      reference
+        "Device.LLDP.Discovery.DeviceNumberOfEntries";
+    }
+  }
+
+  grouping discovery-device-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.Device.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Interface";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Interface";
+    }
+    leaf chassis-id-subtype {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.ChassisIDSubtype";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.ChassisIDSubtype";
+    }
+    leaf chassis-id {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.ChassisID";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.ChassisID";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Host";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Host";
+    }
+    leaf port-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.PortNumberOfEntries";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.PortNumberOfEntries";
+    }
+  }
+
+  grouping device-device-information-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.Device.{i}.DeviceInformation.";
+    leaf device-category {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.DeviceCategory";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.DeviceCategory";
+    }
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ManufacturerOUI";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ManufacturerOUI";
+    }
+    leaf model-name {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ModelName";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ModelName";
+    }
+    leaf model-number {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ModelNumber";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.ModelNumber";
+    }
+    leaf vendor-specific-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecificNumberOfEntries";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecificNumberOfEntries";
+    }
+  }
+
+  grouping device-information-vendor-specific-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf organization-code {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.OrganizationCode";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.OrganizationCode";
+    }
+    leaf information-type {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.InformationType";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.InformationType";
+    }
+    leaf information {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.Information";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.Information";
+    }
+  }
+
+  grouping device-port-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.Device.{i}.Port.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf port-id-subtype {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortIDSubtype";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortIDSubtype";
+    }
+    leaf port-id {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortID";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortID";
+    }
+    leaf ttl {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.TTL";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.TTL";
+    }
+    leaf port-description {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortDescription";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.PortDescription";
+    }
+    leaf mac-address-list {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.MACAddressList";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.MACAddressList";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LastUpdate";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LastUpdate";
+    }
+  }
+
+  grouping port-link-information-g {
+    description
+      "Grouping object for Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.";
+    leaf interface-type {
+      type uint32;
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.InterfaceType";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.InterfaceType";
+    }
+    leaf mac-forwarding-table {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.MACForwardingTable";
+      reference
+        "Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.MACForwardingTable";
+    }
+  }
+
+  grouping device-lmap-g {
+    description
+      "Grouping object for Device.LMAP.";
+    leaf measurement-agent-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgentNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgentNumberOfEntries";
+    }
+    leaf report-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.ReportNumberOfEntries";
+      reference
+        "Device.LMAP.ReportNumberOfEntries";
+    }
+    leaf event-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.EventNumberOfEntries";
+      reference
+        "Device.LMAP.EventNumberOfEntries";
+    }
+  }
+
+  grouping lmap-event-g {
+    description
+      "Grouping object for Device.LMAP.Event.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.Event.{i}.Enable";
+      reference
+        "Device.LMAP.Event.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.Event.{i}.Alias";
+      reference
+        "Device.LMAP.Event.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.Event.{i}.Name";
+      reference
+        "Device.LMAP.Event.{i}.Name";
+    }
+    leaf type {
+      type enumeration {
+        enum PeriodicTiming {
+          description
+            "Enum Value - PeriodicTiming";
+        }
+        enum CalendarTiming {
+          description
+            "Enum Value - CalendarTiming";
+        }
+        enum OneOffTiming {
+          description
+            "Enum Value - OneOffTiming";
+        }
+        enum Immediate {
+          description
+            "Enum Value - Immediate";
+        }
+        enum Startup {
+          description
+            "Enum Value - Startup";
+        }
+        enum ControllerLost {
+          description
+            "Enum Value - ControllerLost";
+        }
+        enum ControllerConnected {
+          description
+            "Enum Value - ControllerConnected";
+        }
+      }
+      description
+        "Device.LMAP.Event.{i}.Type";
+      reference
+        "Device.LMAP.Event.{i}.Type";
+    }
+    leaf randomness-spread {
+      type int32;
+      description
+        "Device.LMAP.Event.{i}.RandomnessSpread";
+      reference
+        "Device.LMAP.Event.{i}.RandomnessSpread";
+    }
+    leaf cycle-interval {
+      type int32;
+      description
+        "Device.LMAP.Event.{i}.CycleInterval";
+      reference
+        "Device.LMAP.Event.{i}.CycleInterval";
+    }
+  }
+
+  grouping event-calendar-timer-g {
+    description
+      "Grouping object for Device.LMAP.Event.{i}.CalendarTimer.";
+    leaf start-time {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.StartTime";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.StartTime";
+    }
+    leaf end-time {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.EndTime";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.EndTime";
+    }
+    leaf schedule-months {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleMonths";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleMonths";
+    }
+    leaf schedule-days-of-month {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleDaysOfMonth";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleDaysOfMonth";
+    }
+    leaf schedule-days-of-week {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleDaysOfWeek";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleDaysOfWeek";
+    }
+    leaf schedule-hours-of-day {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleHoursOfDay";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleHoursOfDay";
+    }
+    leaf schedule-minutes-of-hour {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleMinutesOfHour";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleMinutesOfHour";
+    }
+    leaf schedule-seconds-of-minute {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleSecondsOfMinute";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleSecondsOfMinute";
+    }
+    leaf enable-schedule-timezone-offset {
+      type boolean;
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.EnableScheduleTimezoneOffset";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.EnableScheduleTimezoneOffset";
+    }
+    leaf schedule-timezone-offset {
+      type int32 {
+        range "-23..23";
+      }
+      description
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleTimezoneOffset";
+      reference
+        "Device.LMAP.Event.{i}.CalendarTimer.ScheduleTimezoneOffset";
+    }
+  }
+
+  grouping event-one-off-g {
+    description
+      "Grouping object for Device.LMAP.Event.{i}.OneOff.";
+    leaf start-time {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.OneOff.StartTime";
+      reference
+        "Device.LMAP.Event.{i}.OneOff.StartTime";
+    }
+  }
+
+  grouping event-periodic-timer-g {
+    description
+      "Grouping object for Device.LMAP.Event.{i}.PeriodicTimer.";
+    leaf start-time {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.PeriodicTimer.StartTime";
+      reference
+        "Device.LMAP.Event.{i}.PeriodicTimer.StartTime";
+    }
+    leaf end-time {
+      type string;
+      description
+        "Device.LMAP.Event.{i}.PeriodicTimer.EndTime";
+      reference
+        "Device.LMAP.Event.{i}.PeriodicTimer.EndTime";
+    }
+    leaf interval {
+      type uint32;
+      description
+        "Device.LMAP.Event.{i}.PeriodicTimer.Interval";
+      reference
+        "Device.LMAP.Event.{i}.PeriodicTimer.Interval";
+    }
+  }
+
+  grouping lmap-measurement-agent-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Enable";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Version";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Version";
+    }
+    leaf last-started {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.LastStarted";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.LastStarted";
+    }
+    leaf capability-tags {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CapabilityTags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CapabilityTags";
+    }
+    leaf identifier {
+      type string {
+        length "min..36";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Identifier";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Identifier";
+    }
+    leaf group-identifier {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.GroupIdentifier";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.GroupIdentifier";
+    }
+    leaf measurement-point {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.MeasurementPoint";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.MeasurementPoint";
+    }
+    leaf use-agent-identifier-in-reports {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.UseAgentIdentifierInReports";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.UseAgentIdentifierInReports";
+    }
+    leaf use-group-identifier-in-reports {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.UseGroupIdentifierInReports";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.UseGroupIdentifierInReports";
+    }
+    leaf use-measurement-point-in-reports {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.UseMeasurementPointInReports";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.UseMeasurementPointInReports";
+    }
+    leaf public-credential {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.PublicCredential";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.PublicCredential";
+    }
+    leaf private-credential {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.PrivateCredential";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.PrivateCredential";
+    }
+    leaf event-log {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.EventLog";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.EventLog";
+    }
+    leaf task-capability-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapabilityNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapabilityNumberOfEntries";
+    }
+    leaf schedule-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.ScheduleNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.ScheduleNumberOfEntries";
+    }
+    leaf task-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskNumberOfEntries";
+    }
+    leaf communication-channel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannelNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannelNumberOfEntries";
+    }
+    leaf instruction-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.InstructionNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.InstructionNumberOfEntries";
+    }
+  }
+
+  grouping measurement-agent-communication-channel-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Name";
+    }
+    leaf use-bulk-data-profile {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.UseBulkDataProfile";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.UseBulkDataProfile";
+    }
+    leaf bulk-data-profile {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.BulkDataProfile";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.BulkDataProfile";
+    }
+    leaf target {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Target";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Target";
+    }
+    leaf target-public-credential {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.TargetPublicCredential";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.TargetPublicCredential";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Interface";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.Interface";
+    }
+  }
+
+  grouping measurement-agent-controller-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Controller.";
+    leaf controller-timeout {
+      type int32 {
+        range "0..max";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControllerTimeout";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControllerTimeout";
+    }
+    leaf control-schedules {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlSchedules";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlSchedules";
+    }
+    leaf control-tasks {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlTasks";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlTasks";
+    }
+    leaf control-channels {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlChannels";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Controller.ControlChannels";
+    }
+  }
+
+  grouping measurement-agent-instruction-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.Alias";
+    }
+    leaf last-change {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.LastChange";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.LastChange";
+    }
+    leaf instruction-schedules {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.InstructionSchedules";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.InstructionSchedules";
+    }
+    leaf instruction-tasks {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.InstructionTasks";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.InstructionTasks";
+    }
+    leaf report-channels {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.ReportChannels";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.ReportChannels";
+    }
+    leaf measurement-suppression-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppressionNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppressionNumberOfEntries";
+    }
+  }
+
+  grouping instruction-measurement-suppression-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Name";
+    }
+    leaf state {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.State";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.State";
+    }
+    leaf stop-running {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.StopRunning";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.StopRunning";
+    }
+    leaf start {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Start";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.Start";
+    }
+    leaf end {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.End";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.End";
+    }
+    leaf suppression-match {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.SuppressionMatch";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.SuppressionMatch";
+    }
+  }
+
+  grouping measurement-agent-schedule-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Name";
+    }
+    leaf state {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.State";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.State";
+    }
+    leaf start {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Start";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Start";
+    }
+    leaf end {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.End";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.End";
+    }
+    leaf duration {
+      type uint32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Duration";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Duration";
+    }
+    leaf tags {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Tags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Tags";
+    }
+    leaf suppression-tags {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.SuppressionTags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.SuppressionTags";
+    }
+    leaf execution-mode {
+      type enumeration {
+        enum Sequential {
+          description
+            "Enum Value - Sequential";
+        }
+        enum Parallel {
+          description
+            "Enum Value - Parallel";
+        }
+        enum Pipelined {
+          description
+            "Enum Value - Pipelined";
+        }
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.ExecutionMode";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.ExecutionMode";
+    }
+    leaf last-invocation {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.LastInvocation";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.LastInvocation";
+    }
+    leaf storage {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Storage";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Storage";
+    }
+    leaf action-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.ActionNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.ActionNumberOfEntries";
+    }
+  }
+
+  grouping schedule-action-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Alias";
+    }
+    leaf state {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.State";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.State";
+    }
+    leaf order {
+      type uint32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Order";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Order";
+    }
+    leaf task {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Task";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Task";
+    }
+    leaf output-destination {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.OutputDestination";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.OutputDestination";
+    }
+    leaf suppression-tags {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.SuppressionTags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.SuppressionTags";
+    }
+    leaf tags {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Tags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Tags";
+    }
+    leaf storage {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Storage";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Storage";
+    }
+    leaf last-invocation {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastInvocation";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastInvocation";
+    }
+    leaf last-successful-completion {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulCompletion";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulCompletion";
+    }
+    leaf last-successful-status-code {
+      type int32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulStatusCode";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulStatusCode";
+    }
+    leaf last-successful-message {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulMessage";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastSuccessfulMessage";
+    }
+    leaf last-failed-completion {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedCompletion";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedCompletion";
+    }
+    leaf last-failed-status-code {
+      type int32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedStatusCode";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedStatusCode";
+    }
+    leaf last-failed-message {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedMessage";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.LastFailedMessage";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.OptionNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.OptionNumberOfEntries";
+    }
+  }
+
+  grouping action-option-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Alias";
+    }
+    leaf order {
+      type uint32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Order";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Order";
+    }
+    leaf name {
+      type int32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Name";
+    }
+    leaf value {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Value";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping action-stats-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.";
+    leaf invocations {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Invocations";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Invocations";
+    }
+    leaf suppressions {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Suppressions";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Suppressions";
+    }
+    leaf overlaps {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Overlaps";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Overlaps";
+    }
+    leaf failures {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Failures";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.Failures";
+    }
+  }
+
+  grouping schedule-stats-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.";
+    leaf invocations {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Invocations";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Invocations";
+    }
+    leaf suppressions {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Suppressions";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Suppressions";
+    }
+    leaf overlaps {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Overlaps";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Overlaps";
+    }
+    leaf failures {
+      type uint64;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Failures";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.Failures";
+    }
+  }
+
+  grouping measurement-agent-task-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Task.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Name";
+    }
+    leaf tags {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Tags";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Tags";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.OptionNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.OptionNumberOfEntries";
+    }
+    leaf registry-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.RegistryNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.RegistryNumberOfEntries";
+    }
+  }
+
+  grouping task-option-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Alias";
+    }
+    leaf order {
+      type uint32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Order";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Order";
+    }
+    leaf name {
+      type int32;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Name";
+    }
+    leaf value {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Value";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping task-registry-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Enable";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Alias";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Alias";
+    }
+    leaf registry-entry {
+      type string;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.RegistryEntry";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.RegistryEntry";
+    }
+    leaf roles {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Roles";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.Roles";
+    }
+  }
+
+  grouping measurement-agent-task-capability-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Name";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Name";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Version";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Version";
+    }
+    leaf task-capability-registry-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.TaskCapabilityRegistryNumberOfEntries";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.TaskCapabilityRegistryNumberOfEntries";
+    }
+  }
+
+  grouping task-capability-registry-g {
+    description
+      "Grouping object for Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf registry-entry {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.RegistryEntry";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.RegistryEntry";
+    }
+    leaf roles {
+      type string;
+      config false;
+      description
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.Roles";
+      reference
+        "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.Roles";
+    }
+  }
+
+  grouping lmap-report-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf report-date {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.ReportDate";
+      reference
+        "Device.LMAP.Report.{i}.ReportDate";
+    }
+    leaf agent-identifier {
+      type string {
+        length "min..36";
+      }
+      config false;
+      description
+        "Device.LMAP.Report.{i}.AgentIdentifier";
+      reference
+        "Device.LMAP.Report.{i}.AgentIdentifier";
+    }
+    leaf group-identifier {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.GroupIdentifier";
+      reference
+        "Device.LMAP.Report.{i}.GroupIdentifier";
+    }
+    leaf measurement-point {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.MeasurementPoint";
+      reference
+        "Device.LMAP.Report.{i}.MeasurementPoint";
+    }
+    leaf result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.ResultNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.ResultNumberOfEntries";
+    }
+  }
+
+  grouping report-result-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf task-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.TaskName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.TaskName";
+    }
+    leaf schedule-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ScheduleName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ScheduleName";
+    }
+    leaf action-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ActionName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ActionName";
+    }
+    leaf event-time {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.EventTime";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.EventTime";
+    }
+    leaf start-time {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.StartTime";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.StartTime";
+    }
+    leaf end-time {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.EndTime";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.EndTime";
+    }
+    leaf cycle-number {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.CycleNumber";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.CycleNumber";
+    }
+    leaf status {
+      type int32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Status";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Status";
+    }
+    leaf tags {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Tags";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Tags";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.OptionNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.OptionNumberOfEntries";
+    }
+    leaf result-conflict-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ResultConflictNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ResultConflictNumberOfEntries";
+    }
+    leaf result-report-table-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ResultReportTableNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ResultReportTableNumberOfEntries";
+    }
+  }
+
+  grouping result-conflict-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf task-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.TaskName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.TaskName";
+    }
+    leaf schedule-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.ScheduleName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.ScheduleName";
+    }
+    leaf action-name {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.ActionName";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.ActionName";
+    }
+  }
+
+  grouping result-option-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf order {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Order";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Order";
+    }
+    leaf name {
+      type int32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Name";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Name";
+    }
+    leaf value {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Value";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping result-report-table-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf column-labels {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ColumnLabels";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ColumnLabels";
+    }
+    leaf result-report-row-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultReportRowNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultReportRowNumberOfEntries";
+    }
+    leaf registry-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.RegistryNumberOfEntries";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.RegistryNumberOfEntries";
+    }
+  }
+
+  grouping report-table-registry-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf registry-entry {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.RegistryEntry";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.RegistryEntry";
+    }
+    leaf roles {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.Roles";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.Roles";
+    }
+  }
+
+  grouping report-table-result-row-g {
+    description
+      "Grouping object for Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultRow.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf values {
+      type string;
+      config false;
+      description
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultRow.{i}.Values";
+      reference
+        "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultRow.{i}.Values";
+    }
+  }
+
+  grouping device-map-g {
+    description
+      "Grouping object for Device.MAP.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.MAP.Enable";
+      reference
+        "Device.MAP.Enable";
+    }
+    leaf domain-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.DomainNumberOfEntries";
+      reference
+        "Device.MAP.DomainNumberOfEntries";
+    }
+  }
+
+  grouping map-domain-g {
+    description
+      "Grouping object for Device.MAP.Domain.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MAP.Domain.{i}.Enable";
+      reference
+        "Device.MAP.Domain.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Status";
+      reference
+        "Device.MAP.Domain.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MAP.Domain.{i}.Alias";
+      reference
+        "Device.MAP.Domain.{i}.Alias";
+    }
+    leaf transport-mode {
+      type enumeration {
+        enum Encapsulation {
+          description
+            "Enum Value - Encapsulation";
+        }
+        enum Translation {
+          description
+            "Enum Value - Translation";
+        }
+      }
+      description
+        "Device.MAP.Domain.{i}.TransportMode";
+      reference
+        "Device.MAP.Domain.{i}.TransportMode";
+    }
+    leaf wan-interface {
+      type string;
+      description
+        "Device.MAP.Domain.{i}.WANInterface";
+      reference
+        "Device.MAP.Domain.{i}.WANInterface";
+    }
+    leaf ipv6-prefix {
+      type string;
+      description
+        "Device.MAP.Domain.{i}.IPv6Prefix";
+      reference
+        "Device.MAP.Domain.{i}.IPv6Prefix";
+    }
+    leaf bripv6-prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.MAP.Domain.{i}.BRIPv6Prefix";
+      reference
+        "Device.MAP.Domain.{i}.BRIPv6Prefix";
+    }
+    leaf dscp-mark-policy {
+      type int32 {
+        range "-2..63";
+      }
+      description
+        "Device.MAP.Domain.{i}.DSCPMarkPolicy";
+      reference
+        "Device.MAP.Domain.{i}.DSCPMarkPolicy";
+    }
+    leaf psid-offset {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.MAP.Domain.{i}.PSIDOffset";
+      reference
+        "Device.MAP.Domain.{i}.PSIDOffset";
+    }
+    leaf psid-length {
+      type uint32 {
+        range "0..16";
+      }
+      description
+        "Device.MAP.Domain.{i}.PSIDLength";
+      reference
+        "Device.MAP.Domain.{i}.PSIDLength";
+    }
+    leaf psid {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.MAP.Domain.{i}.PSID";
+      reference
+        "Device.MAP.Domain.{i}.PSID";
+    }
+    leaf include-system-ports {
+      type boolean;
+      description
+        "Device.MAP.Domain.{i}.IncludeSystemPorts";
+      reference
+        "Device.MAP.Domain.{i}.IncludeSystemPorts";
+    }
+    leaf rule-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.RuleNumberOfEntries";
+      reference
+        "Device.MAP.Domain.{i}.RuleNumberOfEntries";
+    }
+  }
+
+  grouping domain-interface-g {
+    description
+      "Grouping object for Device.MAP.Domain.{i}.Interface.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.MAP.Domain.{i}.Interface.Enable";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Status";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MAP.Domain.{i}.Interface.Alias";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Name";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.LastChange";
+      reference
+        "Device.MAP.Domain.{i}.Interface.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.MAP.Domain.{i}.Interface.LowerLayers";
+      reference
+        "Device.MAP.Domain.{i}.Interface.LowerLayers";
+    }
+  }
+
+  grouping domain-interface-stats-g {
+    description
+      "Grouping object for Device.MAP.Domain.{i}.Interface.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.BytesSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.BytesReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.PacketsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.PacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.ErrorsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.ErrorsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.UnicastPacketsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.UnicastPacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.DiscardPacketsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.DiscardPacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.MulticastPacketsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.MulticastPacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.BroadcastPacketsSent";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Interface.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.MAP.Domain.{i}.Interface.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping domain-rule-g {
+    description
+      "Grouping object for Device.MAP.Domain.{i}.Rule.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.Enable";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.Status";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.Alias";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.Alias";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.Origin";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.Origin";
+    }
+    leaf ipv6-prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.IPv6Prefix";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.IPv6Prefix";
+    }
+    leaf ipv4-prefix {
+      type string {
+        length "min..18";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.IPv4Prefix";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.IPv4Prefix";
+    }
+    leaf ea-bits-length {
+      type uint32 {
+        range "0..48";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.EABitsLength";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.EABitsLength";
+    }
+    leaf is-fmr {
+      type boolean;
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.IsFMR";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.IsFMR";
+    }
+    leaf psid-offset {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.PSIDOffset";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.PSIDOffset";
+    }
+    leaf psid-length {
+      type uint32 {
+        range "0..16";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.PSIDLength";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.PSIDLength";
+    }
+    leaf psid {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.MAP.Domain.{i}.Rule.{i}.PSID";
+      reference
+        "Device.MAP.Domain.{i}.Rule.{i}.PSID";
+    }
+  }
+
+  grouping device-mqtt-g {
+    description
+      "Grouping object for Device.MQTT.";
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.ClientNumberOfEntries";
+      reference
+        "Device.MQTT.ClientNumberOfEntries";
+    }
+    leaf broker-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.BrokerNumberOfEntries";
+      reference
+        "Device.MQTT.BrokerNumberOfEntries";
+    }
+  }
+
+  grouping mqtt-broker-g {
+    description
+      "Grouping object for Device.MQTT.Broker.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Alias";
+      reference
+        "Device.MQTT.Broker.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Name";
+      reference
+        "Device.MQTT.Broker.{i}.Name";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Broker.{i}.Enable";
+      reference
+        "Device.MQTT.Broker.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Status";
+      reference
+        "Device.MQTT.Broker.{i}.Status";
+    }
+    leaf port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Port";
+      reference
+        "Device.MQTT.Broker.{i}.Port";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Interface";
+      reference
+        "Device.MQTT.Broker.{i}.Interface";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Username";
+      reference
+        "Device.MQTT.Broker.{i}.Username";
+    }
+    leaf bridge-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.BridgeNumberOfEntries";
+      reference
+        "Device.MQTT.Broker.{i}.BridgeNumberOfEntries";
+    }
+  }
+
+  grouping broker-bridge-g {
+    description
+      "Grouping object for Device.MQTT.Broker.{i}.Bridge.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Alias";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Name";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Name";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Enable";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Status";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Status";
+    }
+    leaf client-id {
+      type string {
+        length "1..23";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ClientID";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ClientID";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Username";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Username";
+    }
+    leaf transport-protocol {
+      type string;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.TransportProtocol";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.TransportProtocol";
+    }
+    leaf protocol-version {
+      type string;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ProtocolVersion";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ProtocolVersion";
+    }
+    leaf clean-session {
+      type boolean;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.CleanSession";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.CleanSession";
+    }
+    leaf message-retry-time {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.MessageRetryTime";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.MessageRetryTime";
+    }
+    leaf connect-retry-time {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ConnectRetryTime";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ConnectRetryTime";
+    }
+    leaf keep-alive-time {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.KeepAliveTime";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.KeepAliveTime";
+    }
+    leaf server-selection-algorithm {
+      type enumeration {
+        enum Priority {
+          description
+            "Enum Value - Priority";
+        }
+        enum RoundRobin {
+          description
+            "Enum Value - RoundRobin";
+        }
+        enum Random {
+          description
+            "Enum Value - Random";
+        }
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerSelectionAlgorithm";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerSelectionAlgorithm";
+    }
+    leaf server-connection {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerConnection";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerConnection";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerNumberOfEntries";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.ServerNumberOfEntries";
+    }
+    leaf subscription-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.SubscriptionNumberOfEntries";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.SubscriptionNumberOfEntries";
+    }
+  }
+
+  grouping bridge-server-g {
+    description
+      "Grouping object for Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Enable";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Alias";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Alias";
+    }
+    leaf priority {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Priority";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Priority";
+    }
+    leaf weight {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Weight";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Weight";
+    }
+    leaf address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Address";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Address";
+    }
+    leaf port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Port";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.Port";
+    }
+  }
+
+  grouping bridge-subscription-g {
+    description
+      "Grouping object for Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Alias";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Enable";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Status";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Status";
+    }
+    leaf topic {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Topic";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Topic";
+    }
+    leaf direction {
+      type enumeration {
+        enum out {
+          description
+            "Enum Value - out";
+        }
+        enum in {
+          description
+            "Enum Value - in";
+        }
+        enum both {
+          description
+            "Enum Value - both";
+        }
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Direction";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.Direction";
+    }
+    leaf qo-s {
+      type uint32 {
+        range "0..2";
+      }
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.QoS";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.QoS";
+    }
+    leaf local-prefix {
+      type string;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.LocalPrefix";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.LocalPrefix";
+    }
+    leaf remote-prefix {
+      type string;
+      description
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.RemotePrefix";
+      reference
+        "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.RemotePrefix";
+    }
+  }
+
+  grouping broker-stats-g {
+    description
+      "Grouping object for Device.MQTT.Broker.{i}.Stats.";
+    leaf total-number-of-clients {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.TotalNumberOfClients";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.TotalNumberOfClients";
+    }
+    leaf number-of-active-clients {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.NumberOfActiveClients";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.NumberOfActiveClients";
+    }
+    leaf number-of-inactive-clients {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.NumberOfInactiveClients";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.NumberOfInactiveClients";
+    }
+    leaf subscriptions {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.Subscriptions";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.Subscriptions";
+    }
+    leaf publish-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.PublishSent";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.PublishSent";
+    }
+    leaf publish-received {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.PublishReceived";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.PublishReceived";
+    }
+    leaf mqtt-messages-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.MQTTMessagesSent";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.MQTTMessagesSent";
+    }
+    leaf mqtt-messages-received {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.MQTTMessagesReceived";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.MQTTMessagesReceived";
+    }
+    leaf connection-errors {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.ConnectionErrors";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.ConnectionErrors";
+    }
+    leaf publish-errors {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Broker.{i}.Stats.PublishErrors";
+      reference
+        "Device.MQTT.Broker.{i}.Stats.PublishErrors";
+    }
+  }
+
+  grouping mqtt-capabilities-g {
+    description
+      "Grouping object for Device.MQTT.Capabilities.";
+    leaf protocol-versions-supported {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Capabilities.ProtocolVersionsSupported";
+      reference
+        "Device.MQTT.Capabilities.ProtocolVersionsSupported";
+    }
+    leaf transport-protocol-supported {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Capabilities.TransportProtocolSupported";
+      reference
+        "Device.MQTT.Capabilities.TransportProtocolSupported";
+    }
+    leaf max-number-of-client-subscriptions {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Capabilities.MaxNumberOfClientSubscriptions";
+      reference
+        "Device.MQTT.Capabilities.MaxNumberOfClientSubscriptions";
+    }
+    leaf max-number-of-broker-bridges {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Capabilities.MaxNumberOfBrokerBridges";
+      reference
+        "Device.MQTT.Capabilities.MaxNumberOfBrokerBridges";
+    }
+    leaf max-number-of-broker-bridge-subscriptions {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Capabilities.MaxNumberOfBrokerBridgeSubscriptions";
+      reference
+        "Device.MQTT.Capabilities.MaxNumberOfBrokerBridgeSubscriptions";
+    }
+  }
+
+  grouping mqtt-client-g {
+    description
+      "Grouping object for Device.MQTT.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Client.{i}.Alias";
+      reference
+        "Device.MQTT.Client.{i}.Alias";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Client.{i}.Name";
+      reference
+        "Device.MQTT.Client.{i}.Name";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Client.{i}.Enable";
+      reference
+        "Device.MQTT.Client.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Status";
+      reference
+        "Device.MQTT.Client.{i}.Status";
+    }
+    leaf client-id {
+      type string {
+        length "1..23";
+      }
+      description
+        "Device.MQTT.Client.{i}.ClientID";
+      reference
+        "Device.MQTT.Client.{i}.ClientID";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Client.{i}.Username";
+      reference
+        "Device.MQTT.Client.{i}.Username";
+    }
+    leaf transport-protocol {
+      type string;
+      description
+        "Device.MQTT.Client.{i}.TransportProtocol";
+      reference
+        "Device.MQTT.Client.{i}.TransportProtocol";
+    }
+    leaf protocol-version {
+      type string;
+      description
+        "Device.MQTT.Client.{i}.ProtocolVersion";
+      reference
+        "Device.MQTT.Client.{i}.ProtocolVersion";
+    }
+    leaf clean-session {
+      type boolean;
+      description
+        "Device.MQTT.Client.{i}.CleanSession";
+      reference
+        "Device.MQTT.Client.{i}.CleanSession";
+    }
+    leaf message-retry-time {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.MQTT.Client.{i}.MessageRetryTime";
+      reference
+        "Device.MQTT.Client.{i}.MessageRetryTime";
+    }
+    leaf connect-retry-time {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.MQTT.Client.{i}.ConnectRetryTime";
+      reference
+        "Device.MQTT.Client.{i}.ConnectRetryTime";
+    }
+    leaf keep-alive-time {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.MQTT.Client.{i}.KeepAliveTime";
+      reference
+        "Device.MQTT.Client.{i}.KeepAliveTime";
+    }
+    leaf broker-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.MQTT.Client.{i}.BrokerAddress";
+      reference
+        "Device.MQTT.Client.{i}.BrokerAddress";
+    }
+    leaf broker-port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.MQTT.Client.{i}.BrokerPort";
+      reference
+        "Device.MQTT.Client.{i}.BrokerPort";
+    }
+    leaf will-enable {
+      type boolean;
+      description
+        "Device.MQTT.Client.{i}.WillEnable";
+      reference
+        "Device.MQTT.Client.{i}.WillEnable";
+    }
+    leaf will-topic {
+      type string;
+      description
+        "Device.MQTT.Client.{i}.WillTopic";
+      reference
+        "Device.MQTT.Client.{i}.WillTopic";
+    }
+    leaf will-value {
+      type string;
+      description
+        "Device.MQTT.Client.{i}.WillValue";
+      reference
+        "Device.MQTT.Client.{i}.WillValue";
+    }
+    leaf will-qo-s {
+      type uint32 {
+        range "0..2";
+      }
+      description
+        "Device.MQTT.Client.{i}.WillQoS";
+      reference
+        "Device.MQTT.Client.{i}.WillQoS";
+    }
+    leaf will-retain {
+      type boolean;
+      description
+        "Device.MQTT.Client.{i}.WillRetain";
+      reference
+        "Device.MQTT.Client.{i}.WillRetain";
+    }
+    leaf subscription-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.SubscriptionNumberOfEntries";
+      reference
+        "Device.MQTT.Client.{i}.SubscriptionNumberOfEntries";
+    }
+  }
+
+  grouping client-stats-g {
+    description
+      "Grouping object for Device.MQTT.Client.{i}.Stats.";
+    leaf broker-connection-established {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.BrokerConnectionEstablished";
+      reference
+        "Device.MQTT.Client.{i}.Stats.BrokerConnectionEstablished";
+    }
+    leaf last-publish-message-sent {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.LastPublishMessageSent";
+      reference
+        "Device.MQTT.Client.{i}.Stats.LastPublishMessageSent";
+    }
+    leaf last-publish-message-received {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.LastPublishMessageReceived";
+      reference
+        "Device.MQTT.Client.{i}.Stats.LastPublishMessageReceived";
+    }
+    leaf publish-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.PublishSent";
+      reference
+        "Device.MQTT.Client.{i}.Stats.PublishSent";
+    }
+    leaf publish-received {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.PublishReceived";
+      reference
+        "Device.MQTT.Client.{i}.Stats.PublishReceived";
+    }
+    leaf subscribe-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.SubscribeSent";
+      reference
+        "Device.MQTT.Client.{i}.Stats.SubscribeSent";
+    }
+    leaf un-subscribe-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.UnSubscribeSent";
+      reference
+        "Device.MQTT.Client.{i}.Stats.UnSubscribeSent";
+    }
+    leaf mqtt-messages-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.MQTTMessagesSent";
+      reference
+        "Device.MQTT.Client.{i}.Stats.MQTTMessagesSent";
+    }
+    leaf mqtt-messages-received {
+      type uint64;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.MQTTMessagesReceived";
+      reference
+        "Device.MQTT.Client.{i}.Stats.MQTTMessagesReceived";
+    }
+    leaf connection-errors {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.ConnectionErrors";
+      reference
+        "Device.MQTT.Client.{i}.Stats.ConnectionErrors";
+    }
+    leaf publish-errors {
+      type uint32;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Stats.PublishErrors";
+      reference
+        "Device.MQTT.Client.{i}.Stats.PublishErrors";
+    }
+  }
+
+  grouping client-subscription-g {
+    description
+      "Grouping object for Device.MQTT.Client.{i}.Subscription.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MQTT.Client.{i}.Subscription.{i}.Alias";
+      reference
+        "Device.MQTT.Client.{i}.Subscription.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MQTT.Client.{i}.Subscription.{i}.Enable";
+      reference
+        "Device.MQTT.Client.{i}.Subscription.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MQTT.Client.{i}.Subscription.{i}.Status";
+      reference
+        "Device.MQTT.Client.{i}.Subscription.{i}.Status";
+    }
+    leaf topic {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.MQTT.Client.{i}.Subscription.{i}.Topic";
+      reference
+        "Device.MQTT.Client.{i}.Subscription.{i}.Topic";
+    }
+    leaf qo-s {
+      type uint32 {
+        range "0..2";
+      }
+      description
+        "Device.MQTT.Client.{i}.Subscription.{i}.QoS";
+      reference
+        "Device.MQTT.Client.{i}.Subscription.{i}.QoS";
+    }
+  }
+
+  grouping device-management-server-g {
+    description
+      "Grouping object for Device.ManagementServer.";
+    leaf enable-cwmp {
+      type boolean;
+      description
+        "Device.ManagementServer.EnableCWMP";
+      reference
+        "Device.ManagementServer.EnableCWMP";
+    }
+    leaf url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.URL";
+      reference
+        "Device.ManagementServer.URL";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.Username";
+      reference
+        "Device.ManagementServer.Username";
+    }
+    leaf schedule-reboot {
+      type string;
+      description
+        "Device.ManagementServer.ScheduleReboot";
+      reference
+        "Device.ManagementServer.ScheduleReboot";
+    }
+    leaf delay-reboot {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.ManagementServer.DelayReboot";
+      reference
+        "Device.ManagementServer.DelayReboot";
+    }
+    leaf periodic-inform-enable {
+      type boolean;
+      description
+        "Device.ManagementServer.PeriodicInformEnable";
+      reference
+        "Device.ManagementServer.PeriodicInformEnable";
+    }
+    leaf periodic-inform-interval {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.ManagementServer.PeriodicInformInterval";
+      reference
+        "Device.ManagementServer.PeriodicInformInterval";
+    }
+    leaf periodic-inform-time {
+      type string;
+      description
+        "Device.ManagementServer.PeriodicInformTime";
+      reference
+        "Device.ManagementServer.PeriodicInformTime";
+    }
+    leaf parameter-key {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ParameterKey";
+      reference
+        "Device.ManagementServer.ParameterKey";
+    }
+    leaf connection-request-url {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ConnectionRequestURL";
+      reference
+        "Device.ManagementServer.ConnectionRequestURL";
+    }
+    leaf connection-request-username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.ConnectionRequestUsername";
+      reference
+        "Device.ManagementServer.ConnectionRequestUsername";
+    }
+    leaf upgrades-managed {
+      type boolean;
+      description
+        "Device.ManagementServer.UpgradesManaged";
+      reference
+        "Device.ManagementServer.UpgradesManaged";
+    }
+    leaf kick-url {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.KickURL";
+      reference
+        "Device.ManagementServer.KickURL";
+    }
+    leaf download-progress-url {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.DownloadProgressURL";
+      reference
+        "Device.ManagementServer.DownloadProgressURL";
+    }
+    leaf default-active-notification-throttle {
+      type uint32;
+      description
+        "Device.ManagementServer.DefaultActiveNotificationThrottle";
+      reference
+        "Device.ManagementServer.DefaultActiveNotificationThrottle";
+    }
+    leaf cwmp-retry-minimum-wait-interval {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.ManagementServer.CWMPRetryMinimumWaitInterval";
+      reference
+        "Device.ManagementServer.CWMPRetryMinimumWaitInterval";
+    }
+    leaf cwmp-retry-interval-multiplier {
+      type uint32 {
+        range "1000..65535";
+      }
+      description
+        "Device.ManagementServer.CWMPRetryIntervalMultiplier";
+      reference
+        "Device.ManagementServer.CWMPRetryIntervalMultiplier";
+    }
+    leaf http-connection-request-enable {
+      type boolean;
+      description
+        "Device.ManagementServer.HTTPConnectionRequestEnable";
+      reference
+        "Device.ManagementServer.HTTPConnectionRequestEnable";
+    }
+    leaf udp-connection-request-address {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.UDPConnectionRequestAddress";
+      reference
+        "Device.ManagementServer.UDPConnectionRequestAddress";
+    }
+    leaf stun-enable {
+      type boolean;
+      description
+        "Device.ManagementServer.STUNEnable";
+      reference
+        "Device.ManagementServer.STUNEnable";
+    }
+    leaf stun-server-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.STUNServerAddress";
+      reference
+        "Device.ManagementServer.STUNServerAddress";
+    }
+    leaf stun-server-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.ManagementServer.STUNServerPort";
+      reference
+        "Device.ManagementServer.STUNServerPort";
+    }
+    leaf stun-username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.STUNUsername";
+      reference
+        "Device.ManagementServer.STUNUsername";
+    }
+    leaf stun-maximum-keep-alive-period {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.ManagementServer.STUNMaximumKeepAlivePeriod";
+      reference
+        "Device.ManagementServer.STUNMaximumKeepAlivePeriod";
+    }
+    leaf stun-minimum-keep-alive-period {
+      type uint32;
+      description
+        "Device.ManagementServer.STUNMinimumKeepAlivePeriod";
+      reference
+        "Device.ManagementServer.STUNMinimumKeepAlivePeriod";
+    }
+    leaf nat-detected {
+      type boolean;
+      config false;
+      description
+        "Device.ManagementServer.NATDetected";
+      reference
+        "Device.ManagementServer.NATDetected";
+    }
+    leaf alias-based-addressing {
+      type boolean;
+      config false;
+      description
+        "Device.ManagementServer.AliasBasedAddressing";
+      reference
+        "Device.ManagementServer.AliasBasedAddressing";
+    }
+    leaf instance-mode {
+      type enumeration {
+        enum InstanceNumber {
+          description
+            "Enum Value - InstanceNumber";
+        }
+        enum InstanceAlias {
+          description
+            "Enum Value - InstanceAlias";
+        }
+      }
+      description
+        "Device.ManagementServer.InstanceMode";
+      reference
+        "Device.ManagementServer.InstanceMode";
+    }
+    leaf auto-create-instances {
+      type boolean;
+      description
+        "Device.ManagementServer.AutoCreateInstances";
+      reference
+        "Device.ManagementServer.AutoCreateInstances";
+    }
+    leaf manageable-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ManagementServer.ManageableDeviceNumberOfEntries";
+      reference
+        "Device.ManagementServer.ManageableDeviceNumberOfEntries";
+    }
+    leaf manageable-device-notification-limit {
+      type uint32;
+      description
+        "Device.ManagementServer.ManageableDeviceNotificationLimit";
+      reference
+        "Device.ManagementServer.ManageableDeviceNotificationLimit";
+    }
+    leaf embedded-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDeviceNumberOfEntries";
+      reference
+        "Device.ManagementServer.EmbeddedDeviceNumberOfEntries";
+    }
+    leaf virtual-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDeviceNumberOfEntries";
+      reference
+        "Device.ManagementServer.VirtualDeviceNumberOfEntries";
+    }
+    leaf supported-conn-req-methods {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.SupportedConnReqMethods";
+      reference
+        "Device.ManagementServer.SupportedConnReqMethods";
+    }
+    leaf conn-req-xmpp-connection {
+      type string;
+      description
+        "Device.ManagementServer.ConnReqXMPPConnection";
+      reference
+        "Device.ManagementServer.ConnReqXMPPConnection";
+    }
+    leaf conn-req-allowed-jabber-i-ds {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.ConnReqAllowedJabberIDs";
+      reference
+        "Device.ManagementServer.ConnReqAllowedJabberIDs";
+    }
+    leaf conn-req-jabber-id {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ConnReqJabberID";
+      reference
+        "Device.ManagementServer.ConnReqJabberID";
+    }
+    leaf http-compression-supported {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.HTTPCompressionSupported";
+      reference
+        "Device.ManagementServer.HTTPCompressionSupported";
+    }
+    leaf http-compression {
+      type string;
+      description
+        "Device.ManagementServer.HTTPCompression";
+      reference
+        "Device.ManagementServer.HTTPCompression";
+    }
+    leaf lightweight-notification-protocols-supported {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.LightweightNotificationProtocolsSupported";
+      reference
+        "Device.ManagementServer.LightweightNotificationProtocolsSupported";
+    }
+    leaf lightweight-notification-protocols-used {
+      type string;
+      description
+        "Device.ManagementServer.LightweightNotificationProtocolsUsed";
+      reference
+        "Device.ManagementServer.LightweightNotificationProtocolsUsed";
+    }
+    leaf lightweight-notification-trigger-interval {
+      type uint32 {
+        range "0..max";
+      }
+      description
+        "Device.ManagementServer.LightweightNotificationTriggerInterval";
+      reference
+        "Device.ManagementServer.LightweightNotificationTriggerInterval";
+    }
+    leaf lightweight-notification-trigger-time {
+      type string;
+      description
+        "Device.ManagementServer.LightweightNotificationTriggerTime";
+      reference
+        "Device.ManagementServer.LightweightNotificationTriggerTime";
+    }
+    leaf udp-lightweight-notification-host {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.UDPLightweightNotificationHost";
+      reference
+        "Device.ManagementServer.UDPLightweightNotificationHost";
+    }
+    leaf udp-lightweight-notification-port {
+      type uint32;
+      description
+        "Device.ManagementServer.UDPLightweightNotificationPort";
+      reference
+        "Device.ManagementServer.UDPLightweightNotificationPort";
+    }
+    leaf instance-wildcards-supported {
+      type boolean;
+      config false;
+      description
+        "Device.ManagementServer.InstanceWildcardsSupported";
+      reference
+        "Device.ManagementServer.InstanceWildcardsSupported";
+    }
+    leaf inform-parameter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ManagementServer.InformParameterNumberOfEntries";
+      reference
+        "Device.ManagementServer.InformParameterNumberOfEntries";
+    }
+  }
+
+  grouping management-server-autonomous-transfer-complete-policy-g {
+    description
+      "Grouping object for Device.ManagementServer.AutonomousTransferCompletePolicy.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.Enable";
+      reference
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.Enable";
+    }
+    leaf transfer-type-filter {
+      type enumeration {
+        enum Upload {
+          description
+            "Enum Value - Upload";
+        }
+        enum Download {
+          description
+            "Enum Value - Download";
+        }
+        enum Both {
+          description
+            "Enum Value - Both";
+        }
+      }
+      description
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.TransferTypeFilter";
+      reference
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.TransferTypeFilter";
+    }
+    leaf result-type-filter {
+      type enumeration {
+        enum Success {
+          description
+            "Enum Value - Success";
+        }
+        enum Failure {
+          description
+            "Enum Value - Failure";
+        }
+        enum Both {
+          description
+            "Enum Value - Both";
+        }
+      }
+      description
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.ResultTypeFilter";
+      reference
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.ResultTypeFilter";
+    }
+    leaf file-type-filter {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.FileTypeFilter";
+      reference
+        "Device.ManagementServer.AutonomousTransferCompletePolicy.FileTypeFilter";
+    }
+  }
+
+  grouping management-server-du-state-change-compl-policy-g {
+    description
+      "Grouping object for Device.ManagementServer.DUStateChangeComplPolicy.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.DUStateChangeComplPolicy.Enable";
+      reference
+        "Device.ManagementServer.DUStateChangeComplPolicy.Enable";
+    }
+    leaf operation-type-filter {
+      type enumeration {
+        enum Install {
+          description
+            "Enum Value - Install";
+        }
+        enum Update {
+          description
+            "Enum Value - Update";
+        }
+        enum Uninstall {
+          description
+            "Enum Value - Uninstall";
+        }
+      }
+      description
+        "Device.ManagementServer.DUStateChangeComplPolicy.OperationTypeFilter";
+      reference
+        "Device.ManagementServer.DUStateChangeComplPolicy.OperationTypeFilter";
+    }
+    leaf result-type-filter {
+      type enumeration {
+        enum Success {
+          description
+            "Enum Value - Success";
+        }
+        enum Failure {
+          description
+            "Enum Value - Failure";
+        }
+        enum Both {
+          description
+            "Enum Value - Both";
+        }
+      }
+      description
+        "Device.ManagementServer.DUStateChangeComplPolicy.ResultTypeFilter";
+      reference
+        "Device.ManagementServer.DUStateChangeComplPolicy.ResultTypeFilter";
+    }
+    leaf fault-code-filter {
+      type enumeration {
+        enum 9001 {
+          description
+            "Enum Value - 9001";
+        }
+        enum 9003 {
+          description
+            "Enum Value - 9003";
+        }
+        enum 9012 {
+          description
+            "Enum Value - 9012";
+        }
+        enum 9013 {
+          description
+            "Enum Value - 9013";
+        }
+        enum 9015 {
+          description
+            "Enum Value - 9015";
+        }
+        enum 9016 {
+          description
+            "Enum Value - 9016";
+        }
+        enum 9017 {
+          description
+            "Enum Value - 9017";
+        }
+        enum 9018 {
+          description
+            "Enum Value - 9018";
+        }
+        enum 9022 {
+          description
+            "Enum Value - 9022";
+        }
+        enum 9023 {
+          description
+            "Enum Value - 9023";
+        }
+        enum 9024 {
+          description
+            "Enum Value - 9024";
+        }
+        enum 9025 {
+          description
+            "Enum Value - 9025";
+        }
+        enum 9026 {
+          description
+            "Enum Value - 9026";
+        }
+        enum 9027 {
+          description
+            "Enum Value - 9027";
+        }
+        enum 9028 {
+          description
+            "Enum Value - 9028";
+        }
+        enum 9029 {
+          description
+            "Enum Value - 9029";
+        }
+        enum 9030 {
+          description
+            "Enum Value - 9030";
+        }
+        enum 9031 {
+          description
+            "Enum Value - 9031";
+        }
+        enum 9032 {
+          description
+            "Enum Value - 9032";
+        }
+      }
+      description
+        "Device.ManagementServer.DUStateChangeComplPolicy.FaultCodeFilter";
+      reference
+        "Device.ManagementServer.DUStateChangeComplPolicy.FaultCodeFilter";
+    }
+  }
+
+  grouping download-availability-announcement-g {
+    description
+      "Grouping object for Device.ManagementServer.DownloadAvailability.Announcement.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Enable";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Status";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Status";
+    }
+    leaf group-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.GroupNumberOfEntries";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.GroupNumberOfEntries";
+    }
+  }
+
+  grouping announcement-group-g {
+    description
+      "Grouping object for Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Alias";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Enable";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Status";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.Status";
+    }
+    leaf url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.URL";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.URL";
+    }
+  }
+
+  grouping download-availability-query-g {
+    description
+      "Grouping object for Device.ManagementServer.DownloadAvailability.Query.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.DownloadAvailability.Query.Enable";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Query.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.DownloadAvailability.Query.Status";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Query.Status";
+    }
+    leaf url {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.DownloadAvailability.Query.URL";
+      reference
+        "Device.ManagementServer.DownloadAvailability.Query.URL";
+    }
+  }
+
+  grouping management-server-embedded-device-g {
+    description
+      "Grouping object for Device.ManagementServer.EmbeddedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf controller-id {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.ControllerID";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.ControllerID";
+    }
+    leaf proxied-device-id {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxiedDeviceID";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxiedDeviceID";
+    }
+    leaf reference {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.Reference";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.Reference";
+    }
+    leaf supported-data-model {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.SupportedDataModel";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.SupportedDataModel";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.Host";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.Host";
+    }
+    leaf proxy-protocol {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxyProtocol";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxyProtocol";
+    }
+    leaf proxy-protocol-reference {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxyProtocolReference";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.ProxyProtocolReference";
+    }
+    leaf discovery-protocol {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.DiscoveryProtocol";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.DiscoveryProtocol";
+    }
+    leaf discovery-protocol-reference {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.DiscoveryProtocolReference";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.DiscoveryProtocolReference";
+    }
+    leaf command-processed {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.CommandProcessed";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.CommandProcessed";
+    }
+    leaf command-processing-err-msg {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.CommandProcessingErrMsg";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.CommandProcessingErrMsg";
+    }
+    leaf last-sync-time {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.EmbeddedDevice.{i}.LastSyncTime";
+      reference
+        "Device.ManagementServer.EmbeddedDevice.{i}.LastSyncTime";
+    }
+  }
+
+  grouping management-server-heartbeat-policy-g {
+    description
+      "Grouping object for Device.ManagementServer.HeartbeatPolicy.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.HeartbeatPolicy.Enable";
+      reference
+        "Device.ManagementServer.HeartbeatPolicy.Enable";
+    }
+    leaf reporting-interval {
+      type uint32 {
+        range "30..max";
+      }
+      description
+        "Device.ManagementServer.HeartbeatPolicy.ReportingInterval";
+      reference
+        "Device.ManagementServer.HeartbeatPolicy.ReportingInterval";
+    }
+    leaf initiation-time {
+      type string;
+      description
+        "Device.ManagementServer.HeartbeatPolicy.InitiationTime";
+      reference
+        "Device.ManagementServer.HeartbeatPolicy.InitiationTime";
+    }
+  }
+
+  grouping management-server-inform-parameter-g {
+    description
+      "Grouping object for Device.ManagementServer.InformParameter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ManagementServer.InformParameter.{i}.Enable";
+      reference
+        "Device.ManagementServer.InformParameter.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ManagementServer.InformParameter.{i}.Alias";
+      reference
+        "Device.ManagementServer.InformParameter.{i}.Alias";
+    }
+    leaf parameter-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ManagementServer.InformParameter.{i}.ParameterName";
+      reference
+        "Device.ManagementServer.InformParameter.{i}.ParameterName";
+    }
+    leaf event-list {
+      type string;
+      description
+        "Device.ManagementServer.InformParameter.{i}.EventList";
+      reference
+        "Device.ManagementServer.InformParameter.{i}.EventList";
+    }
+  }
+
+  grouping management-server-manageable-device-g {
+    description
+      "Grouping object for Device.ManagementServer.ManageableDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ManagementServer.ManageableDevice.{i}.Alias";
+      reference
+        "Device.ManagementServer.ManageableDevice.{i}.Alias";
+    }
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ManageableDevice.{i}.ManufacturerOUI";
+      reference
+        "Device.ManagementServer.ManageableDevice.{i}.ManufacturerOUI";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ManageableDevice.{i}.SerialNumber";
+      reference
+        "Device.ManagementServer.ManageableDevice.{i}.SerialNumber";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ManageableDevice.{i}.ProductClass";
+      reference
+        "Device.ManagementServer.ManageableDevice.{i}.ProductClass";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.ManageableDevice.{i}.Host";
+      reference
+        "Device.ManagementServer.ManageableDevice.{i}.Host";
+    }
+  }
+
+  grouping management-server-standby-policy-g {
+    description
+      "Grouping object for Device.ManagementServer.StandbyPolicy.";
+    leaf cr-unawareness-max-duration {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.ManagementServer.StandbyPolicy.CRUnawarenessMaxDuration";
+      reference
+        "Device.ManagementServer.StandbyPolicy.CRUnawarenessMaxDuration";
+    }
+    leaf max-missed-periodic {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.ManagementServer.StandbyPolicy.MaxMissedPeriodic";
+      reference
+        "Device.ManagementServer.StandbyPolicy.MaxMissedPeriodic";
+    }
+    leaf notify-missed-scheduled {
+      type boolean;
+      description
+        "Device.ManagementServer.StandbyPolicy.NotifyMissedScheduled";
+      reference
+        "Device.ManagementServer.StandbyPolicy.NotifyMissedScheduled";
+    }
+    leaf network-awareness-capable {
+      type boolean;
+      config false;
+      description
+        "Device.ManagementServer.StandbyPolicy.NetworkAwarenessCapable";
+      reference
+        "Device.ManagementServer.StandbyPolicy.NetworkAwarenessCapable";
+    }
+    leaf self-timer-capable {
+      type boolean;
+      config false;
+      description
+        "Device.ManagementServer.StandbyPolicy.SelfTimerCapable";
+      reference
+        "Device.ManagementServer.StandbyPolicy.SelfTimerCapable";
+    }
+    leaf cr-awareness-requested {
+      type boolean;
+      description
+        "Device.ManagementServer.StandbyPolicy.CRAwarenessRequested";
+      reference
+        "Device.ManagementServer.StandbyPolicy.CRAwarenessRequested";
+    }
+    leaf periodic-awareness-requested {
+      type boolean;
+      description
+        "Device.ManagementServer.StandbyPolicy.PeriodicAwarenessRequested";
+      reference
+        "Device.ManagementServer.StandbyPolicy.PeriodicAwarenessRequested";
+    }
+    leaf scheduled-awareness-requested {
+      type boolean;
+      description
+        "Device.ManagementServer.StandbyPolicy.ScheduledAwarenessRequested";
+      reference
+        "Device.ManagementServer.StandbyPolicy.ScheduledAwarenessRequested";
+    }
+  }
+
+  grouping management-server-virtual-device-g {
+    description
+      "Grouping object for Device.ManagementServer.VirtualDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.ManufacturerOUI";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.ManufacturerOUI";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.ProductClass";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.ProductClass";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.SerialNumber";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.SerialNumber";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.Host";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.Host";
+    }
+    leaf proxy-protocol {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.ProxyProtocol";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.ProxyProtocol";
+    }
+    leaf proxy-protocol-reference {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.ProxyProtocolReference";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.ProxyProtocolReference";
+    }
+    leaf discovery-protocol {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.DiscoveryProtocol";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.DiscoveryProtocol";
+    }
+    leaf discovery-protocol-reference {
+      type string;
+      config false;
+      description
+        "Device.ManagementServer.VirtualDevice.{i}.DiscoveryProtocolReference";
+      reference
+        "Device.ManagementServer.VirtualDevice.{i}.DiscoveryProtocolReference";
+    }
+  }
+
+  grouping device-mo-ca-g {
+    description
+      "Grouping object for Device.MoCA.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.InterfaceNumberOfEntries";
+      reference
+        "Device.MoCA.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping mo-ca-interface-g {
+    description
+      "Grouping object for Device.MoCA.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.MoCA.Interface.{i}.Enable";
+      reference
+        "Device.MoCA.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Status";
+      reference
+        "Device.MoCA.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.MoCA.Interface.{i}.Alias";
+      reference
+        "Device.MoCA.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Name";
+      reference
+        "Device.MoCA.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.LastChange";
+      reference
+        "Device.MoCA.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.MoCA.Interface.{i}.LowerLayers";
+      reference
+        "Device.MoCA.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Upstream";
+      reference
+        "Device.MoCA.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.MACAddress";
+      reference
+        "Device.MoCA.Interface.{i}.MACAddress";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.FirmwareVersion";
+      reference
+        "Device.MoCA.Interface.{i}.FirmwareVersion";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.MaxBitRate";
+      reference
+        "Device.MoCA.Interface.{i}.MaxBitRate";
+    }
+    leaf max-ingress-bw {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.MaxIngressBW";
+      reference
+        "Device.MoCA.Interface.{i}.MaxIngressBW";
+    }
+    leaf max-egress-bw {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.MaxEgressBW";
+      reference
+        "Device.MoCA.Interface.{i}.MaxEgressBW";
+    }
+    leaf highest-version {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.HighestVersion";
+      reference
+        "Device.MoCA.Interface.{i}.HighestVersion";
+    }
+    leaf current-version {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.CurrentVersion";
+      reference
+        "Device.MoCA.Interface.{i}.CurrentVersion";
+    }
+    leaf network-coordinator {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.NetworkCoordinator";
+      reference
+        "Device.MoCA.Interface.{i}.NetworkCoordinator";
+    }
+    leaf node-id {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.NodeID";
+      reference
+        "Device.MoCA.Interface.{i}.NodeID";
+    }
+    leaf max-nodes {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.MaxNodes";
+      reference
+        "Device.MoCA.Interface.{i}.MaxNodes";
+    }
+    leaf preferred-nc {
+      type boolean;
+      description
+        "Device.MoCA.Interface.{i}.PreferredNC";
+      reference
+        "Device.MoCA.Interface.{i}.PreferredNC";
+    }
+    leaf backup-nc {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.BackupNC";
+      reference
+        "Device.MoCA.Interface.{i}.BackupNC";
+    }
+    leaf privacy-enabled-setting {
+      type boolean;
+      description
+        "Device.MoCA.Interface.{i}.PrivacyEnabledSetting";
+      reference
+        "Device.MoCA.Interface.{i}.PrivacyEnabledSetting";
+    }
+    leaf privacy-enabled {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.PrivacyEnabled";
+      reference
+        "Device.MoCA.Interface.{i}.PrivacyEnabled";
+    }
+    leaf freq-capability-mask {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.FreqCapabilityMask";
+      reference
+        "Device.MoCA.Interface.{i}.FreqCapabilityMask";
+    }
+    leaf freq-current-mask-setting {
+      type string {
+        length "8";
+      }
+      description
+        "Device.MoCA.Interface.{i}.FreqCurrentMaskSetting";
+      reference
+        "Device.MoCA.Interface.{i}.FreqCurrentMaskSetting";
+    }
+    leaf freq-current-mask {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.FreqCurrentMask";
+      reference
+        "Device.MoCA.Interface.{i}.FreqCurrentMask";
+    }
+    leaf current-oper-freq {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.CurrentOperFreq";
+      reference
+        "Device.MoCA.Interface.{i}.CurrentOperFreq";
+    }
+    leaf last-oper-freq {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.LastOperFreq";
+      reference
+        "Device.MoCA.Interface.{i}.LastOperFreq";
+    }
+    leaf tx-power-limit {
+      type uint32;
+      description
+        "Device.MoCA.Interface.{i}.TxPowerLimit";
+      reference
+        "Device.MoCA.Interface.{i}.TxPowerLimit";
+    }
+    leaf power-cntl-phy-target {
+      type uint32;
+      description
+        "Device.MoCA.Interface.{i}.PowerCntlPhyTarget";
+      reference
+        "Device.MoCA.Interface.{i}.PowerCntlPhyTarget";
+    }
+    leaf beacon-power-limit {
+      type uint32;
+      description
+        "Device.MoCA.Interface.{i}.BeaconPowerLimit";
+      reference
+        "Device.MoCA.Interface.{i}.BeaconPowerLimit";
+    }
+    leaf network-taboo-mask {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.NetworkTabooMask";
+      reference
+        "Device.MoCA.Interface.{i}.NetworkTabooMask";
+    }
+    leaf node-taboo-mask {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.NodeTabooMask";
+      reference
+        "Device.MoCA.Interface.{i}.NodeTabooMask";
+    }
+    leaf tx-bcast-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.TxBcastRate";
+      reference
+        "Device.MoCA.Interface.{i}.TxBcastRate";
+    }
+    leaf tx-bcast-power-reduction {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.TxBcastPowerReduction";
+      reference
+        "Device.MoCA.Interface.{i}.TxBcastPowerReduction";
+    }
+    leaf qam256-capable {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QAM256Capable";
+      reference
+        "Device.MoCA.Interface.{i}.QAM256Capable";
+    }
+    leaf packet-aggregation-capability {
+      type uint32 {
+        range "0..10";
+      }
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.PacketAggregationCapability";
+      reference
+        "Device.MoCA.Interface.{i}.PacketAggregationCapability";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+  }
+
+  grouping mo-ca-interface-associated-device-g {
+    description
+      "Grouping object for Device.MoCA.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf node-id {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.NodeID";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.NodeID";
+    }
+    leaf preferred-nc {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PreferredNC";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PreferredNC";
+    }
+    leaf highest-version {
+      type string;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.HighestVersion";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.HighestVersion";
+    }
+    leaf phy-tx-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PHYTxRate";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PHYTxRate";
+    }
+    leaf phy-rx-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PHYRxRate";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PHYRxRate";
+    }
+    leaf tx-power-control-reduction {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxPowerControlReduction";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxPowerControlReduction";
+    }
+    leaf rx-power-level {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxPowerLevel";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxPowerLevel";
+    }
+    leaf tx-bcast-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxBcastRate";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxBcastRate";
+    }
+    leaf rx-bcast-power-level {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxBcastPowerLevel";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxBcastPowerLevel";
+    }
+    leaf tx-packets {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxPackets";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.TxPackets";
+    }
+    leaf rx-packets {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxPackets";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxPackets";
+    }
+    leaf rx-errored-and-missed-packets {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxErroredAndMissedPackets";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxErroredAndMissedPackets";
+    }
+    leaf qam256-capable {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.QAM256Capable";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.QAM256Capable";
+    }
+    leaf packet-aggregation-capability {
+      type uint32 {
+        range "0..10";
+      }
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PacketAggregationCapability";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.PacketAggregationCapability";
+    }
+    leaf rx-snr {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxSNR";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.RxSNR";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping mo-ca-interface-qo-s-g {
+    description
+      "Grouping object for Device.MoCA.Interface.{i}.QoS.";
+    leaf egress-num-flows {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.EgressNumFlows";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.EgressNumFlows";
+    }
+    leaf ingress-num-flows {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.IngressNumFlows";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.IngressNumFlows";
+    }
+    leaf flow-stats-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStatsNumberOfEntries";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStatsNumberOfEntries";
+    }
+  }
+
+  grouping qo-s-flow-stats-g {
+    description
+      "Grouping object for Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf flow-id {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.FlowID";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.FlowID";
+    }
+    leaf packet-da {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.PacketDA";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.PacketDA";
+    }
+    leaf max-rate {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.MaxRate";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.MaxRate";
+    }
+    leaf max-burst-size {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.MaxBurstSize";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.MaxBurstSize";
+    }
+    leaf lease-time {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.LeaseTime";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.LeaseTime";
+    }
+    leaf lease-time-left {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.LeaseTimeLeft";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.LeaseTimeLeft";
+    }
+    leaf flow-packets {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.FlowPackets";
+      reference
+        "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.FlowPackets";
+    }
+  }
+
+  grouping mo-ca-interface-stats-g {
+    description
+      "Grouping object for Device.MoCA.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.MoCA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.MoCA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping device-nat-g {
+    description
+      "Grouping object for Device.NAT.";
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.NAT.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.NAT.InterfaceSettingNumberOfEntries";
+    }
+    leaf port-mapping-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.NAT.PortMappingNumberOfEntries";
+      reference
+        "Device.NAT.PortMappingNumberOfEntries";
+    }
+  }
+
+  grouping nat-interface-setting-g {
+    description
+      "Grouping object for Device.NAT.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.NAT.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.NAT.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.NAT.InterfaceSetting.{i}.Status";
+      reference
+        "Device.NAT.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.NAT.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.NAT.InterfaceSetting.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.NAT.InterfaceSetting.{i}.Interface";
+      reference
+        "Device.NAT.InterfaceSetting.{i}.Interface";
+    }
+  }
+
+  grouping nat-port-mapping-g {
+    description
+      "Grouping object for Device.NAT.PortMapping.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.NAT.PortMapping.{i}.Enable";
+      reference
+        "Device.NAT.PortMapping.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.NAT.PortMapping.{i}.Status";
+      reference
+        "Device.NAT.PortMapping.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.Alias";
+      reference
+        "Device.NAT.PortMapping.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.Interface";
+      reference
+        "Device.NAT.PortMapping.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.NAT.PortMapping.{i}.AllInterfaces";
+      reference
+        "Device.NAT.PortMapping.{i}.AllInterfaces";
+    }
+    leaf lease-duration {
+      type uint32;
+      description
+        "Device.NAT.PortMapping.{i}.LeaseDuration";
+      reference
+        "Device.NAT.PortMapping.{i}.LeaseDuration";
+    }
+    leaf remote-host {
+      type string;
+      description
+        "Device.NAT.PortMapping.{i}.RemoteHost";
+      reference
+        "Device.NAT.PortMapping.{i}.RemoteHost";
+    }
+    leaf external-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.ExternalPort";
+      reference
+        "Device.NAT.PortMapping.{i}.ExternalPort";
+    }
+    leaf external-port-end-range {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.ExternalPortEndRange";
+      reference
+        "Device.NAT.PortMapping.{i}.ExternalPortEndRange";
+    }
+    leaf internal-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.InternalPort";
+      reference
+        "Device.NAT.PortMapping.{i}.InternalPort";
+    }
+    leaf protocol {
+      type enumeration {
+        enum TCP {
+          description
+            "Enum Value - TCP";
+        }
+        enum UDP {
+          description
+            "Enum Value - UDP";
+        }
+      }
+      description
+        "Device.NAT.PortMapping.{i}.Protocol";
+      reference
+        "Device.NAT.PortMapping.{i}.Protocol";
+    }
+    leaf internal-client {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.InternalClient";
+      reference
+        "Device.NAT.PortMapping.{i}.InternalClient";
+    }
+    leaf description {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.NAT.PortMapping.{i}.Description";
+      reference
+        "Device.NAT.PortMapping.{i}.Description";
+    }
+  }
+
+  grouping device-neighbor-discovery-g {
+    description
+      "Grouping object for Device.NeighborDiscovery.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.NeighborDiscovery.Enable";
+      reference
+        "Device.NeighborDiscovery.Enable";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.NeighborDiscovery.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.NeighborDiscovery.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping neighbor-discovery-interface-setting-g {
+    description
+      "Grouping object for Device.NeighborDiscovery.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Status";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Alias";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Interface";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.Interface";
+    }
+    leaf retrans-timer {
+      type uint32;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RetransTimer";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RetransTimer";
+    }
+    leaf rtr-solicitation-interval {
+      type uint32;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RtrSolicitationInterval";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RtrSolicitationInterval";
+    }
+    leaf max-rtr-solicitations {
+      type uint32;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.MaxRtrSolicitations";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.MaxRtrSolicitations";
+    }
+    leaf nud-enable {
+      type boolean;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.NUDEnable";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.NUDEnable";
+    }
+    leaf rs-enable {
+      type boolean;
+      description
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RSEnable";
+      reference
+        "Device.NeighborDiscovery.InterfaceSetting.{i}.RSEnable";
+    }
+  }
+
+  grouping device-optical-g {
+    description
+      "Grouping object for Device.Optical.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.InterfaceNumberOfEntries";
+      reference
+        "Device.Optical.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping optical-interface-g {
+    description
+      "Grouping object for Device.Optical.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Optical.Interface.{i}.Enable";
+      reference
+        "Device.Optical.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Status";
+      reference
+        "Device.Optical.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Optical.Interface.{i}.Alias";
+      reference
+        "Device.Optical.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Name";
+      reference
+        "Device.Optical.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.LastChange";
+      reference
+        "Device.Optical.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.Optical.Interface.{i}.LowerLayers";
+      reference
+        "Device.Optical.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Upstream";
+      reference
+        "Device.Optical.Interface.{i}.Upstream";
+    }
+    leaf optical-signal-level {
+      type int32 {
+        range "-65536..65534";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.OpticalSignalLevel";
+      reference
+        "Device.Optical.Interface.{i}.OpticalSignalLevel";
+    }
+    leaf lower-optical-threshold {
+      type int32 {
+        range "-127000..0";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.LowerOpticalThreshold";
+      reference
+        "Device.Optical.Interface.{i}.LowerOpticalThreshold";
+    }
+    leaf upper-optical-threshold {
+      type int32 {
+        range "-127000..0";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.UpperOpticalThreshold";
+      reference
+        "Device.Optical.Interface.{i}.UpperOpticalThreshold";
+    }
+    leaf transmit-optical-level {
+      type int32 {
+        range "-127000..0";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.TransmitOpticalLevel";
+      reference
+        "Device.Optical.Interface.{i}.TransmitOpticalLevel";
+    }
+    leaf lower-transmit-power-threshold {
+      type int32 {
+        range "-63500..63500";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.LowerTransmitPowerThreshold";
+      reference
+        "Device.Optical.Interface.{i}.LowerTransmitPowerThreshold";
+    }
+    leaf upper-transmit-power-threshold {
+      type int32 {
+        range "-63500..63500";
+      }
+      config false;
+      description
+        "Device.Optical.Interface.{i}.UpperTransmitPowerThreshold";
+      reference
+        "Device.Optical.Interface.{i}.UpperTransmitPowerThreshold";
+    }
+  }
+
+  grouping optical-interface-stats-g {
+    description
+      "Grouping object for Device.Optical.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.Optical.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.Optical.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.Optical.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.Optical.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.Optical.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.Optical.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.Optical.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.Optical.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.Optical.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+  }
+
+  grouping device-pcp-g {
+    description
+      "Grouping object for Device.PCP.";
+    leaf supported-versions {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.SupportedVersions";
+      reference
+        "Device.PCP.SupportedVersions";
+    }
+    leaf preferred-version {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.PCP.PreferredVersion";
+      reference
+        "Device.PCP.PreferredVersion";
+    }
+    leaf option-list {
+      type uint32 {
+        range "0..254";
+      }
+      config false;
+      description
+        "Device.PCP.OptionList";
+      reference
+        "Device.PCP.OptionList";
+    }
+    leaf client-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PCP.ClientNumberOfEntries";
+      reference
+        "Device.PCP.ClientNumberOfEntries";
+    }
+  }
+
+  grouping pcp-client-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.Enable";
+      reference
+        "Device.PCP.Client.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PCP.Client.{i}.Alias";
+      reference
+        "Device.PCP.Client.{i}.Alias";
+    }
+    leaf wan-interface {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.WANInterface";
+      reference
+        "Device.PCP.Client.{i}.WANInterface";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Status";
+      reference
+        "Device.PCP.Client.{i}.Status";
+    }
+    leaf map-enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.MAPEnable";
+      reference
+        "Device.PCP.Client.{i}.MAPEnable";
+    }
+    leaf peer-enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.PEEREnable";
+      reference
+        "Device.PCP.Client.{i}.PEEREnable";
+    }
+    leaf announce-enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.ANNOUNCEEnable";
+      reference
+        "Device.PCP.Client.{i}.ANNOUNCEEnable";
+    }
+    leaf thirdparty-enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.THIRDPARTYEnable";
+      reference
+        "Device.PCP.Client.{i}.THIRDPARTYEnable";
+    }
+    leaf thirdparty-status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.THIRDPARTYStatus";
+      reference
+        "Device.PCP.Client.{i}.THIRDPARTYStatus";
+    }
+    leaf filter-enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.FILTEREnable";
+      reference
+        "Device.PCP.Client.{i}.FILTEREnable";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PCP.Client.{i}.ServerNumberOfEntries";
+      reference
+        "Device.PCP.Client.{i}.ServerNumberOfEntries";
+    }
+  }
+
+  grouping client-pcp-proxy-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.PCPProxy.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.PCPProxy.Enable";
+      reference
+        "Device.PCP.Client.{i}.PCPProxy.Enable";
+    }
+    leaf highest-version {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.PCPProxy.HighestVersion";
+      reference
+        "Device.PCP.Client.{i}.PCPProxy.HighestVersion";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.PCPProxy.Status";
+      reference
+        "Device.PCP.Client.{i}.PCPProxy.Status";
+    }
+  }
+
+  grouping pcp-client-server-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.Enable";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.Status";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.Alias";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.Alias";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.Origin";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.Origin";
+    }
+    leaf server-name-or-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.ServerNameOrAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.ServerNameOrAddress";
+    }
+    leaf server-address-in-use {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.ServerAddressInUse";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.ServerAddressInUse";
+    }
+    leaf additional-server-addresses {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.AdditionalServerAddresses";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.AdditionalServerAddresses";
+    }
+    leaf external-ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.ExternalIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.ExternalIPAddress";
+    }
+    leaf current-version {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.CurrentVersion";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.CurrentVersion";
+    }
+    leaf maximum-filters {
+      type uint32;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.MaximumFilters";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.MaximumFilters";
+    }
+    leaf port-quota {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.PortQuota";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.PortQuota";
+    }
+    leaf preferred-lifetime {
+      type uint32;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.PreferredLifetime";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.PreferredLifetime";
+    }
+    leaf capabilities {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.Capabilities";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.Capabilities";
+    }
+    leaf inbound-mapping-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMappingNumberOfEntries";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMappingNumberOfEntries";
+    }
+    leaf outbound-mapping-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMappingNumberOfEntries";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMappingNumberOfEntries";
+    }
+  }
+
+  grouping server-inbound-mapping-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Enable";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Status";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Status";
+    }
+    leaf error-code {
+      type uint32 {
+        range "1..255";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ErrorCode";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ErrorCode";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Alias";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Alias";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Origin";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Origin";
+    }
+    leaf lifetime {
+      type uint32;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Lifetime";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Lifetime";
+    }
+    leaf suggested-external-ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalIPAddress";
+    }
+    leaf suggested-external-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalPort";
+    }
+    leaf suggested-external-port-end-range {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalPortEndRange";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.SuggestedExternalPortEndRange";
+    }
+    leaf internal-port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.InternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.InternalPort";
+    }
+    leaf protocol-number {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ProtocolNumber";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ProtocolNumber";
+    }
+    leaf third-party-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ThirdPartyAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.ThirdPartyAddress";
+    }
+    leaf description {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Description";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Description";
+    }
+    leaf assigned-external-ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalIPAddress";
+    }
+    leaf assigned-external-port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalPort";
+    }
+    leaf assigned-external-port-end-range {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalPortEndRange";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.AssignedExternalPortEndRange";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.FilterNumberOfEntries";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.FilterNumberOfEntries";
+    }
+  }
+
+  grouping inbound-mapping-filter-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.Alias";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.Alias";
+    }
+    leaf remote-host-ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemoteHostIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemoteHostIPAddress";
+    }
+    leaf prefix-length {
+      type uint32 {
+        range "1..128";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.PrefixLength";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.PrefixLength";
+    }
+    leaf remote-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemotePort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemotePort";
+    }
+    leaf remote-port-end-range {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemotePortEndRange";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.RemotePortEndRange";
+    }
+  }
+
+  grouping server-outbound-mapping-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Enable";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Status";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Status";
+    }
+    leaf error-code {
+      type uint32 {
+        range "1..255";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ErrorCode";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ErrorCode";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Alias";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Alias";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Origin";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Origin";
+    }
+    leaf lifetime {
+      type uint32;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Lifetime";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Lifetime";
+    }
+    leaf suggested-external-ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.SuggestedExternalIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.SuggestedExternalIPAddress";
+    }
+    leaf suggested-external-port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.SuggestedExternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.SuggestedExternalPort";
+    }
+    leaf remote-host-ip-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.RemoteHostIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.RemoteHostIPAddress";
+    }
+    leaf internal-port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.InternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.InternalPort";
+    }
+    leaf remote-port {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.RemotePort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.RemotePort";
+    }
+    leaf protocol-number {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ProtocolNumber";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ProtocolNumber";
+    }
+    leaf third-party-address {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ThirdPartyAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.ThirdPartyAddress";
+    }
+    leaf description {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Description";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.Description";
+    }
+    leaf assigned-external-ip-address {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.AssignedExternalIPAddress";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.AssignedExternalIPAddress";
+    }
+    leaf assigned-external-port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.AssignedExternalPort";
+      reference
+        "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.AssignedExternalPort";
+    }
+  }
+
+  grouping client-u-pn-piwf-g {
+    description
+      "Grouping object for Device.PCP.Client.{i}.UPnPIWF.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.PCP.Client.{i}.UPnPIWF.Enable";
+      reference
+        "Device.PCP.Client.{i}.UPnPIWF.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PCP.Client.{i}.UPnPIWF.Status";
+      reference
+        "Device.PCP.Client.{i}.UPnPIWF.Status";
+    }
+  }
+
+  grouping device-ppp-g {
+    description
+      "Grouping object for Device.PPP.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.InterfaceNumberOfEntries";
+      reference
+        "Device.PPP.InterfaceNumberOfEntries";
+    }
+    leaf supported-nc-ps {
+      type string;
+      config false;
+      description
+        "Device.PPP.SupportedNCPs";
+      reference
+        "Device.PPP.SupportedNCPs";
+    }
+  }
+
+  grouping ppp-interface-g {
+    description
+      "Grouping object for Device.PPP.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PPP.Interface.{i}.Enable";
+      reference
+        "Device.PPP.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Status";
+      reference
+        "Device.PPP.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PPP.Interface.{i}.Alias";
+      reference
+        "Device.PPP.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Name";
+      reference
+        "Device.PPP.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.LastChange";
+      reference
+        "Device.PPP.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.PPP.Interface.{i}.LowerLayers";
+      reference
+        "Device.PPP.Interface.{i}.LowerLayers";
+    }
+    leaf connection-status {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.ConnectionStatus";
+      reference
+        "Device.PPP.Interface.{i}.ConnectionStatus";
+    }
+    leaf last-connection-error {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.LastConnectionError";
+      reference
+        "Device.PPP.Interface.{i}.LastConnectionError";
+    }
+    leaf auto-disconnect-time {
+      type uint32;
+      description
+        "Device.PPP.Interface.{i}.AutoDisconnectTime";
+      reference
+        "Device.PPP.Interface.{i}.AutoDisconnectTime";
+    }
+    leaf idle-disconnect-time {
+      type uint32;
+      description
+        "Device.PPP.Interface.{i}.IdleDisconnectTime";
+      reference
+        "Device.PPP.Interface.{i}.IdleDisconnectTime";
+    }
+    leaf warn-disconnect-delay {
+      type uint32;
+      description
+        "Device.PPP.Interface.{i}.WarnDisconnectDelay";
+      reference
+        "Device.PPP.Interface.{i}.WarnDisconnectDelay";
+    }
+    leaf username {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PPP.Interface.{i}.Username";
+      reference
+        "Device.PPP.Interface.{i}.Username";
+    }
+    leaf encryption-protocol {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.EncryptionProtocol";
+      reference
+        "Device.PPP.Interface.{i}.EncryptionProtocol";
+    }
+    leaf compression-protocol {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.CompressionProtocol";
+      reference
+        "Device.PPP.Interface.{i}.CompressionProtocol";
+    }
+    leaf authentication-protocol {
+      type string;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.AuthenticationProtocol";
+      reference
+        "Device.PPP.Interface.{i}.AuthenticationProtocol";
+    }
+    leaf max-mru-size {
+      type uint32 {
+        range "64..65535";
+      }
+      description
+        "Device.PPP.Interface.{i}.MaxMRUSize";
+      reference
+        "Device.PPP.Interface.{i}.MaxMRUSize";
+    }
+    leaf current-mru-size {
+      type uint32 {
+        range "64..65535";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.CurrentMRUSize";
+      reference
+        "Device.PPP.Interface.{i}.CurrentMRUSize";
+    }
+    leaf connection-trigger {
+      type enumeration {
+        enum OnDemand {
+          description
+            "Enum Value - OnDemand";
+        }
+        enum AlwaysOn {
+          description
+            "Enum Value - AlwaysOn";
+        }
+        enum Manual {
+          description
+            "Enum Value - Manual";
+        }
+      }
+      description
+        "Device.PPP.Interface.{i}.ConnectionTrigger";
+      reference
+        "Device.PPP.Interface.{i}.ConnectionTrigger";
+    }
+    leaf lcp-echo {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.LCPEcho";
+      reference
+        "Device.PPP.Interface.{i}.LCPEcho";
+    }
+    leaf lcp-echo-retry {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.LCPEchoRetry";
+      reference
+        "Device.PPP.Interface.{i}.LCPEchoRetry";
+    }
+    leaf ipcp-enable {
+      type boolean;
+      description
+        "Device.PPP.Interface.{i}.IPCPEnable";
+      reference
+        "Device.PPP.Interface.{i}.IPCPEnable";
+    }
+    leaf ipv6-cp-enable {
+      type boolean;
+      description
+        "Device.PPP.Interface.{i}.IPv6CPEnable";
+      reference
+        "Device.PPP.Interface.{i}.IPv6CPEnable";
+    }
+  }
+
+  grouping interface-ipcp-g {
+    description
+      "Grouping object for Device.PPP.Interface.{i}.IPCP.";
+    leaf local-ip-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.IPCP.LocalIPAddress";
+      reference
+        "Device.PPP.Interface.{i}.IPCP.LocalIPAddress";
+    }
+    leaf remote-ip-address {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.IPCP.RemoteIPAddress";
+      reference
+        "Device.PPP.Interface.{i}.IPCP.RemoteIPAddress";
+    }
+    leaf dns-servers {
+      type string {
+        length "min..15";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.IPCP.DNSServers";
+      reference
+        "Device.PPP.Interface.{i}.IPCP.DNSServers";
+    }
+    leaf passthrough-enable {
+      type boolean;
+      description
+        "Device.PPP.Interface.{i}.IPCP.PassthroughEnable";
+      reference
+        "Device.PPP.Interface.{i}.IPCP.PassthroughEnable";
+    }
+    leaf passthrough-dhcp-pool {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PPP.Interface.{i}.IPCP.PassthroughDHCPPool";
+      reference
+        "Device.PPP.Interface.{i}.IPCP.PassthroughDHCPPool";
+    }
+  }
+
+  grouping interface-ipv6-cp-g {
+    description
+      "Grouping object for Device.PPP.Interface.{i}.IPv6CP.";
+    leaf local-interface-identifier {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.IPv6CP.LocalInterfaceIdentifier";
+      reference
+        "Device.PPP.Interface.{i}.IPv6CP.LocalInterfaceIdentifier";
+    }
+    leaf remote-interface-identifier {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.PPP.Interface.{i}.IPv6CP.RemoteInterfaceIdentifier";
+      reference
+        "Device.PPP.Interface.{i}.IPv6CP.RemoteInterfaceIdentifier";
+    }
+  }
+
+  grouping interface-pp-po-e-g {
+    description
+      "Grouping object for Device.PPP.Interface.{i}.PPPoE.";
+    leaf session-id {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.PPPoE.SessionID";
+      reference
+        "Device.PPP.Interface.{i}.PPPoE.SessionID";
+    }
+    leaf ac-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PPP.Interface.{i}.PPPoE.ACName";
+      reference
+        "Device.PPP.Interface.{i}.PPPoE.ACName";
+    }
+    leaf service-name {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PPP.Interface.{i}.PPPoE.ServiceName";
+      reference
+        "Device.PPP.Interface.{i}.PPPoE.ServiceName";
+    }
+  }
+
+  grouping ppp-interface-stats-g {
+    description
+      "Grouping object for Device.PPP.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.PPP.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.PPP.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.PPP.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping device-ptm-g {
+    description
+      "Grouping object for Device.PTM.";
+    leaf link-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.LinkNumberOfEntries";
+      reference
+        "Device.PTM.LinkNumberOfEntries";
+    }
+  }
+
+  grouping ptm-link-g {
+    description
+      "Grouping object for Device.PTM.Link.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PTM.Link.{i}.Enable";
+      reference
+        "Device.PTM.Link.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Status";
+      reference
+        "Device.PTM.Link.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PTM.Link.{i}.Alias";
+      reference
+        "Device.PTM.Link.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Name";
+      reference
+        "Device.PTM.Link.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.LastChange";
+      reference
+        "Device.PTM.Link.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.PTM.Link.{i}.LowerLayers";
+      reference
+        "Device.PTM.Link.{i}.LowerLayers";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.PTM.Link.{i}.MACAddress";
+      reference
+        "Device.PTM.Link.{i}.MACAddress";
+    }
+  }
+
+  grouping ptm-link-stats-g {
+    description
+      "Grouping object for Device.PTM.Link.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.BytesSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.BytesReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.PacketsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.PacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.ErrorsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.PTM.Link.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.PTM.Link.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.PTM.Link.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping device-periodic-statistics-g {
+    description
+      "Grouping object for Device.PeriodicStatistics.";
+    leaf min-sample-interval {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.MinSampleInterval";
+      reference
+        "Device.PeriodicStatistics.MinSampleInterval";
+    }
+    leaf max-report-samples {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.MaxReportSamples";
+      reference
+        "Device.PeriodicStatistics.MaxReportSamples";
+    }
+    leaf sample-set-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSetNumberOfEntries";
+      reference
+        "Device.PeriodicStatistics.SampleSetNumberOfEntries";
+    }
+  }
+
+  grouping periodic-statistics-sample-set-g {
+    description
+      "Grouping object for Device.PeriodicStatistics.SampleSet.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Alias";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Enable";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Status";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Status";
+    }
+    leaf name {
+      type string {
+        length "min..128";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Name";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Name";
+    }
+    leaf sample-interval {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.SampleInterval";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.SampleInterval";
+    }
+    leaf report-samples {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportSamples";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportSamples";
+    }
+    leaf time-reference {
+      type string;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.TimeReference";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.TimeReference";
+    }
+    leaf fetch-samples {
+      type uint32;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.FetchSamples";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.FetchSamples";
+    }
+    leaf report-start-time {
+      type string;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportStartTime";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportStartTime";
+    }
+    leaf report-end-time {
+      type string;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportEndTime";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.ReportEndTime";
+    }
+    leaf sample-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.SampleSeconds";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.SampleSeconds";
+    }
+    leaf parameter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.ParameterNumberOfEntries";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.ParameterNumberOfEntries";
+    }
+  }
+
+  grouping sample-set-parameter-g {
+    description
+      "Grouping object for Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Alias";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Enable";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Enable";
+    }
+    leaf reference {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Reference";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Reference";
+    }
+    leaf sample-mode {
+      type enumeration {
+        enum Current {
+          description
+            "Enum Value - Current";
+        }
+        enum Change {
+          description
+            "Enum Value - Change";
+        }
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SampleMode";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SampleMode";
+    }
+    leaf calculation-mode {
+      type enumeration {
+        enum Latest {
+          description
+            "Enum Value - Latest";
+        }
+        enum Minimum {
+          description
+            "Enum Value - Minimum";
+        }
+        enum Maximum {
+          description
+            "Enum Value - Maximum";
+        }
+        enum Average {
+          description
+            "Enum Value - Average";
+        }
+      }
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.CalculationMode";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.CalculationMode";
+    }
+    leaf low-threshold {
+      type int32;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.LowThreshold";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.LowThreshold";
+    }
+    leaf high-threshold {
+      type int32;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.HighThreshold";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.HighThreshold";
+    }
+    leaf sample-seconds {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SampleSeconds";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SampleSeconds";
+    }
+    leaf suspect-data {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SuspectData";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.SuspectData";
+    }
+    leaf values {
+      type string;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Values";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Values";
+    }
+    leaf failures {
+      type uint32;
+      config false;
+      description
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Failures";
+      reference
+        "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.Failures";
+    }
+  }
+
+  grouping device-qo-s-g {
+    description
+      "Grouping object for Device.QoS.";
+    leaf max-classification-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxClassificationEntries";
+      reference
+        "Device.QoS.MaxClassificationEntries";
+    }
+    leaf classification-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.ClassificationNumberOfEntries";
+      reference
+        "Device.QoS.ClassificationNumberOfEntries";
+    }
+    leaf max-app-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxAppEntries";
+      reference
+        "Device.QoS.MaxAppEntries";
+    }
+    leaf app-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.AppNumberOfEntries";
+      reference
+        "Device.QoS.AppNumberOfEntries";
+    }
+    leaf max-flow-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxFlowEntries";
+      reference
+        "Device.QoS.MaxFlowEntries";
+    }
+    leaf flow-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.FlowNumberOfEntries";
+      reference
+        "Device.QoS.FlowNumberOfEntries";
+    }
+    leaf max-policer-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxPolicerEntries";
+      reference
+        "Device.QoS.MaxPolicerEntries";
+    }
+    leaf policer-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.PolicerNumberOfEntries";
+      reference
+        "Device.QoS.PolicerNumberOfEntries";
+    }
+    leaf max-queue-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxQueueEntries";
+      reference
+        "Device.QoS.MaxQueueEntries";
+    }
+    leaf queue-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueNumberOfEntries";
+      reference
+        "Device.QoS.QueueNumberOfEntries";
+    }
+    leaf queue-stats-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStatsNumberOfEntries";
+      reference
+        "Device.QoS.QueueStatsNumberOfEntries";
+    }
+    leaf max-shaper-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.MaxShaperEntries";
+      reference
+        "Device.QoS.MaxShaperEntries";
+    }
+    leaf shaper-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.ShaperNumberOfEntries";
+      reference
+        "Device.QoS.ShaperNumberOfEntries";
+    }
+    leaf default-forwarding-policy {
+      type uint32;
+      description
+        "Device.QoS.DefaultForwardingPolicy";
+      reference
+        "Device.QoS.DefaultForwardingPolicy";
+    }
+    leaf default-traffic-class {
+      type uint32;
+      description
+        "Device.QoS.DefaultTrafficClass";
+      reference
+        "Device.QoS.DefaultTrafficClass";
+    }
+    leaf default-policer {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.DefaultPolicer";
+      reference
+        "Device.QoS.DefaultPolicer";
+    }
+    leaf default-queue {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.DefaultQueue";
+      reference
+        "Device.QoS.DefaultQueue";
+    }
+    leaf default-dscp-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.DefaultDSCPMark";
+      reference
+        "Device.QoS.DefaultDSCPMark";
+    }
+    leaf default-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.DefaultEthernetPriorityMark";
+      reference
+        "Device.QoS.DefaultEthernetPriorityMark";
+    }
+    leaf default-inner-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.DefaultInnerEthernetPriorityMark";
+      reference
+        "Device.QoS.DefaultInnerEthernetPriorityMark";
+    }
+    leaf available-app-list {
+      type string;
+      config false;
+      description
+        "Device.QoS.AvailableAppList";
+      reference
+        "Device.QoS.AvailableAppList";
+    }
+  }
+
+  grouping qo-s-app-g {
+    description
+      "Grouping object for Device.QoS.App.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.App.{i}.Enable";
+      reference
+        "Device.QoS.App.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.App.{i}.Status";
+      reference
+        "Device.QoS.App.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.App.{i}.Alias";
+      reference
+        "Device.QoS.App.{i}.Alias";
+    }
+    leaf protocol-identifier {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.App.{i}.ProtocolIdentifier";
+      reference
+        "Device.QoS.App.{i}.ProtocolIdentifier";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.App.{i}.Name";
+      reference
+        "Device.QoS.App.{i}.Name";
+    }
+    leaf default-forwarding-policy {
+      type uint32;
+      description
+        "Device.QoS.App.{i}.DefaultForwardingPolicy";
+      reference
+        "Device.QoS.App.{i}.DefaultForwardingPolicy";
+    }
+    leaf default-traffic-class {
+      type uint32;
+      description
+        "Device.QoS.App.{i}.DefaultTrafficClass";
+      reference
+        "Device.QoS.App.{i}.DefaultTrafficClass";
+    }
+    leaf default-policer {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.App.{i}.DefaultPolicer";
+      reference
+        "Device.QoS.App.{i}.DefaultPolicer";
+    }
+    leaf default-dscp-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.App.{i}.DefaultDSCPMark";
+      reference
+        "Device.QoS.App.{i}.DefaultDSCPMark";
+    }
+    leaf default-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.App.{i}.DefaultEthernetPriorityMark";
+      reference
+        "Device.QoS.App.{i}.DefaultEthernetPriorityMark";
+    }
+    leaf default-inner-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.App.{i}.DefaultInnerEthernetPriorityMark";
+      reference
+        "Device.QoS.App.{i}.DefaultInnerEthernetPriorityMark";
+    }
+  }
+
+  grouping qo-s-classification-g {
+    description
+      "Grouping object for Device.QoS.Classification.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.Enable";
+      reference
+        "Device.QoS.Classification.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.Classification.{i}.Status";
+      reference
+        "Device.QoS.Classification.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.Order";
+      reference
+        "Device.QoS.Classification.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Classification.{i}.Alias";
+      reference
+        "Device.QoS.Classification.{i}.Alias";
+    }
+    leaf dhcp-type {
+      type enumeration {
+        enum DHCPv4 {
+          description
+            "Enum Value - DHCPv4";
+        }
+        enum DHCPv6 {
+          description
+            "Enum Value - DHCPv6";
+        }
+      }
+      description
+        "Device.QoS.Classification.{i}.DHCPType";
+      reference
+        "Device.QoS.Classification.{i}.DHCPType";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Classification.{i}.Interface";
+      reference
+        "Device.QoS.Classification.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.AllInterfaces";
+      reference
+        "Device.QoS.Classification.{i}.AllInterfaces";
+    }
+    leaf dest-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestIP";
+      reference
+        "Device.QoS.Classification.{i}.DestIP";
+    }
+    leaf dest-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestMask";
+      reference
+        "Device.QoS.Classification.{i}.DestMask";
+    }
+    leaf dest-ip-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestIPExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestIPExclude";
+    }
+    leaf source-ip {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceIP";
+      reference
+        "Device.QoS.Classification.{i}.SourceIP";
+    }
+    leaf source-mask {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceMask";
+      reference
+        "Device.QoS.Classification.{i}.SourceMask";
+    }
+    leaf source-ip-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceIPExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceIPExclude";
+    }
+    leaf protocol {
+      type int32 {
+        range "-1..255";
+      }
+      description
+        "Device.QoS.Classification.{i}.Protocol";
+      reference
+        "Device.QoS.Classification.{i}.Protocol";
+    }
+    leaf protocol-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.ProtocolExclude";
+      reference
+        "Device.QoS.Classification.{i}.ProtocolExclude";
+    }
+    leaf dest-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestPort";
+      reference
+        "Device.QoS.Classification.{i}.DestPort";
+    }
+    leaf dest-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestPortRangeMax";
+      reference
+        "Device.QoS.Classification.{i}.DestPortRangeMax";
+    }
+    leaf dest-port-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestPortExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestPortExclude";
+    }
+    leaf source-port {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourcePort";
+      reference
+        "Device.QoS.Classification.{i}.SourcePort";
+    }
+    leaf source-port-range-max {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourcePortRangeMax";
+      reference
+        "Device.QoS.Classification.{i}.SourcePortRangeMax";
+    }
+    leaf source-port-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourcePortExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourcePortExclude";
+    }
+    leaf source-mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceMACAddress";
+      reference
+        "Device.QoS.Classification.{i}.SourceMACAddress";
+    }
+    leaf source-mac-mask {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceMACMask";
+      reference
+        "Device.QoS.Classification.{i}.SourceMACMask";
+    }
+    leaf source-mac-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceMACExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceMACExclude";
+    }
+    leaf dest-mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestMACAddress";
+      reference
+        "Device.QoS.Classification.{i}.DestMACAddress";
+    }
+    leaf dest-mac-mask {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestMACMask";
+      reference
+        "Device.QoS.Classification.{i}.DestMACMask";
+    }
+    leaf dest-mac-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestMACExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestMACExclude";
+    }
+    leaf ethertype {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.Ethertype";
+      reference
+        "Device.QoS.Classification.{i}.Ethertype";
+    }
+    leaf ethertype-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.EthertypeExclude";
+      reference
+        "Device.QoS.Classification.{i}.EthertypeExclude";
+    }
+    leaf ssap {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.SSAP";
+      reference
+        "Device.QoS.Classification.{i}.SSAP";
+    }
+    leaf ssap-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SSAPExclude";
+      reference
+        "Device.QoS.Classification.{i}.SSAPExclude";
+    }
+    leaf dsap {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.DSAP";
+      reference
+        "Device.QoS.Classification.{i}.DSAP";
+    }
+    leaf dsap-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DSAPExclude";
+      reference
+        "Device.QoS.Classification.{i}.DSAPExclude";
+    }
+    leaf llc-control {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.LLCControl";
+      reference
+        "Device.QoS.Classification.{i}.LLCControl";
+    }
+    leaf llc-control-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.LLCControlExclude";
+      reference
+        "Device.QoS.Classification.{i}.LLCControlExclude";
+    }
+    leaf snapoui {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.SNAPOUI";
+      reference
+        "Device.QoS.Classification.{i}.SNAPOUI";
+    }
+    leaf snapoui-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SNAPOUIExclude";
+      reference
+        "Device.QoS.Classification.{i}.SNAPOUIExclude";
+    }
+    leaf source-vendor-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceVendorClassID";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorClassID";
+    }
+    leaf source-vendor-class-idv6 {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceVendorClassIDv6";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorClassIDv6";
+    }
+    leaf source-vendor-class-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceVendorClassIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorClassIDExclude";
+    }
+    leaf source-vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceVendorClassIDMode";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorClassIDMode";
+    }
+    leaf dest-vendor-class-id {
+      type string {
+        length "min..255";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestVendorClassID";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorClassID";
+    }
+    leaf dest-vendor-class-idv6 {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestVendorClassIDv6";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorClassIDv6";
+    }
+    leaf dest-vendor-class-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestVendorClassIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorClassIDExclude";
+    }
+    leaf dest-vendor-class-id-mode {
+      type enumeration {
+        enum Exact {
+          description
+            "Enum Value - Exact";
+        }
+        enum Prefix {
+          description
+            "Enum Value - Prefix";
+        }
+        enum Suffix {
+          description
+            "Enum Value - Suffix";
+        }
+        enum Substring {
+          description
+            "Enum Value - Substring";
+        }
+      }
+      description
+        "Device.QoS.Classification.{i}.DestVendorClassIDMode";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorClassIDMode";
+    }
+    leaf source-client-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceClientID";
+      reference
+        "Device.QoS.Classification.{i}.SourceClientID";
+    }
+    leaf source-client-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceClientIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceClientIDExclude";
+    }
+    leaf dest-client-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestClientID";
+      reference
+        "Device.QoS.Classification.{i}.DestClientID";
+    }
+    leaf dest-client-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestClientIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestClientIDExclude";
+    }
+    leaf source-user-class-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceUserClassID";
+      reference
+        "Device.QoS.Classification.{i}.SourceUserClassID";
+    }
+    leaf source-user-class-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceUserClassIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceUserClassIDExclude";
+    }
+    leaf dest-user-class-id {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestUserClassID";
+      reference
+        "Device.QoS.Classification.{i}.DestUserClassID";
+    }
+    leaf dest-user-class-id-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestUserClassIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestUserClassIDExclude";
+    }
+    leaf source-vendor-specific-info {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfo";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfo";
+    }
+    leaf source-vendor-specific-info-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoExclude";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoExclude";
+    }
+    leaf source-vendor-specific-info-enterprise {
+      type uint32;
+      description
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoEnterprise";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoEnterprise";
+    }
+    leaf source-vendor-specific-info-sub-option {
+      type int32 {
+        range "0..255";
+      }
+      description
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoSubOption";
+      reference
+        "Device.QoS.Classification.{i}.SourceVendorSpecificInfoSubOption";
+    }
+    leaf dest-vendor-specific-info {
+      type string {
+        length "min..65535";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfo";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfo";
+    }
+    leaf dest-vendor-specific-info-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoExclude";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoExclude";
+    }
+    leaf dest-vendor-specific-info-enterprise {
+      type uint32;
+      description
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoEnterprise";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoEnterprise";
+    }
+    leaf dest-vendor-specific-info-sub-option {
+      type int32 {
+        range "0..255";
+      }
+      description
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoSubOption";
+      reference
+        "Device.QoS.Classification.{i}.DestVendorSpecificInfoSubOption";
+    }
+    leaf tcpack {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.TCPACK";
+      reference
+        "Device.QoS.Classification.{i}.TCPACK";
+    }
+    leaf tcpack-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.TCPACKExclude";
+      reference
+        "Device.QoS.Classification.{i}.TCPACKExclude";
+    }
+    leaf ip-length-min {
+      type uint32;
+      description
+        "Device.QoS.Classification.{i}.IPLengthMin";
+      reference
+        "Device.QoS.Classification.{i}.IPLengthMin";
+    }
+    leaf ip-length-max {
+      type uint32;
+      description
+        "Device.QoS.Classification.{i}.IPLengthMax";
+      reference
+        "Device.QoS.Classification.{i}.IPLengthMax";
+    }
+    leaf ip-length-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.IPLengthExclude";
+      reference
+        "Device.QoS.Classification.{i}.IPLengthExclude";
+    }
+    leaf dscp-check {
+      type int32 {
+        range "-1..63";
+      }
+      description
+        "Device.QoS.Classification.{i}.DSCPCheck";
+      reference
+        "Device.QoS.Classification.{i}.DSCPCheck";
+    }
+    leaf dscp-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.DSCPExclude";
+      reference
+        "Device.QoS.Classification.{i}.DSCPExclude";
+    }
+    leaf dscp-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.DSCPMark";
+      reference
+        "Device.QoS.Classification.{i}.DSCPMark";
+    }
+    leaf ethernet-priority-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.EthernetPriorityCheck";
+      reference
+        "Device.QoS.Classification.{i}.EthernetPriorityCheck";
+    }
+    leaf ethernet-priority-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.EthernetPriorityExclude";
+      reference
+        "Device.QoS.Classification.{i}.EthernetPriorityExclude";
+    }
+    leaf ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.EthernetPriorityMark";
+      reference
+        "Device.QoS.Classification.{i}.EthernetPriorityMark";
+    }
+    leaf inner-ethernet-priority-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityCheck";
+      reference
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityCheck";
+    }
+    leaf inner-ethernet-priority-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityExclude";
+      reference
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityExclude";
+    }
+    leaf inner-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityMark";
+      reference
+        "Device.QoS.Classification.{i}.InnerEthernetPriorityMark";
+    }
+    leaf ethernet-dei-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.EthernetDEICheck";
+      reference
+        "Device.QoS.Classification.{i}.EthernetDEICheck";
+    }
+    leaf ethernet-dei-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.EthernetDEIExclude";
+      reference
+        "Device.QoS.Classification.{i}.EthernetDEIExclude";
+    }
+    leaf vlanid-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.VLANIDCheck";
+      reference
+        "Device.QoS.Classification.{i}.VLANIDCheck";
+    }
+    leaf vlanid-exclude {
+      type boolean;
+      description
+        "Device.QoS.Classification.{i}.VLANIDExclude";
+      reference
+        "Device.QoS.Classification.{i}.VLANIDExclude";
+    }
+    leaf out-of-band-info {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.OutOfBandInfo";
+      reference
+        "Device.QoS.Classification.{i}.OutOfBandInfo";
+    }
+    leaf forwarding-policy {
+      type uint32;
+      description
+        "Device.QoS.Classification.{i}.ForwardingPolicy";
+      reference
+        "Device.QoS.Classification.{i}.ForwardingPolicy";
+    }
+    leaf traffic-class {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Classification.{i}.TrafficClass";
+      reference
+        "Device.QoS.Classification.{i}.TrafficClass";
+    }
+    leaf policer {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Classification.{i}.Policer";
+      reference
+        "Device.QoS.Classification.{i}.Policer";
+    }
+    leaf app {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Classification.{i}.App";
+      reference
+        "Device.QoS.Classification.{i}.App";
+    }
+  }
+
+  grouping qo-s-flow-g {
+    description
+      "Grouping object for Device.QoS.Flow.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.Flow.{i}.Enable";
+      reference
+        "Device.QoS.Flow.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.Flow.{i}.Status";
+      reference
+        "Device.QoS.Flow.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Flow.{i}.Alias";
+      reference
+        "Device.QoS.Flow.{i}.Alias";
+    }
+    leaf type {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Flow.{i}.Type";
+      reference
+        "Device.QoS.Flow.{i}.Type";
+    }
+    leaf type-parameters {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Flow.{i}.TypeParameters";
+      reference
+        "Device.QoS.Flow.{i}.TypeParameters";
+    }
+    leaf name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Flow.{i}.Name";
+      reference
+        "Device.QoS.Flow.{i}.Name";
+    }
+    leaf app {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Flow.{i}.App";
+      reference
+        "Device.QoS.Flow.{i}.App";
+    }
+    leaf forwarding-policy {
+      type uint32;
+      description
+        "Device.QoS.Flow.{i}.ForwardingPolicy";
+      reference
+        "Device.QoS.Flow.{i}.ForwardingPolicy";
+    }
+    leaf traffic-class {
+      type uint32;
+      description
+        "Device.QoS.Flow.{i}.TrafficClass";
+      reference
+        "Device.QoS.Flow.{i}.TrafficClass";
+    }
+    leaf policer {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Flow.{i}.Policer";
+      reference
+        "Device.QoS.Flow.{i}.Policer";
+    }
+    leaf dscp-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Flow.{i}.DSCPMark";
+      reference
+        "Device.QoS.Flow.{i}.DSCPMark";
+    }
+    leaf ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Flow.{i}.EthernetPriorityMark";
+      reference
+        "Device.QoS.Flow.{i}.EthernetPriorityMark";
+    }
+    leaf inner-ethernet-priority-mark {
+      type int32 {
+        range "-2..max";
+      }
+      description
+        "Device.QoS.Flow.{i}.InnerEthernetPriorityMark";
+      reference
+        "Device.QoS.Flow.{i}.InnerEthernetPriorityMark";
+    }
+  }
+
+  grouping qo-s-policer-g {
+    description
+      "Grouping object for Device.QoS.Policer.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.Policer.{i}.Enable";
+      reference
+        "Device.QoS.Policer.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.Status";
+      reference
+        "Device.QoS.Policer.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Policer.{i}.Alias";
+      reference
+        "Device.QoS.Policer.{i}.Alias";
+    }
+    leaf committed-rate {
+      type uint32;
+      description
+        "Device.QoS.Policer.{i}.CommittedRate";
+      reference
+        "Device.QoS.Policer.{i}.CommittedRate";
+    }
+    leaf committed-burst-size {
+      type uint32;
+      description
+        "Device.QoS.Policer.{i}.CommittedBurstSize";
+      reference
+        "Device.QoS.Policer.{i}.CommittedBurstSize";
+    }
+    leaf excess-burst-size {
+      type uint32;
+      description
+        "Device.QoS.Policer.{i}.ExcessBurstSize";
+      reference
+        "Device.QoS.Policer.{i}.ExcessBurstSize";
+    }
+    leaf peak-rate {
+      type uint32;
+      description
+        "Device.QoS.Policer.{i}.PeakRate";
+      reference
+        "Device.QoS.Policer.{i}.PeakRate";
+    }
+    leaf peak-burst-size {
+      type uint32;
+      description
+        "Device.QoS.Policer.{i}.PeakBurstSize";
+      reference
+        "Device.QoS.Policer.{i}.PeakBurstSize";
+    }
+    leaf meter-type {
+      type string;
+      description
+        "Device.QoS.Policer.{i}.MeterType";
+      reference
+        "Device.QoS.Policer.{i}.MeterType";
+    }
+    leaf possible-meter-types {
+      type string;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.PossibleMeterTypes";
+      reference
+        "Device.QoS.Policer.{i}.PossibleMeterTypes";
+    }
+    leaf conforming-action {
+      type string;
+      description
+        "Device.QoS.Policer.{i}.ConformingAction";
+      reference
+        "Device.QoS.Policer.{i}.ConformingAction";
+    }
+    leaf partial-conforming-action {
+      type string;
+      description
+        "Device.QoS.Policer.{i}.PartialConformingAction";
+      reference
+        "Device.QoS.Policer.{i}.PartialConformingAction";
+    }
+    leaf non-conforming-action {
+      type string;
+      description
+        "Device.QoS.Policer.{i}.NonConformingAction";
+      reference
+        "Device.QoS.Policer.{i}.NonConformingAction";
+    }
+    leaf total-counted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.TotalCountedPackets";
+      reference
+        "Device.QoS.Policer.{i}.TotalCountedPackets";
+    }
+    leaf total-counted-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.TotalCountedBytes";
+      reference
+        "Device.QoS.Policer.{i}.TotalCountedBytes";
+    }
+    leaf conforming-counted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.ConformingCountedPackets";
+      reference
+        "Device.QoS.Policer.{i}.ConformingCountedPackets";
+    }
+    leaf conforming-counted-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.ConformingCountedBytes";
+      reference
+        "Device.QoS.Policer.{i}.ConformingCountedBytes";
+    }
+    leaf partially-conforming-counted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.PartiallyConformingCountedPackets";
+      reference
+        "Device.QoS.Policer.{i}.PartiallyConformingCountedPackets";
+    }
+    leaf partially-conforming-counted-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.PartiallyConformingCountedBytes";
+      reference
+        "Device.QoS.Policer.{i}.PartiallyConformingCountedBytes";
+    }
+    leaf non-conforming-counted-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.NonConformingCountedPackets";
+      reference
+        "Device.QoS.Policer.{i}.NonConformingCountedPackets";
+    }
+    leaf non-conforming-counted-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Policer.{i}.NonConformingCountedBytes";
+      reference
+        "Device.QoS.Policer.{i}.NonConformingCountedBytes";
+    }
+  }
+
+  grouping qo-s-queue-g {
+    description
+      "Grouping object for Device.QoS.Queue.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.Queue.{i}.Enable";
+      reference
+        "Device.QoS.Queue.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.Queue.{i}.Status";
+      reference
+        "Device.QoS.Queue.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Queue.{i}.Alias";
+      reference
+        "Device.QoS.Queue.{i}.Alias";
+    }
+    leaf traffic-classes {
+      type uint32;
+      description
+        "Device.QoS.Queue.{i}.TrafficClasses";
+      reference
+        "Device.QoS.Queue.{i}.TrafficClasses";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Queue.{i}.Interface";
+      reference
+        "Device.QoS.Queue.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.QoS.Queue.{i}.AllInterfaces";
+      reference
+        "Device.QoS.Queue.{i}.AllInterfaces";
+    }
+    leaf hardware-assisted {
+      type boolean;
+      config false;
+      description
+        "Device.QoS.Queue.{i}.HardwareAssisted";
+      reference
+        "Device.QoS.Queue.{i}.HardwareAssisted";
+    }
+    leaf buffer-length {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.Queue.{i}.BufferLength";
+      reference
+        "Device.QoS.Queue.{i}.BufferLength";
+    }
+    leaf weight {
+      type uint32;
+      description
+        "Device.QoS.Queue.{i}.Weight";
+      reference
+        "Device.QoS.Queue.{i}.Weight";
+    }
+    leaf precedence {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.QoS.Queue.{i}.Precedence";
+      reference
+        "Device.QoS.Queue.{i}.Precedence";
+    }
+    leaf red-threshold {
+      type uint32 {
+        range "min..100";
+      }
+      description
+        "Device.QoS.Queue.{i}.REDThreshold";
+      reference
+        "Device.QoS.Queue.{i}.REDThreshold";
+    }
+    leaf red-percentage {
+      type uint32 {
+        range "min..100";
+      }
+      description
+        "Device.QoS.Queue.{i}.REDPercentage";
+      reference
+        "Device.QoS.Queue.{i}.REDPercentage";
+    }
+    leaf drop-algorithm {
+      type enumeration {
+        enum RED {
+          description
+            "Enum Value - RED";
+        }
+        enum DT {
+          description
+            "Enum Value - DT";
+        }
+        enum WRED {
+          description
+            "Enum Value - WRED";
+        }
+        enum BLUE {
+          description
+            "Enum Value - BLUE";
+        }
+      }
+      description
+        "Device.QoS.Queue.{i}.DropAlgorithm";
+      reference
+        "Device.QoS.Queue.{i}.DropAlgorithm";
+    }
+    leaf scheduler-algorithm {
+      type enumeration {
+        enum WFQ {
+          description
+            "Enum Value - WFQ";
+        }
+        enum WRR {
+          description
+            "Enum Value - WRR";
+        }
+        enum SP {
+          description
+            "Enum Value - SP";
+        }
+      }
+      description
+        "Device.QoS.Queue.{i}.SchedulerAlgorithm";
+      reference
+        "Device.QoS.Queue.{i}.SchedulerAlgorithm";
+    }
+    leaf shaping-rate {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Queue.{i}.ShapingRate";
+      reference
+        "Device.QoS.Queue.{i}.ShapingRate";
+    }
+    leaf shaping-burst-size {
+      type uint32;
+      description
+        "Device.QoS.Queue.{i}.ShapingBurstSize";
+      reference
+        "Device.QoS.Queue.{i}.ShapingBurstSize";
+    }
+  }
+
+  grouping qo-s-queue-stats-g {
+    description
+      "Grouping object for Device.QoS.QueueStats.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.QueueStats.{i}.Enable";
+      reference
+        "Device.QoS.QueueStats.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.Status";
+      reference
+        "Device.QoS.QueueStats.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.QueueStats.{i}.Alias";
+      reference
+        "Device.QoS.QueueStats.{i}.Alias";
+    }
+    leaf queue {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.QueueStats.{i}.Queue";
+      reference
+        "Device.QoS.QueueStats.{i}.Queue";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.QueueStats.{i}.Interface";
+      reference
+        "Device.QoS.QueueStats.{i}.Interface";
+    }
+    leaf output-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.OutputPackets";
+      reference
+        "Device.QoS.QueueStats.{i}.OutputPackets";
+    }
+    leaf output-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.OutputBytes";
+      reference
+        "Device.QoS.QueueStats.{i}.OutputBytes";
+    }
+    leaf dropped-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.DroppedPackets";
+      reference
+        "Device.QoS.QueueStats.{i}.DroppedPackets";
+    }
+    leaf dropped-bytes {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.DroppedBytes";
+      reference
+        "Device.QoS.QueueStats.{i}.DroppedBytes";
+    }
+    leaf queue-occupancy-packets {
+      type uint32;
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.QueueOccupancyPackets";
+      reference
+        "Device.QoS.QueueStats.{i}.QueueOccupancyPackets";
+    }
+    leaf queue-occupancy-percentage {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.QoS.QueueStats.{i}.QueueOccupancyPercentage";
+      reference
+        "Device.QoS.QueueStats.{i}.QueueOccupancyPercentage";
+    }
+  }
+
+  grouping qo-s-shaper-g {
+    description
+      "Grouping object for Device.QoS.Shaper.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.QoS.Shaper.{i}.Enable";
+      reference
+        "Device.QoS.Shaper.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.QoS.Shaper.{i}.Status";
+      reference
+        "Device.QoS.Shaper.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.QoS.Shaper.{i}.Alias";
+      reference
+        "Device.QoS.Shaper.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.QoS.Shaper.{i}.Interface";
+      reference
+        "Device.QoS.Shaper.{i}.Interface";
+    }
+    leaf shaping-rate {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.QoS.Shaper.{i}.ShapingRate";
+      reference
+        "Device.QoS.Shaper.{i}.ShapingRate";
+    }
+    leaf shaping-burst-size {
+      type uint32;
+      description
+        "Device.QoS.Shaper.{i}.ShapingBurstSize";
+      reference
+        "Device.QoS.Shaper.{i}.ShapingBurstSize";
+    }
+  }
+
+  grouping device-router-advertisement-g {
+    description
+      "Grouping object for Device.RouterAdvertisement.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.Enable";
+      reference
+        "Device.RouterAdvertisement.Enable";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.RouterAdvertisement.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.RouterAdvertisement.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping router-advertisement-interface-setting-g {
+    description
+      "Grouping object for Device.RouterAdvertisement.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Status";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Alias";
+    }
+    leaf interface {
+      type string;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Interface";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Interface";
+    }
+    leaf manual-prefixes {
+      type string;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.ManualPrefixes";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.ManualPrefixes";
+    }
+    leaf prefixes {
+      type string;
+      config false;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Prefixes";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Prefixes";
+    }
+    leaf max-rtr-adv-interval {
+      type uint32 {
+        range "4..1800";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.MaxRtrAdvInterval";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.MaxRtrAdvInterval";
+    }
+    leaf min-rtr-adv-interval {
+      type uint32 {
+        range "3..1350";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.MinRtrAdvInterval";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.MinRtrAdvInterval";
+    }
+    leaf adv-default-lifetime {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvDefaultLifetime";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvDefaultLifetime";
+    }
+    leaf adv-managed-flag {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvManagedFlag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvManagedFlag";
+    }
+    leaf adv-other-config-flag {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvOtherConfigFlag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvOtherConfigFlag";
+    }
+    leaf adv-mobile-agent-flag {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvMobileAgentFlag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvMobileAgentFlag";
+    }
+    leaf adv-preferred-router-flag {
+      type enumeration {
+        enum High {
+          description
+            "Enum Value - High";
+        }
+        enum Medium {
+          description
+            "Enum Value - Medium";
+        }
+        enum Low {
+          description
+            "Enum Value - Low";
+        }
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvPreferredRouterFlag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvPreferredRouterFlag";
+    }
+    leaf adv-nd-proxy-flag {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvNDProxyFlag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvNDProxyFlag";
+    }
+    leaf adv-link-mtu {
+      type uint32;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvLinkMTU";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvLinkMTU";
+    }
+    leaf adv-reachable-time {
+      type uint32 {
+        range "min..3600000";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvReachableTime";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvReachableTime";
+    }
+    leaf adv-retrans-timer {
+      type uint32;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvRetransTimer";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvRetransTimer";
+    }
+    leaf adv-cur-hop-limit {
+      type uint32 {
+        range "min..255";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvCurHopLimit";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.AdvCurHopLimit";
+    }
+    leaf option-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.OptionNumberOfEntries";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.OptionNumberOfEntries";
+    }
+  }
+
+  grouping interface-setting-option-g {
+    description
+      "Grouping object for Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Enable";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Alias";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Alias";
+    }
+    leaf tag {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Tag";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Tag";
+    }
+    leaf value {
+      type string {
+        length "0..65535";
+      }
+      description
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Value";
+      reference
+        "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.Value";
+    }
+  }
+
+  grouping device-routing-g {
+    description
+      "Grouping object for Device.Routing.";
+    leaf router-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Routing.RouterNumberOfEntries";
+      reference
+        "Device.Routing.RouterNumberOfEntries";
+    }
+  }
+
+  grouping routing-rip-g {
+    description
+      "Grouping object for Device.Routing.RIP.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.RIP.Enable";
+      reference
+        "Device.Routing.RIP.Enable";
+    }
+    leaf supported-modes {
+      type string;
+      config false;
+      description
+        "Device.Routing.RIP.SupportedModes";
+      reference
+        "Device.Routing.RIP.SupportedModes";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Routing.RIP.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.Routing.RIP.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping rip-interface-setting-g {
+    description
+      "Grouping object for Device.Routing.RIP.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.Enable";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.Status";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.Alias";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.Interface";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.Interface";
+    }
+    leaf accept-ra {
+      type boolean;
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.AcceptRA";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.AcceptRA";
+    }
+    leaf send-ra {
+      type boolean;
+      description
+        "Device.Routing.RIP.InterfaceSetting.{i}.SendRA";
+      reference
+        "Device.Routing.RIP.InterfaceSetting.{i}.SendRA";
+    }
+  }
+
+  grouping routing-route-information-g {
+    description
+      "Grouping object for Device.Routing.RouteInformation.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.RouteInformation.Enable";
+      reference
+        "Device.Routing.RouteInformation.Enable";
+    }
+    leaf interface-setting-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSettingNumberOfEntries";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSettingNumberOfEntries";
+    }
+  }
+
+  grouping route-information-interface-setting-g {
+    description
+      "Grouping object for Device.Routing.RouteInformation.InterfaceSetting.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Status";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Status";
+    }
+    leaf interface {
+      type string;
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Interface";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Interface";
+    }
+    leaf source-router {
+      type string {
+        length "min..45";
+      }
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.SourceRouter";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.SourceRouter";
+    }
+    leaf preferred-route-flag {
+      type string;
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.PreferredRouteFlag";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.PreferredRouteFlag";
+    }
+    leaf prefix {
+      type string {
+        length "min..49";
+      }
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Prefix";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.Prefix";
+    }
+    leaf route-lifetime {
+      type string;
+      config false;
+      description
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.RouteLifetime";
+      reference
+        "Device.Routing.RouteInformation.InterfaceSetting.{i}.RouteLifetime";
+    }
+  }
+
+  grouping routing-router-g {
+    description
+      "Grouping object for Device.Routing.Router.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.Router.{i}.Enable";
+      reference
+        "Device.Routing.Router.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.Status";
+      reference
+        "Device.Routing.Router.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Routing.Router.{i}.Alias";
+      reference
+        "Device.Routing.Router.{i}.Alias";
+    }
+    leaf ipv4-forwarding-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv4ForwardingNumberOfEntries";
+      reference
+        "Device.Routing.Router.{i}.IPv4ForwardingNumberOfEntries";
+    }
+    leaf ipv6-forwarding-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv6ForwardingNumberOfEntries";
+      reference
+        "Device.Routing.Router.{i}.IPv6ForwardingNumberOfEntries";
+    }
+  }
+
+  grouping router-ipv4-forwarding-g {
+    description
+      "Grouping object for Device.Routing.Router.{i}.IPv4Forwarding.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Enable";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Status";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Alias";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Alias";
+    }
+    leaf static-route {
+      type boolean;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.StaticRoute";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.StaticRoute";
+    }
+    leaf dest-ip-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.DestIPAddress";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.DestIPAddress";
+    }
+    leaf dest-subnet-mask {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.DestSubnetMask";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.DestSubnetMask";
+    }
+    leaf forwarding-policy {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.ForwardingPolicy";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.ForwardingPolicy";
+    }
+    leaf gateway-ip-address {
+      type string {
+        length "min..15";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.GatewayIPAddress";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.GatewayIPAddress";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Interface";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Interface";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Origin";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.Origin";
+    }
+    leaf forwarding-metric {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.ForwardingMetric";
+      reference
+        "Device.Routing.Router.{i}.IPv4Forwarding.{i}.ForwardingMetric";
+    }
+  }
+
+  grouping router-ipv6-forwarding-g {
+    description
+      "Grouping object for Device.Routing.Router.{i}.IPv6Forwarding.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Enable";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Status";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Alias";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Alias";
+    }
+    leaf dest-ip-prefix {
+      type string {
+        length "min..49";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.DestIPPrefix";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.DestIPPrefix";
+    }
+    leaf forwarding-policy {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ForwardingPolicy";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ForwardingPolicy";
+    }
+    leaf next-hop {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.NextHop";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.NextHop";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Interface";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Interface";
+    }
+    leaf origin {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Origin";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.Origin";
+    }
+    leaf forwarding-metric {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ForwardingMetric";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ForwardingMetric";
+    }
+    leaf expiration-time {
+      type string;
+      config false;
+      description
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ExpirationTime";
+      reference
+        "Device.Routing.Router.{i}.IPv6Forwarding.{i}.ExpirationTime";
+    }
+  }
+
+  grouping device-security-g {
+    description
+      "Grouping object for Device.Security.";
+    leaf certificate-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Security.CertificateNumberOfEntries";
+      reference
+        "Device.Security.CertificateNumberOfEntries";
+    }
+  }
+
+  grouping security-certificate-g {
+    description
+      "Grouping object for Device.Security.Certificate.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Security.Certificate.{i}.Enable";
+      reference
+        "Device.Security.Certificate.{i}.Enable";
+    }
+    leaf last-modif {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.LastModif";
+      reference
+        "Device.Security.Certificate.{i}.LastModif";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.SerialNumber";
+      reference
+        "Device.Security.Certificate.{i}.SerialNumber";
+    }
+    leaf issuer {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.Issuer";
+      reference
+        "Device.Security.Certificate.{i}.Issuer";
+    }
+    leaf not-before {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.NotBefore";
+      reference
+        "Device.Security.Certificate.{i}.NotBefore";
+    }
+    leaf not-after {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.NotAfter";
+      reference
+        "Device.Security.Certificate.{i}.NotAfter";
+    }
+    leaf subject {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.Subject";
+      reference
+        "Device.Security.Certificate.{i}.Subject";
+    }
+    leaf subject-alt {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.SubjectAlt";
+      reference
+        "Device.Security.Certificate.{i}.SubjectAlt";
+    }
+    leaf signature-algorithm {
+      type string;
+      config false;
+      description
+        "Device.Security.Certificate.{i}.SignatureAlgorithm";
+      reference
+        "Device.Security.Certificate.{i}.SignatureAlgorithm";
+    }
+  }
+
+  grouping device-self-test-diagnostics-g {
+    description
+      "Grouping object for Device.SelfTestDiagnostics.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error_Internal {
+          description
+            "Enum Value - Error_Internal";
+        }
+        enum Error_Other {
+          description
+            "Enum Value - Error_Other";
+        }
+      }
+      description
+        "Device.SelfTestDiagnostics.DiagnosticsState";
+      reference
+        "Device.SelfTestDiagnostics.DiagnosticsState";
+    }
+    leaf results {
+      type string;
+      config false;
+      description
+        "Device.SelfTestDiagnostics.Results";
+      reference
+        "Device.SelfTestDiagnostics.Results";
+    }
+  }
+
+  grouping device-smart-card-readers-g {
+    description
+      "Grouping object for Device.SmartCardReaders.";
+    leaf smart-card-reader-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReaderNumberOfEntries";
+      reference
+        "Device.SmartCardReaders.SmartCardReaderNumberOfEntries";
+    }
+  }
+
+  grouping smart-card-readers-smart-card-reader-g {
+    description
+      "Grouping object for Device.SmartCardReaders.SmartCardReader.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.Alias";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.Enable";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.Status";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.Status";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.Name";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.Name";
+    }
+    leaf reset-time {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.ResetTime";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.ResetTime";
+    }
+    leaf decryption-failed-counter {
+      type uint32;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.DecryptionFailedCounter";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.DecryptionFailedCounter";
+    }
+    leaf decryption-failed-no-key-counter {
+      type uint32;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.DecryptionFailedNoKeyCounter";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.DecryptionFailedNoKeyCounter";
+    }
+  }
+
+  grouping smart-card-reader-smart-card-g {
+    description
+      "Grouping object for Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.";
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Status";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Status";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Type";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Type";
+    }
+    leaf application {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Application";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.Application";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.SerialNumber";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.SerialNumber";
+    }
+    leaf atr {
+      type string;
+      config false;
+      description
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.ATR";
+      reference
+        "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.ATR";
+    }
+  }
+
+  grouping device-software-modules-g {
+    description
+      "Grouping object for Device.SoftwareModules.";
+    leaf exec-env-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnvNumberOfEntries";
+      reference
+        "Device.SoftwareModules.ExecEnvNumberOfEntries";
+    }
+    leaf deployment-unit-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnitNumberOfEntries";
+      reference
+        "Device.SoftwareModules.DeploymentUnitNumberOfEntries";
+    }
+    leaf execution-unit-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnitNumberOfEntries";
+      reference
+        "Device.SoftwareModules.ExecutionUnitNumberOfEntries";
+    }
+  }
+
+  grouping software-modules-deployment-unit-g {
+    description
+      "Grouping object for Device.SoftwareModules.DeploymentUnit.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf uuid {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.UUID";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.UUID";
+    }
+    leaf duid {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.DUID";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.DUID";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Alias";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Name";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Name";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Status";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Status";
+    }
+    leaf resolved {
+      type boolean;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Resolved";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Resolved";
+    }
+    leaf url {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.URL";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.URL";
+    }
+    leaf description {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Description";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Description";
+    }
+    leaf vendor {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Vendor";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Vendor";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.Version";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.Version";
+    }
+    leaf vendor-log-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.VendorLogList";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.VendorLogList";
+    }
+    leaf vendor-config-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.VendorConfigList";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.VendorConfigList";
+    }
+    leaf execution-unit-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.ExecutionUnitList";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.ExecutionUnitList";
+    }
+    leaf execution-env-ref {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.DeploymentUnit.{i}.ExecutionEnvRef";
+      reference
+        "Device.SoftwareModules.DeploymentUnit.{i}.ExecutionEnvRef";
+    }
+  }
+
+  grouping software-modules-exec-env-g {
+    description
+      "Grouping object for Device.SoftwareModules.ExecEnv.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Enable";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Status";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Alias";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Name";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Name";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Type";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Type";
+    }
+    leaf initial-run-level {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.InitialRunLevel";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.InitialRunLevel";
+    }
+    leaf current-run-level {
+      type int32 {
+        range "-1..65535";
+      }
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.CurrentRunLevel";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.CurrentRunLevel";
+    }
+    leaf initial-execution-unit-run-level {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.InitialExecutionUnitRunLevel";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.InitialExecutionUnitRunLevel";
+    }
+    leaf vendor {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Vendor";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Vendor";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.Version";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.Version";
+    }
+    leaf parent-exec-env {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.ParentExecEnv";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.ParentExecEnv";
+    }
+    leaf allocated-disk-space {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.AllocatedDiskSpace";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.AllocatedDiskSpace";
+    }
+    leaf available-disk-space {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.AvailableDiskSpace";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.AvailableDiskSpace";
+    }
+    leaf allocated-memory {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.AllocatedMemory";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.AllocatedMemory";
+    }
+    leaf available-memory {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.AvailableMemory";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.AvailableMemory";
+    }
+    leaf active-execution-units {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.ActiveExecutionUnits";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.ActiveExecutionUnits";
+    }
+    leaf processor-ref-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecEnv.{i}.ProcessorRefList";
+      reference
+        "Device.SoftwareModules.ExecEnv.{i}.ProcessorRefList";
+    }
+  }
+
+  grouping software-modules-execution-unit-g {
+    description
+      "Grouping object for Device.SoftwareModules.ExecutionUnit.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf euid {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.EUID";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.EUID";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Alias";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Name";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Name";
+    }
+    leaf exec-env-label {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecEnvLabel";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecEnvLabel";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Status";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Status";
+    }
+    leaf execution-fault-code {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultCode";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultCode";
+    }
+    leaf execution-fault-message {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultMessage";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionFaultMessage";
+    }
+    leaf auto-start {
+      type boolean;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.AutoStart";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.AutoStart";
+    }
+    leaf run-level {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.RunLevel";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.RunLevel";
+    }
+    leaf vendor {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Vendor";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Vendor";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Version";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Version";
+    }
+    leaf description {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.Description";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.Description";
+    }
+    leaf disk-space-in-use {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.DiskSpaceInUse";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.DiskSpaceInUse";
+    }
+    leaf memory-in-use {
+      type int32;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.MemoryInUse";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.MemoryInUse";
+    }
+    leaf references {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.References";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.References";
+    }
+    leaf associated-process-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.AssociatedProcessList";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.AssociatedProcessList";
+    }
+    leaf vendor-log-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.VendorLogList";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.VendorLogList";
+    }
+    leaf vendor-config-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.VendorConfigList";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.VendorConfigList";
+    }
+    leaf supported-data-model-list {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.SupportedDataModelList";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.SupportedDataModelList";
+    }
+    leaf execution-env-ref {
+      type string;
+      config false;
+      description
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionEnvRef";
+      reference
+        "Device.SoftwareModules.ExecutionUnit.{i}.ExecutionEnvRef";
+    }
+  }
+
+  grouping device-time-g {
+    description
+      "Grouping object for Device.Time.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.Time.Enable";
+      reference
+        "Device.Time.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.Time.Status";
+      reference
+        "Device.Time.Status";
+    }
+    leaf ntp-server1 {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Time.NTPServer1";
+      reference
+        "Device.Time.NTPServer1";
+    }
+    leaf ntp-server2 {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Time.NTPServer2";
+      reference
+        "Device.Time.NTPServer2";
+    }
+    leaf ntp-server3 {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Time.NTPServer3";
+      reference
+        "Device.Time.NTPServer3";
+    }
+    leaf ntp-server4 {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Time.NTPServer4";
+      reference
+        "Device.Time.NTPServer4";
+    }
+    leaf ntp-server5 {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Time.NTPServer5";
+      reference
+        "Device.Time.NTPServer5";
+    }
+    leaf current-local-time {
+      type string;
+      config false;
+      description
+        "Device.Time.CurrentLocalTime";
+      reference
+        "Device.Time.CurrentLocalTime";
+    }
+    leaf local-time-zone {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.Time.LocalTimeZone";
+      reference
+        "Device.Time.LocalTimeZone";
+    }
+  }
+
+  grouping device-upa-g {
+    description
+      "Grouping object for Device.UPA.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.InterfaceNumberOfEntries";
+      reference
+        "Device.UPA.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping diagnostics-interface-measurement-g {
+    description
+      "Grouping object for Device.UPA.Diagnostics.InterfaceMeasurement.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Error_InvalidPort {
+          description
+            "Enum Value - Error_InvalidPort";
+        }
+      }
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.DiagnosticsState";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.DiagnosticsState";
+    }
+    leaf type {
+      type enumeration {
+        enum SNR {
+          description
+            "Enum Value - SNR";
+        }
+        enum CFR {
+          description
+            "Enum Value - CFR";
+        }
+      }
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Type";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Type";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Interface";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Interface";
+    }
+    leaf port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Port";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Port";
+    }
+    leaf measurements {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Measurements";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.Measurements";
+    }
+    leaf rx-gain {
+      type int32;
+      config false;
+      description
+        "Device.UPA.Diagnostics.InterfaceMeasurement.RxGain";
+      reference
+        "Device.UPA.Diagnostics.InterfaceMeasurement.RxGain";
+    }
+  }
+
+  grouping upa-interface-g {
+    description
+      "Grouping object for Device.UPA.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.UPA.Interface.{i}.Enable";
+      reference
+        "Device.UPA.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Status";
+      reference
+        "Device.UPA.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.UPA.Interface.{i}.Alias";
+      reference
+        "Device.UPA.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Name";
+      reference
+        "Device.UPA.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.LastChange";
+      reference
+        "Device.UPA.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.UPA.Interface.{i}.LowerLayers";
+      reference
+        "Device.UPA.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Upstream";
+      reference
+        "Device.UPA.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.MACAddress";
+      reference
+        "Device.UPA.Interface.{i}.MACAddress";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.FirmwareVersion";
+      reference
+        "Device.UPA.Interface.{i}.FirmwareVersion";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.MaxBitRate";
+      reference
+        "Device.UPA.Interface.{i}.MaxBitRate";
+    }
+    leaf node-type {
+      type enumeration {
+        enum AP {
+          description
+            "Enum Value - AP";
+        }
+        enum EP {
+          description
+            "Enum Value - EP";
+        }
+      }
+      description
+        "Device.UPA.Interface.{i}.NodeType";
+      reference
+        "Device.UPA.Interface.{i}.NodeType";
+    }
+    leaf logical-network {
+      type string {
+        length "min..20";
+      }
+      description
+        "Device.UPA.Interface.{i}.LogicalNetwork";
+      reference
+        "Device.UPA.Interface.{i}.LogicalNetwork";
+    }
+    leaf encryption-method {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum DES {
+          description
+            "Enum Value - DES";
+        }
+        enum 3DES {
+          description
+            "Enum Value - 3DES";
+        }
+        enum AES128 {
+          description
+            "Enum Value - AES128";
+        }
+        enum AES256 {
+          description
+            "Enum Value - AES256";
+        }
+      }
+      description
+        "Device.UPA.Interface.{i}.EncryptionMethod";
+      reference
+        "Device.UPA.Interface.{i}.EncryptionMethod";
+    }
+    leaf power-backoff-enabled {
+      type boolean;
+      description
+        "Device.UPA.Interface.{i}.PowerBackoffEnabled";
+      reference
+        "Device.UPA.Interface.{i}.PowerBackoffEnabled";
+    }
+    leaf power-backoff-mechanism-active {
+      type boolean;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.PowerBackoffMechanismActive";
+      reference
+        "Device.UPA.Interface.{i}.PowerBackoffMechanismActive";
+    }
+    leaf est-application-throughput {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.EstApplicationThroughput";
+      reference
+        "Device.UPA.Interface.{i}.EstApplicationThroughput";
+    }
+    leaf active-notch-enable {
+      type boolean;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotchEnable";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotchEnable";
+    }
+    leaf active-notch-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotchNumberOfEntries";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotchNumberOfEntries";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+    leaf bridge-for-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.BridgeForNumberOfEntries";
+      reference
+        "Device.UPA.Interface.{i}.BridgeForNumberOfEntries";
+    }
+  }
+
+  grouping interface-active-notch-g {
+    description
+      "Grouping object for Device.UPA.Interface.{i}.ActiveNotch.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Enable";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Alias";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Alias";
+    }
+    leaf start-freq {
+      type uint32;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.StartFreq";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.StartFreq";
+    }
+    leaf stop-freq {
+      type uint32;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.StopFreq";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.StopFreq";
+    }
+    leaf depth {
+      type uint32;
+      description
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Depth";
+      reference
+        "Device.UPA.Interface.{i}.ActiveNotch.{i}.Depth";
+    }
+  }
+
+  grouping upa-interface-associated-device-g {
+    description
+      "Grouping object for Device.UPA.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.Port";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.Port";
+    }
+    leaf logical-network {
+      type string;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.LogicalNetwork";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.LogicalNetwork";
+    }
+    leaf phy-tx-throughput {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.PhyTxThroughput";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.PhyTxThroughput";
+    }
+    leaf phy-rx-throughput {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.PhyRxThroughput";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.PhyRxThroughput";
+    }
+    leaf real-phy-rx-throughput {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.RealPhyRxThroughput";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.RealPhyRxThroughput";
+    }
+    leaf estimated-plr {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.EstimatedPLR";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.EstimatedPLR";
+    }
+    leaf mean-estimated-att {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.MeanEstimatedAtt";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.MeanEstimatedAtt";
+    }
+    leaf smart-route-intermediate-plcmac {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.SmartRouteIntermediatePLCMAC";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.SmartRouteIntermediatePLCMAC";
+    }
+    leaf direct-route {
+      type boolean;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.DirectRoute";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.DirectRoute";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.UPA.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping interface-bridge-for-g {
+    description
+      "Grouping object for Device.UPA.Interface.{i}.BridgeFor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.Alias";
+      reference
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.Alias";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.MACAddress";
+      reference
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.MACAddress";
+    }
+    leaf port {
+      type uint32 {
+        range "0..65535";
+      }
+      config false;
+      description
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.Port";
+      reference
+        "Device.UPA.Interface.{i}.BridgeFor.{i}.Port";
+    }
+  }
+
+  grouping upa-interface-stats-g {
+    description
+      "Grouping object for Device.UPA.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.UPA.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.UPA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.UPA.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping u-pn-p-description-g {
+    description
+      "Grouping object for Device.UPnP.Description.";
+    leaf device-description-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceDescriptionNumberOfEntries";
+      reference
+        "Device.UPnP.Description.DeviceDescriptionNumberOfEntries";
+    }
+    leaf device-instance-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstanceNumberOfEntries";
+      reference
+        "Device.UPnP.Description.DeviceInstanceNumberOfEntries";
+    }
+    leaf service-instance-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstanceNumberOfEntries";
+      reference
+        "Device.UPnP.Description.ServiceInstanceNumberOfEntries";
+    }
+  }
+
+  grouping description-device-description-g {
+    description
+      "Grouping object for Device.UPnP.Description.DeviceDescription.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf url-base {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceDescription.{i}.URLBase";
+      reference
+        "Device.UPnP.Description.DeviceDescription.{i}.URLBase";
+    }
+    leaf spec-version {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceDescription.{i}.SpecVersion";
+      reference
+        "Device.UPnP.Description.DeviceDescription.{i}.SpecVersion";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceDescription.{i}.Host";
+      reference
+        "Device.UPnP.Description.DeviceDescription.{i}.Host";
+    }
+  }
+
+  grouping description-device-instance-g {
+    description
+      "Grouping object for Device.UPnP.Description.DeviceInstance.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf udn {
+      type string {
+        length "min..36";
+      }
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.UDN";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.UDN";
+    }
+    leaf parent-device {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ParentDevice";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ParentDevice";
+    }
+    leaf discovery-device {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.DiscoveryDevice";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.DiscoveryDevice";
+    }
+    leaf device-type {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.DeviceType";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.DeviceType";
+    }
+    leaf friendly-name {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.FriendlyName";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.FriendlyName";
+    }
+    leaf device-category {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.DeviceCategory";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.DeviceCategory";
+    }
+    leaf manufacturer {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.Manufacturer";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.Manufacturer";
+    }
+    leaf manufacturer-oui {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ManufacturerOUI";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ManufacturerOUI";
+    }
+    leaf manufacturer-url {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ManufacturerURL";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ManufacturerURL";
+    }
+    leaf model-description {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelDescription";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelDescription";
+    }
+    leaf model-name {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelName";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelName";
+    }
+    leaf model-number {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelNumber";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelNumber";
+    }
+    leaf model-url {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelURL";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.ModelURL";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.SerialNumber";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.SerialNumber";
+    }
+    leaf upc {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.UPC";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.UPC";
+    }
+    leaf presentation-url {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.DeviceInstance.{i}.PresentationURL";
+      reference
+        "Device.UPnP.Description.DeviceInstance.{i}.PresentationURL";
+    }
+  }
+
+  grouping description-service-instance-g {
+    description
+      "Grouping object for Device.UPnP.Description.ServiceInstance.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf parent-device {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.ParentDevice";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.ParentDevice";
+    }
+    leaf service-id {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceId";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceId";
+    }
+    leaf service-discovery {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceDiscovery";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceDiscovery";
+    }
+    leaf service-type {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceType";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.ServiceType";
+    }
+    leaf scpdurl {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.SCPDURL";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.SCPDURL";
+    }
+    leaf control-url {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.ControlURL";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.ControlURL";
+    }
+    leaf event-sub-url {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Description.ServiceInstance.{i}.EventSubURL";
+      reference
+        "Device.UPnP.Description.ServiceInstance.{i}.EventSubURL";
+    }
+  }
+
+  grouping u-pn-p-device-g {
+    description
+      "Grouping object for Device.UPnP.Device.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.UPnP.Device.Enable";
+      reference
+        "Device.UPnP.Device.Enable";
+    }
+    leaf u-pn-p-media-server {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPMediaServer";
+      reference
+        "Device.UPnP.Device.UPnPMediaServer";
+    }
+    leaf u-pn-p-media-renderer {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPMediaRenderer";
+      reference
+        "Device.UPnP.Device.UPnPMediaRenderer";
+    }
+    leaf u-pn-pwlan-access-point {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPWLANAccessPoint";
+      reference
+        "Device.UPnP.Device.UPnPWLANAccessPoint";
+    }
+    leaf u-pn-p-qo-s-device {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPQoSDevice";
+      reference
+        "Device.UPnP.Device.UPnPQoSDevice";
+    }
+    leaf u-pn-p-qo-s-policy-holder {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPQoSPolicyHolder";
+      reference
+        "Device.UPnP.Device.UPnPQoSPolicyHolder";
+    }
+    leaf u-pn-pigd {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPIGD";
+      reference
+        "Device.UPnP.Device.UPnPIGD";
+    }
+    leaf u-pn-pdm-basic-mgmt {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPDMBasicMgmt";
+      reference
+        "Device.UPnP.Device.UPnPDMBasicMgmt";
+    }
+    leaf u-pn-pdm-configuration-mgmt {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPDMConfigurationMgmt";
+      reference
+        "Device.UPnP.Device.UPnPDMConfigurationMgmt";
+    }
+    leaf u-pn-pdm-software-mgmt {
+      type boolean;
+      description
+        "Device.UPnP.Device.UPnPDMSoftwareMgmt";
+      reference
+        "Device.UPnP.Device.UPnPDMSoftwareMgmt";
+    }
+  }
+
+  grouping device-capabilities-g {
+    description
+      "Grouping object for Device.UPnP.Device.Capabilities.";
+    leaf u-pn-p-architecture {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPArchitecture";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPArchitecture";
+    }
+    leaf u-pn-p-architecture-minor-ver {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPArchitectureMinorVer";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPArchitectureMinorVer";
+    }
+    leaf u-pn-p-media-server {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPMediaServer";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPMediaServer";
+    }
+    leaf u-pn-p-media-renderer {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPMediaRenderer";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPMediaRenderer";
+    }
+    leaf u-pn-pwlan-access-point {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPWLANAccessPoint";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPWLANAccessPoint";
+    }
+    leaf u-pn-p-basic-device {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPBasicDevice";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPBasicDevice";
+    }
+    leaf u-pn-p-qo-s-device {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPQoSDevice";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPQoSDevice";
+    }
+    leaf u-pn-p-qo-s-policy-holder {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPQoSPolicyHolder";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPQoSPolicyHolder";
+    }
+    leaf u-pn-pigd {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPIGD";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPIGD";
+    }
+    leaf u-pn-pdm-basic-mgmt {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPDMBasicMgmt";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPDMBasicMgmt";
+    }
+    leaf u-pn-pdm-configuration-mgmt {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPDMConfigurationMgmt";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPDMConfigurationMgmt";
+    }
+    leaf u-pn-pdm-software-mgmt {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Device.Capabilities.UPnPDMSoftwareMgmt";
+      reference
+        "Device.UPnP.Device.Capabilities.UPnPDMSoftwareMgmt";
+    }
+  }
+
+  grouping u-pn-p-discovery-g {
+    description
+      "Grouping object for Device.UPnP.Discovery.";
+    leaf root-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDeviceNumberOfEntries";
+      reference
+        "Device.UPnP.Discovery.RootDeviceNumberOfEntries";
+    }
+    leaf device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.DeviceNumberOfEntries";
+      reference
+        "Device.UPnP.Discovery.DeviceNumberOfEntries";
+    }
+    leaf service-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.ServiceNumberOfEntries";
+      reference
+        "Device.UPnP.Discovery.ServiceNumberOfEntries";
+    }
+  }
+
+  grouping u-pn-p-discovery-device-g {
+    description
+      "Grouping object for Device.UPnP.Discovery.Device.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.Status";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.Status";
+    }
+    leaf uuid {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.UUID";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.UUID";
+    }
+    leaf usn {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.USN";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.USN";
+    }
+    leaf lease-time {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.LeaseTime";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.LeaseTime";
+    }
+    leaf location {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.Location";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.Location";
+    }
+    leaf server {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.Server";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.Server";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.Host";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.Host";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Device.{i}.LastUpdate";
+      reference
+        "Device.UPnP.Discovery.Device.{i}.LastUpdate";
+    }
+  }
+
+  grouping discovery-root-device-g {
+    description
+      "Grouping object for Device.UPnP.Discovery.RootDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.Status";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.Status";
+    }
+    leaf uuid {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.UUID";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.UUID";
+    }
+    leaf usn {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.USN";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.USN";
+    }
+    leaf lease-time {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.LeaseTime";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.LeaseTime";
+    }
+    leaf location {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.Location";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.Location";
+    }
+    leaf server {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.Server";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.Server";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.Host";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.Host";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.RootDevice.{i}.LastUpdate";
+      reference
+        "Device.UPnP.Discovery.RootDevice.{i}.LastUpdate";
+    }
+  }
+
+  grouping discovery-service-g {
+    description
+      "Grouping object for Device.UPnP.Discovery.Service.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.Status";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.Status";
+    }
+    leaf usn {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.USN";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.USN";
+    }
+    leaf lease-time {
+      type uint32;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.LeaseTime";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.LeaseTime";
+    }
+    leaf location {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.Location";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.Location";
+    }
+    leaf server {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.Server";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.Server";
+    }
+    leaf host {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.Host";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.Host";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.LastUpdate";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.LastUpdate";
+    }
+    leaf parent-device {
+      type string;
+      config false;
+      description
+        "Device.UPnP.Discovery.Service.{i}.ParentDevice";
+      reference
+        "Device.UPnP.Discovery.Service.{i}.ParentDevice";
+    }
+  }
+
+  grouping device-usb-g {
+    description
+      "Grouping object for Device.USB.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.InterfaceNumberOfEntries";
+      reference
+        "Device.USB.InterfaceNumberOfEntries";
+    }
+    leaf port-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.PortNumberOfEntries";
+      reference
+        "Device.USB.PortNumberOfEntries";
+    }
+  }
+
+  grouping usb-interface-g {
+    description
+      "Grouping object for Device.USB.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.USB.Interface.{i}.Enable";
+      reference
+        "Device.USB.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Status";
+      reference
+        "Device.USB.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.USB.Interface.{i}.Alias";
+      reference
+        "Device.USB.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Name";
+      reference
+        "Device.USB.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.LastChange";
+      reference
+        "Device.USB.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.USB.Interface.{i}.LowerLayers";
+      reference
+        "Device.USB.Interface.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Upstream";
+      reference
+        "Device.USB.Interface.{i}.Upstream";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.USB.Interface.{i}.MACAddress";
+      reference
+        "Device.USB.Interface.{i}.MACAddress";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.MaxBitRate";
+      reference
+        "Device.USB.Interface.{i}.MaxBitRate";
+    }
+    leaf port {
+      type string;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Port";
+      reference
+        "Device.USB.Interface.{i}.Port";
+    }
+  }
+
+  grouping usb-interface-stats-g {
+    description
+      "Grouping object for Device.USB.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.USB.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.USB.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.USB.Interface.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping usb-port-g {
+    description
+      "Grouping object for Device.USB.Port.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.USB.Port.{i}.Alias";
+      reference
+        "Device.USB.Port.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Name";
+      reference
+        "Device.USB.Port.{i}.Name";
+    }
+    leaf standard {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Standard";
+      reference
+        "Device.USB.Port.{i}.Standard";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Type";
+      reference
+        "Device.USB.Port.{i}.Type";
+    }
+    leaf receptacle {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Receptacle";
+      reference
+        "Device.USB.Port.{i}.Receptacle";
+    }
+    leaf rate {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Rate";
+      reference
+        "Device.USB.Port.{i}.Rate";
+    }
+    leaf power {
+      type string;
+      config false;
+      description
+        "Device.USB.Port.{i}.Power";
+      reference
+        "Device.USB.Port.{i}.Power";
+    }
+  }
+
+  grouping usb-usb-hosts-g {
+    description
+      "Grouping object for Device.USB.USBHosts.";
+    leaf host-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.HostNumberOfEntries";
+      reference
+        "Device.USB.USBHosts.HostNumberOfEntries";
+    }
+  }
+
+  grouping usb-hosts-host-g {
+    description
+      "Grouping object for Device.USB.USBHosts.Host.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.USB.USBHosts.Host.{i}.Alias";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.USB.USBHosts.Host.{i}.Enable";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Enable";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Name";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Name";
+    }
+    leaf type {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Type";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Type";
+    }
+    leaf power-management-enable {
+      type boolean;
+      description
+        "Device.USB.USBHosts.Host.{i}.PowerManagementEnable";
+      reference
+        "Device.USB.USBHosts.Host.{i}.PowerManagementEnable";
+    }
+    leaf usb-version {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.USBVersion";
+      reference
+        "Device.USB.USBHosts.Host.{i}.USBVersion";
+    }
+    leaf device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.DeviceNumberOfEntries";
+      reference
+        "Device.USB.USBHosts.Host.{i}.DeviceNumberOfEntries";
+    }
+  }
+
+  grouping host-device-g {
+    description
+      "Grouping object for Device.USB.USBHosts.Host.{i}.Device.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf device-number {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceNumber";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceNumber";
+    }
+    leaf usb-version {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.USBVersion";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.USBVersion";
+    }
+    leaf device-class {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceClass";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceClass";
+    }
+    leaf device-sub-class {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceSubClass";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceSubClass";
+    }
+    leaf device-version {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceVersion";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceVersion";
+    }
+    leaf device-protocol {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceProtocol";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.DeviceProtocol";
+    }
+    leaf product-id {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ProductID";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ProductID";
+    }
+    leaf vendor-id {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.VendorID";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.VendorID";
+    }
+    leaf manufacturer {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Manufacturer";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Manufacturer";
+    }
+    leaf product-class {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ProductClass";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ProductClass";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.SerialNumber";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.SerialNumber";
+    }
+    leaf port {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Port";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Port";
+    }
+    leaf usb-port {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.USBPort";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.USBPort";
+    }
+    leaf rate {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Rate";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Rate";
+    }
+    leaf parent {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Parent";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Parent";
+    }
+    leaf max-children {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.MaxChildren";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.MaxChildren";
+    }
+    leaf is-suspended {
+      type boolean;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.IsSuspended";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.IsSuspended";
+    }
+    leaf is-self-powered {
+      type boolean;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.IsSelfPowered";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.IsSelfPowered";
+    }
+    leaf configuration-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ConfigurationNumberOfEntries";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.ConfigurationNumberOfEntries";
+    }
+  }
+
+  grouping device-configuration-g {
+    description
+      "Grouping object for Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf configuration-number {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.ConfigurationNumber";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.ConfigurationNumber";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.InterfaceNumberOfEntries";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.InterfaceNumberOfEntries";
+    }
+  }
+
+  grouping configuration-interface-g {
+    description
+      "Grouping object for Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf interface-number {
+      type uint32;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceNumber";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceNumber";
+    }
+    leaf interface-class {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceClass";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceClass";
+    }
+    leaf interface-sub-class {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceSubClass";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceSubClass";
+    }
+    leaf interface-protocol {
+      type string;
+      config false;
+      description
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceProtocol";
+      reference
+        "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.InterfaceProtocol";
+    }
+  }
+
+  grouping device-user-interface-g {
+    description
+      "Grouping object for Device.UserInterface.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.UserInterface.Enable";
+      reference
+        "Device.UserInterface.Enable";
+    }
+    leaf password-required {
+      type boolean;
+      description
+        "Device.UserInterface.PasswordRequired";
+      reference
+        "Device.UserInterface.PasswordRequired";
+    }
+    leaf password-user-selectable {
+      type boolean;
+      description
+        "Device.UserInterface.PasswordUserSelectable";
+      reference
+        "Device.UserInterface.PasswordUserSelectable";
+    }
+    leaf upgrade-available {
+      type boolean;
+      description
+        "Device.UserInterface.UpgradeAvailable";
+      reference
+        "Device.UserInterface.UpgradeAvailable";
+    }
+    leaf warranty-date {
+      type string;
+      description
+        "Device.UserInterface.WarrantyDate";
+      reference
+        "Device.UserInterface.WarrantyDate";
+    }
+    leaf isp-name {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.UserInterface.ISPName";
+      reference
+        "Device.UserInterface.ISPName";
+    }
+    leaf isp-help-desk {
+      type string {
+        length "min..32";
+      }
+      description
+        "Device.UserInterface.ISPHelpDesk";
+      reference
+        "Device.UserInterface.ISPHelpDesk";
+    }
+    leaf isp-home-page {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.ISPHomePage";
+      reference
+        "Device.UserInterface.ISPHomePage";
+    }
+    leaf isp-help-page {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.ISPHelpPage";
+      reference
+        "Device.UserInterface.ISPHelpPage";
+    }
+    leaf isp-logo {
+      type string {
+        length "0..4095";
+      }
+      description
+        "Device.UserInterface.ISPLogo";
+      reference
+        "Device.UserInterface.ISPLogo";
+    }
+    leaf isp-logo-size {
+      type uint32 {
+        range "0..4095";
+      }
+      description
+        "Device.UserInterface.ISPLogoSize";
+      reference
+        "Device.UserInterface.ISPLogoSize";
+    }
+    leaf isp-mail-server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.ISPMailServer";
+      reference
+        "Device.UserInterface.ISPMailServer";
+    }
+    leaf isp-news-server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.ISPNewsServer";
+      reference
+        "Device.UserInterface.ISPNewsServer";
+    }
+    leaf text-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.TextColor";
+      reference
+        "Device.UserInterface.TextColor";
+    }
+    leaf background-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.BackgroundColor";
+      reference
+        "Device.UserInterface.BackgroundColor";
+    }
+    leaf button-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.ButtonColor";
+      reference
+        "Device.UserInterface.ButtonColor";
+    }
+    leaf button-text-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.ButtonTextColor";
+      reference
+        "Device.UserInterface.ButtonTextColor";
+    }
+    leaf auto-update-server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.AutoUpdateServer";
+      reference
+        "Device.UserInterface.AutoUpdateServer";
+    }
+    leaf user-update-server {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.UserInterface.UserUpdateServer";
+      reference
+        "Device.UserInterface.UserUpdateServer";
+    }
+    leaf available-languages {
+      type string;
+      config false;
+      description
+        "Device.UserInterface.AvailableLanguages";
+      reference
+        "Device.UserInterface.AvailableLanguages";
+    }
+    leaf current-language {
+      type string {
+        length "min..16";
+      }
+      description
+        "Device.UserInterface.CurrentLanguage";
+      reference
+        "Device.UserInterface.CurrentLanguage";
+    }
+  }
+
+  grouping user-interface-local-display-g {
+    description
+      "Grouping object for Device.UserInterface.LocalDisplay.";
+    leaf movable {
+      type boolean;
+      description
+        "Device.UserInterface.LocalDisplay.Movable";
+      reference
+        "Device.UserInterface.LocalDisplay.Movable";
+    }
+    leaf resizable {
+      type boolean;
+      description
+        "Device.UserInterface.LocalDisplay.Resizable";
+      reference
+        "Device.UserInterface.LocalDisplay.Resizable";
+    }
+    leaf pos-x {
+      type int32;
+      description
+        "Device.UserInterface.LocalDisplay.PosX";
+      reference
+        "Device.UserInterface.LocalDisplay.PosX";
+    }
+    leaf pos-y {
+      type int32;
+      description
+        "Device.UserInterface.LocalDisplay.PosY";
+      reference
+        "Device.UserInterface.LocalDisplay.PosY";
+    }
+    leaf width {
+      type uint32;
+      description
+        "Device.UserInterface.LocalDisplay.Width";
+      reference
+        "Device.UserInterface.LocalDisplay.Width";
+    }
+    leaf height {
+      type uint32;
+      description
+        "Device.UserInterface.LocalDisplay.Height";
+      reference
+        "Device.UserInterface.LocalDisplay.Height";
+    }
+    leaf display-width {
+      type uint32;
+      config false;
+      description
+        "Device.UserInterface.LocalDisplay.DisplayWidth";
+      reference
+        "Device.UserInterface.LocalDisplay.DisplayWidth";
+    }
+    leaf display-height {
+      type uint32;
+      config false;
+      description
+        "Device.UserInterface.LocalDisplay.DisplayHeight";
+      reference
+        "Device.UserInterface.LocalDisplay.DisplayHeight";
+    }
+  }
+
+  grouping user-interface-messages-g {
+    description
+      "Grouping object for Device.UserInterface.Messages.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.UserInterface.Messages.Enable";
+      reference
+        "Device.UserInterface.Messages.Enable";
+    }
+    leaf title {
+      type string {
+        length "min..128";
+      }
+      description
+        "Device.UserInterface.Messages.Title";
+      reference
+        "Device.UserInterface.Messages.Title";
+    }
+    leaf sub-title {
+      type string {
+        length "min..128";
+      }
+      description
+        "Device.UserInterface.Messages.SubTitle";
+      reference
+        "Device.UserInterface.Messages.SubTitle";
+    }
+    leaf text {
+      type string;
+      description
+        "Device.UserInterface.Messages.Text";
+      reference
+        "Device.UserInterface.Messages.Text";
+    }
+    leaf icon-type {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Greeting {
+          description
+            "Enum Value - Greeting";
+        }
+        enum Information {
+          description
+            "Enum Value - Information";
+        }
+        enum Warning {
+          description
+            "Enum Value - Warning";
+        }
+        enum Important {
+          description
+            "Enum Value - Important";
+        }
+        enum Urgent {
+          description
+            "Enum Value - Urgent";
+        }
+        enum Advertisement {
+          description
+            "Enum Value - Advertisement";
+        }
+      }
+      description
+        "Device.UserInterface.Messages.IconType";
+      reference
+        "Device.UserInterface.Messages.IconType";
+    }
+    leaf message-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.Messages.MessageColor";
+      reference
+        "Device.UserInterface.Messages.MessageColor";
+    }
+    leaf background-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.Messages.BackgroundColor";
+      reference
+        "Device.UserInterface.Messages.BackgroundColor";
+    }
+    leaf title-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.Messages.TitleColor";
+      reference
+        "Device.UserInterface.Messages.TitleColor";
+    }
+    leaf sub-title-color {
+      type string {
+        length "3";
+      }
+      description
+        "Device.UserInterface.Messages.SubTitleColor";
+      reference
+        "Device.UserInterface.Messages.SubTitleColor";
+    }
+    leaf requested-number-of-repetitions {
+      type uint32;
+      description
+        "Device.UserInterface.Messages.RequestedNumberOfRepetitions";
+      reference
+        "Device.UserInterface.Messages.RequestedNumberOfRepetitions";
+    }
+    leaf executed-number-of-repetitions {
+      type uint32;
+      config false;
+      description
+        "Device.UserInterface.Messages.ExecutedNumberOfRepetitions";
+      reference
+        "Device.UserInterface.Messages.ExecutedNumberOfRepetitions";
+    }
+  }
+
+  grouping user-interface-remote-access-g {
+    description
+      "Grouping object for Device.UserInterface.RemoteAccess.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.UserInterface.RemoteAccess.Enable";
+      reference
+        "Device.UserInterface.RemoteAccess.Enable";
+    }
+    leaf port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.UserInterface.RemoteAccess.Port";
+      reference
+        "Device.UserInterface.RemoteAccess.Port";
+    }
+    leaf supported-protocols {
+      type string;
+      config false;
+      description
+        "Device.UserInterface.RemoteAccess.SupportedProtocols";
+      reference
+        "Device.UserInterface.RemoteAccess.SupportedProtocols";
+    }
+    leaf protocol {
+      type string;
+      description
+        "Device.UserInterface.RemoteAccess.Protocol";
+      reference
+        "Device.UserInterface.RemoteAccess.Protocol";
+    }
+  }
+
+  grouping device-users-g {
+    description
+      "Grouping object for Device.Users.";
+    leaf user-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.Users.UserNumberOfEntries";
+      reference
+        "Device.Users.UserNumberOfEntries";
+    }
+  }
+
+  grouping users-user-g {
+    description
+      "Grouping object for Device.Users.User.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Users.User.{i}.Alias";
+      reference
+        "Device.Users.User.{i}.Alias";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.Users.User.{i}.Enable";
+      reference
+        "Device.Users.User.{i}.Enable";
+    }
+    leaf remote-access-capable {
+      type boolean;
+      description
+        "Device.Users.User.{i}.RemoteAccessCapable";
+      reference
+        "Device.Users.User.{i}.RemoteAccessCapable";
+    }
+    leaf username {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.Users.User.{i}.Username";
+      reference
+        "Device.Users.User.{i}.Username";
+    }
+    leaf language {
+      type string {
+        length "min..16";
+      }
+      description
+        "Device.Users.User.{i}.Language";
+      reference
+        "Device.Users.User.{i}.Language";
+    }
+  }
+
+  grouping device-vxlan-g {
+    description
+      "Grouping object for Device.VXLAN.";
+    leaf tunnel-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.TunnelNumberOfEntries";
+      reference
+        "Device.VXLAN.TunnelNumberOfEntries";
+    }
+    leaf filter-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.FilterNumberOfEntries";
+      reference
+        "Device.VXLAN.FilterNumberOfEntries";
+    }
+  }
+
+  grouping vxlan-filter-g {
+    description
+      "Grouping object for Device.VXLAN.Filter.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.VXLAN.Filter.{i}.Enable";
+      reference
+        "Device.VXLAN.Filter.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.VXLAN.Filter.{i}.Status";
+      reference
+        "Device.VXLAN.Filter.{i}.Status";
+    }
+    leaf order {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.VXLAN.Filter.{i}.Order";
+      reference
+        "Device.VXLAN.Filter.{i}.Order";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.VXLAN.Filter.{i}.Alias";
+      reference
+        "Device.VXLAN.Filter.{i}.Alias";
+    }
+    leaf interface {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.VXLAN.Filter.{i}.Interface";
+      reference
+        "Device.VXLAN.Filter.{i}.Interface";
+    }
+    leaf all-interfaces {
+      type boolean;
+      description
+        "Device.VXLAN.Filter.{i}.AllInterfaces";
+      reference
+        "Device.VXLAN.Filter.{i}.AllInterfaces";
+    }
+    leaf vlanid-check {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.VXLAN.Filter.{i}.VLANIDCheck";
+      reference
+        "Device.VXLAN.Filter.{i}.VLANIDCheck";
+    }
+    leaf vlanid-exclude {
+      type boolean;
+      description
+        "Device.VXLAN.Filter.{i}.VLANIDExclude";
+      reference
+        "Device.VXLAN.Filter.{i}.VLANIDExclude";
+    }
+    leaf dscp-mark-policy {
+      type int32 {
+        range "-2..63";
+      }
+      description
+        "Device.VXLAN.Filter.{i}.DSCPMarkPolicy";
+      reference
+        "Device.VXLAN.Filter.{i}.DSCPMarkPolicy";
+    }
+  }
+
+  grouping vxlan-tunnel-g {
+    description
+      "Grouping object for Device.VXLAN.Tunnel.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.VXLAN.Tunnel.{i}.Enable";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Status";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.Alias";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Alias";
+    }
+    leaf remote-endpoints {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.RemoteEndpoints";
+      reference
+        "Device.VXLAN.Tunnel.{i}.RemoteEndpoints";
+    }
+    leaf keep-alive-policy {
+      type enumeration {
+        enum ICMP {
+          description
+            "Enum Value - ICMP";
+        }
+        enum None {
+          description
+            "Enum Value - None";
+        }
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.KeepAlivePolicy";
+      reference
+        "Device.VXLAN.Tunnel.{i}.KeepAlivePolicy";
+    }
+    leaf keep-alive-timeout {
+      type uint32;
+      description
+        "Device.VXLAN.Tunnel.{i}.KeepAliveTimeout";
+      reference
+        "Device.VXLAN.Tunnel.{i}.KeepAliveTimeout";
+    }
+    leaf keep-alive-threshold {
+      type uint32;
+      description
+        "Device.VXLAN.Tunnel.{i}.KeepAliveThreshold";
+      reference
+        "Device.VXLAN.Tunnel.{i}.KeepAliveThreshold";
+    }
+    leaf delivery-header-protocol {
+      type enumeration {
+        enum IPv4 {
+          description
+            "Enum Value - IPv4";
+        }
+        enum IPv6 {
+          description
+            "Enum Value - IPv6";
+        }
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.DeliveryHeaderProtocol";
+      reference
+        "Device.VXLAN.Tunnel.{i}.DeliveryHeaderProtocol";
+    }
+    leaf default-dscp-mark {
+      type uint32;
+      description
+        "Device.VXLAN.Tunnel.{i}.DefaultDSCPMark";
+      reference
+        "Device.VXLAN.Tunnel.{i}.DefaultDSCPMark";
+    }
+    leaf connected-remote-endpoint {
+      type string;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.ConnectedRemoteEndpoint";
+      reference
+        "Device.VXLAN.Tunnel.{i}.ConnectedRemoteEndpoint";
+    }
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.InterfaceNumberOfEntries";
+      reference
+        "Device.VXLAN.Tunnel.{i}.InterfaceNumberOfEntries";
+    }
+    leaf source-port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.SourcePort";
+      reference
+        "Device.VXLAN.Tunnel.{i}.SourcePort";
+    }
+    leaf remote-port {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.RemotePort";
+      reference
+        "Device.VXLAN.Tunnel.{i}.RemotePort";
+    }
+  }
+
+  grouping vxlan-tunnel-interface-g {
+    description
+      "Grouping object for Device.VXLAN.Tunnel.{i}.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Enable";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Status";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Alias";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Name";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.LastChange";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.LowerLayers";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.LowerLayers";
+    }
+    leaf vni {
+      type int32 {
+        range "-1 | 0..16777215";
+      }
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.VNI";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.VNI";
+    }
+  }
+
+  grouping vxlan-tunnel-interface-stats-g {
+    description
+      "Grouping object for Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-checksum-received {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.DiscardChecksumReceived";
+    }
+    leaf discard-sequence-number-received {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.DiscardSequenceNumberReceived";
+    }
+  }
+
+  grouping vxlan-tunnel-stats-g {
+    description
+      "Grouping object for Device.VXLAN.Tunnel.{i}.Stats.";
+    leaf keep-alive-sent {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.KeepAliveSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.KeepAliveSent";
+    }
+    leaf keep-alive-received {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.KeepAliveReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.KeepAliveReceived";
+    }
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.BytesSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.BytesReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.PacketsSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.PacketsReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.ErrorsSent";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.VXLAN.Tunnel.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.VXLAN.Tunnel.{i}.Stats.ErrorsReceived";
+    }
+  }
+
+  grouping device-wi-fi-g {
+    description
+      "Grouping object for Device.WiFi.";
+    leaf radio-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.RadioNumberOfEntries";
+      reference
+        "Device.WiFi.RadioNumberOfEntries";
+    }
+    leaf ssid-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSIDNumberOfEntries";
+      reference
+        "Device.WiFi.SSIDNumberOfEntries";
+    }
+    leaf access-point-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPointNumberOfEntries";
+      reference
+        "Device.WiFi.AccessPointNumberOfEntries";
+    }
+    leaf end-point-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPointNumberOfEntries";
+      reference
+        "Device.WiFi.EndPointNumberOfEntries";
+    }
+    leaf reset-counter {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.ResetCounter";
+      reference
+        "Device.WiFi.ResetCounter";
+    }
+  }
+
+  grouping wi-fi-access-point-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.Enable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.Status";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Alias";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Alias";
+    }
+    leaf ssid-reference {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.SSIDReference";
+      reference
+        "Device.WiFi.AccessPoint.{i}.SSIDReference";
+    }
+    leaf ssid-advertisement-enabled {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.SSIDAdvertisementEnabled";
+      reference
+        "Device.WiFi.AccessPoint.{i}.SSIDAdvertisementEnabled";
+    }
+    leaf retry-limit {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.RetryLimit";
+      reference
+        "Device.WiFi.AccessPoint.{i}.RetryLimit";
+    }
+    leaf wmm-capability {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.WMMCapability";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WMMCapability";
+    }
+    leaf uapsd-capability {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.UAPSDCapability";
+      reference
+        "Device.WiFi.AccessPoint.{i}.UAPSDCapability";
+    }
+    leaf wmm-enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.WMMEnable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WMMEnable";
+    }
+    leaf uapsd-enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.UAPSDEnable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.UAPSDEnable";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDeviceNumberOfEntries";
+    }
+    leaf max-associated-devices {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.MaxAssociatedDevices";
+      reference
+        "Device.WiFi.AccessPoint.{i}.MaxAssociatedDevices";
+    }
+    leaf isolation-enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.IsolationEnable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.IsolationEnable";
+    }
+    leaf mac-address-control-enabled {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.MACAddressControlEnabled";
+      reference
+        "Device.WiFi.AccessPoint.{i}.MACAddressControlEnabled";
+    }
+    leaf allowed-mac-address {
+      type string {
+        length "min..17";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AllowedMACAddress";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AllowedMACAddress";
+    }
+    leaf max-allowed-associations {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.MaxAllowedAssociations";
+      reference
+        "Device.WiFi.AccessPoint.{i}.MaxAllowedAssociations";
+    }
+  }
+
+  grouping access-point-ac-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.AC.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf access-category {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AccessCategory";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AccessCategory";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Alias";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Alias";
+    }
+    leaf aifsn {
+      type uint32 {
+        range "2..15";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AIFSN";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AIFSN";
+    }
+    leaf ecw-min {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.ECWMin";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.ECWMin";
+    }
+    leaf ecw-max {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.ECWMax";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.ECWMax";
+    }
+    leaf tx-op-max {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.TxOpMax";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.TxOpMax";
+    }
+    leaf ack-policy {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AckPolicy";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.AckPolicy";
+    }
+    leaf out-q-len-histogram-intervals {
+      type string;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.OutQLenHistogramIntervals";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.OutQLenHistogramIntervals";
+    }
+    leaf out-q-len-histogram-sample-interval {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.OutQLenHistogramSampleInterval";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.OutQLenHistogramSampleInterval";
+    }
+  }
+
+  grouping ac-stats-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.BytesSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.BytesReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.PacketsSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.PacketsReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.ErrorsSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.RetransCount";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.RetransCount";
+    }
+    leaf out-q-len-histogram {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.OutQLenHistogram";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.OutQLenHistogram";
+    }
+  }
+
+  grouping access-point-accounting-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.Accounting.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.Enable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.Enable";
+    }
+    leaf server-ip-addr {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.ServerIPAddr";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.ServerIPAddr";
+    }
+    leaf secondary-server-ip-addr {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.SecondaryServerIPAddr";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.SecondaryServerIPAddr";
+    }
+    leaf server-port {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.ServerPort";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.ServerPort";
+    }
+    leaf secondary-server-port {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.SecondaryServerPort";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.SecondaryServerPort";
+    }
+    leaf interim-interval {
+      type uint32 {
+        range "0..60";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Accounting.InterimInterval";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Accounting.InterimInterval";
+    }
+  }
+
+  grouping access-point-associated-device-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.MACAddress";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.MACAddress";
+    }
+    leaf operating-standard {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.OperatingStandard";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.OperatingStandard";
+    }
+    leaf authentication-state {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.AuthenticationState";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.AuthenticationState";
+    }
+    leaf last-data-downlink-rate {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.LastDataDownlinkRate";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.LastDataDownlinkRate";
+    }
+    leaf last-data-uplink-rate {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.LastDataUplinkRate";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.LastDataUplinkRate";
+    }
+    leaf association-time {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.AssociationTime";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.AssociationTime";
+    }
+    leaf signal-strength {
+      type int32 {
+        range "-200..0";
+      }
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.SignalStrength";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.SignalStrength";
+    }
+    leaf noise {
+      type int32 {
+        range "-200..0";
+      }
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Noise";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Noise";
+    }
+    leaf retransmissions {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Retransmissions";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Retransmissions";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Active";
+    }
+  }
+
+  grouping associated-device-stats-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.BytesSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.BytesReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.PacketsSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.PacketsReceived";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.ErrorsSent";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.ErrorsSent";
+    }
+    leaf retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.RetransCount";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.RetransCount";
+    }
+    leaf failed-retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.FailedRetransCount";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.FailedRetransCount";
+    }
+    leaf retry-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.RetryCount";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.RetryCount";
+    }
+    leaf multiple-retry-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.MultipleRetryCount";
+      reference
+        "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.MultipleRetryCount";
+    }
+  }
+
+  grouping access-point-security-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.Security.";
+    leaf modes-supported {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.ModesSupported";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.ModesSupported";
+    }
+    leaf mode-enabled {
+      type string;
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.ModeEnabled";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.ModeEnabled";
+    }
+    leaf rekeying-interval {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.RekeyingInterval";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.RekeyingInterval";
+    }
+    leaf radius-server-ip-addr {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.RadiusServerIPAddr";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.RadiusServerIPAddr";
+    }
+    leaf secondary-radius-server-ip-addr {
+      type string {
+        length "min..45";
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.SecondaryRadiusServerIPAddr";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.SecondaryRadiusServerIPAddr";
+    }
+    leaf radius-server-port {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.RadiusServerPort";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.RadiusServerPort";
+    }
+    leaf secondary-radius-server-port {
+      type uint32;
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.SecondaryRadiusServerPort";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.SecondaryRadiusServerPort";
+    }
+    leaf mfp-config {
+      type enumeration {
+        enum Disabled {
+          description
+            "Enum Value - Disabled";
+        }
+        enum Optional {
+          description
+            "Enum Value - Optional";
+        }
+        enum Required {
+          description
+            "Enum Value - Required";
+        }
+      }
+      description
+        "Device.WiFi.AccessPoint.{i}.Security.MFPConfig";
+      reference
+        "Device.WiFi.AccessPoint.{i}.Security.MFPConfig";
+    }
+  }
+
+  grouping access-point-wps-g {
+    description
+      "Grouping object for Device.WiFi.AccessPoint.{i}.WPS.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.AccessPoint.{i}.WPS.Enable";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WPS.Enable";
+    }
+    leaf config-methods-supported {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.WPS.ConfigMethodsSupported";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WPS.ConfigMethodsSupported";
+    }
+    leaf config-methods-enabled {
+      type string;
+      description
+        "Device.WiFi.AccessPoint.{i}.WPS.ConfigMethodsEnabled";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WPS.ConfigMethodsEnabled";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.WPS.Status";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WPS.Status";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.WiFi.AccessPoint.{i}.WPS.Version";
+      reference
+        "Device.WiFi.AccessPoint.{i}.WPS.Version";
+    }
+  }
+
+  grouping wi-fi-end-point-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.EndPoint.{i}.Enable";
+      reference
+        "Device.WiFi.EndPoint.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Status";
+      reference
+        "Device.WiFi.EndPoint.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.Alias";
+      reference
+        "Device.WiFi.EndPoint.{i}.Alias";
+    }
+    leaf profile-reference {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.ProfileReference";
+      reference
+        "Device.WiFi.EndPoint.{i}.ProfileReference";
+    }
+    leaf ssid-reference {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.SSIDReference";
+      reference
+        "Device.WiFi.EndPoint.{i}.SSIDReference";
+    }
+    leaf profile-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.ProfileNumberOfEntries";
+      reference
+        "Device.WiFi.EndPoint.{i}.ProfileNumberOfEntries";
+    }
+  }
+
+  grouping end-point-ac-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.AC.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf access-category {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AccessCategory";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AccessCategory";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Alias";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Alias";
+    }
+    leaf aifsn {
+      type uint32 {
+        range "2..15";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AIFSN";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AIFSN";
+    }
+    leaf ecw-min {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.ECWMin";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.ECWMin";
+    }
+    leaf ecw-max {
+      type uint32 {
+        range "0..15";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.ECWMax";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.ECWMax";
+    }
+    leaf tx-op-max {
+      type uint32 {
+        range "0..255";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.TxOpMax";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.TxOpMax";
+    }
+    leaf ack-policy {
+      type boolean;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AckPolicy";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.AckPolicy";
+    }
+    leaf out-q-len-histogram-intervals {
+      type string;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.OutQLenHistogramIntervals";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.OutQLenHistogramIntervals";
+    }
+    leaf out-q-len-histogram-sample-interval {
+      type uint32;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.OutQLenHistogramSampleInterval";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.OutQLenHistogramSampleInterval";
+    }
+  }
+
+  grouping end-point-ac-stats-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.AC.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.BytesSent";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.BytesReceived";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.PacketsSent";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.PacketsReceived";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.ErrorsSent";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.RetransCount";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.RetransCount";
+    }
+    leaf out-q-len-histogram {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.OutQLenHistogram";
+      reference
+        "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.OutQLenHistogram";
+    }
+  }
+
+  grouping end-point-profile-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.Profile.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Enable";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Status";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Alias";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Alias";
+    }
+    leaf ssid {
+      type string {
+        length "min..32";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.SSID";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.SSID";
+    }
+    leaf location {
+      type string;
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Location";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Location";
+    }
+    leaf priority {
+      type uint32 {
+        range "min..255";
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Priority";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Priority";
+    }
+  }
+
+  grouping profile-security-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.Profile.{i}.Security.";
+    leaf mode-enabled {
+      type string;
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Security.ModeEnabled";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Security.ModeEnabled";
+    }
+    leaf mfp-config {
+      type enumeration {
+        enum Disabled {
+          description
+            "Enum Value - Disabled";
+        }
+        enum Optional {
+          description
+            "Enum Value - Optional";
+        }
+        enum Required {
+          description
+            "Enum Value - Required";
+        }
+      }
+      description
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Security.MFPConfig";
+      reference
+        "Device.WiFi.EndPoint.{i}.Profile.{i}.Security.MFPConfig";
+    }
+  }
+
+  grouping end-point-security-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.Security.";
+    leaf modes-supported {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Security.ModesSupported";
+      reference
+        "Device.WiFi.EndPoint.{i}.Security.ModesSupported";
+    }
+  }
+
+  grouping end-point-stats-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.Stats.";
+    leaf last-data-downlink-rate {
+      type uint32 {
+        range "1000..600000";
+      }
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Stats.LastDataDownlinkRate";
+      reference
+        "Device.WiFi.EndPoint.{i}.Stats.LastDataDownlinkRate";
+    }
+    leaf last-data-uplink-rate {
+      type uint32 {
+        range "1000..600000";
+      }
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Stats.LastDataUplinkRate";
+      reference
+        "Device.WiFi.EndPoint.{i}.Stats.LastDataUplinkRate";
+    }
+    leaf signal-strength {
+      type int32 {
+        range "-200..0";
+      }
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Stats.SignalStrength";
+      reference
+        "Device.WiFi.EndPoint.{i}.Stats.SignalStrength";
+    }
+    leaf retransmissions {
+      type uint32 {
+        range "0..100";
+      }
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.Stats.Retransmissions";
+      reference
+        "Device.WiFi.EndPoint.{i}.Stats.Retransmissions";
+    }
+  }
+
+  grouping end-point-wps-g {
+    description
+      "Grouping object for Device.WiFi.EndPoint.{i}.WPS.";
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.EndPoint.{i}.WPS.Enable";
+      reference
+        "Device.WiFi.EndPoint.{i}.WPS.Enable";
+    }
+    leaf config-methods-supported {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.WPS.ConfigMethodsSupported";
+      reference
+        "Device.WiFi.EndPoint.{i}.WPS.ConfigMethodsSupported";
+    }
+    leaf config-methods-enabled {
+      type string;
+      description
+        "Device.WiFi.EndPoint.{i}.WPS.ConfigMethodsEnabled";
+      reference
+        "Device.WiFi.EndPoint.{i}.WPS.ConfigMethodsEnabled";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.WPS.Status";
+      reference
+        "Device.WiFi.EndPoint.{i}.WPS.Status";
+    }
+    leaf version {
+      type string;
+      config false;
+      description
+        "Device.WiFi.EndPoint.{i}.WPS.Version";
+      reference
+        "Device.WiFi.EndPoint.{i}.WPS.Version";
+    }
+  }
+
+  grouping wi-fi-neighboring-wi-fi-diagnostic-g {
+    description
+      "Grouping object for Device.WiFi.NeighboringWiFiDiagnostic.";
+    leaf diagnostics-state {
+      type enumeration {
+        enum None {
+          description
+            "Enum Value - None";
+        }
+        enum Requested {
+          description
+            "Enum Value - Requested";
+        }
+        enum Canceled {
+          description
+            "Enum Value - Canceled";
+        }
+        enum Complete {
+          description
+            "Enum Value - Complete";
+        }
+        enum Error {
+          description
+            "Enum Value - Error";
+        }
+        enum Completed {
+          description
+            "Enum Value - Completed";
+        }
+      }
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.DiagnosticsState";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.DiagnosticsState";
+    }
+    leaf result-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.ResultNumberOfEntries";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.ResultNumberOfEntries";
+    }
+  }
+
+  grouping neighboring-wi-fi-diagnostic-result-g {
+    description
+      "Grouping object for Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf radio {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Radio";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Radio";
+    }
+    leaf ssid {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SSID";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SSID";
+    }
+    leaf bssid {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BSSID";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BSSID";
+    }
+    leaf mode {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Mode";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Mode";
+    }
+    leaf channel {
+      type uint32 {
+        range "1..255";
+      }
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Channel";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Channel";
+    }
+    leaf signal-strength {
+      type int32 {
+        range "-200..0";
+      }
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SignalStrength";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SignalStrength";
+    }
+    leaf security-mode-enabled {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SecurityModeEnabled";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SecurityModeEnabled";
+    }
+    leaf encryption-mode {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.EncryptionMode";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.EncryptionMode";
+    }
+    leaf operating-frequency-band {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingFrequencyBand";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingFrequencyBand";
+    }
+    leaf supported-standards {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SupportedStandards";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SupportedStandards";
+    }
+    leaf operating-standards {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingStandards";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingStandards";
+    }
+    leaf operating-channel-bandwidth {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingChannelBandwidth";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.OperatingChannelBandwidth";
+    }
+    leaf beacon-period {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BeaconPeriod";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BeaconPeriod";
+    }
+    leaf noise {
+      type int32 {
+        range "-200..0";
+      }
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Noise";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.Noise";
+    }
+    leaf basic-data-transfer-rates {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BasicDataTransferRates";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.BasicDataTransferRates";
+    }
+    leaf supported-data-transfer-rates {
+      type string;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SupportedDataTransferRates";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.SupportedDataTransferRates";
+    }
+    leaf dtim-period {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.DTIMPeriod";
+      reference
+        "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.DTIMPeriod";
+    }
+  }
+
+  grouping wi-fi-radio-g {
+    description
+      "Grouping object for Device.WiFi.Radio.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.Radio.{i}.Enable";
+      reference
+        "Device.WiFi.Radio.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Status";
+      reference
+        "Device.WiFi.Radio.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.Radio.{i}.Alias";
+      reference
+        "Device.WiFi.Radio.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Name";
+      reference
+        "Device.WiFi.Radio.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.LastChange";
+      reference
+        "Device.WiFi.Radio.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.WiFi.Radio.{i}.LowerLayers";
+      reference
+        "Device.WiFi.Radio.{i}.LowerLayers";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Upstream";
+      reference
+        "Device.WiFi.Radio.{i}.Upstream";
+    }
+    leaf max-bit-rate {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.MaxBitRate";
+      reference
+        "Device.WiFi.Radio.{i}.MaxBitRate";
+    }
+    leaf supported-frequency-bands {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.SupportedFrequencyBands";
+      reference
+        "Device.WiFi.Radio.{i}.SupportedFrequencyBands";
+    }
+    leaf operating-frequency-band {
+      type string;
+      description
+        "Device.WiFi.Radio.{i}.OperatingFrequencyBand";
+      reference
+        "Device.WiFi.Radio.{i}.OperatingFrequencyBand";
+    }
+    leaf supported-standards {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.SupportedStandards";
+      reference
+        "Device.WiFi.Radio.{i}.SupportedStandards";
+    }
+    leaf operating-standards {
+      type string;
+      description
+        "Device.WiFi.Radio.{i}.OperatingStandards";
+      reference
+        "Device.WiFi.Radio.{i}.OperatingStandards";
+    }
+    leaf possible-channels {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.PossibleChannels";
+      reference
+        "Device.WiFi.Radio.{i}.PossibleChannels";
+    }
+    leaf channels-in-use {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.ChannelsInUse";
+      reference
+        "Device.WiFi.Radio.{i}.ChannelsInUse";
+    }
+    leaf channel {
+      type uint32 {
+        range "1..255";
+      }
+      description
+        "Device.WiFi.Radio.{i}.Channel";
+      reference
+        "Device.WiFi.Radio.{i}.Channel";
+    }
+    leaf auto-channel-supported {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.AutoChannelSupported";
+      reference
+        "Device.WiFi.Radio.{i}.AutoChannelSupported";
+    }
+    leaf auto-channel-enable {
+      type boolean;
+      description
+        "Device.WiFi.Radio.{i}.AutoChannelEnable";
+      reference
+        "Device.WiFi.Radio.{i}.AutoChannelEnable";
+    }
+    leaf auto-channel-refresh-period {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.AutoChannelRefreshPeriod";
+      reference
+        "Device.WiFi.Radio.{i}.AutoChannelRefreshPeriod";
+    }
+    leaf channel-last-change {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.ChannelLastChange";
+      reference
+        "Device.WiFi.Radio.{i}.ChannelLastChange";
+    }
+    leaf channel-last-selection-reason {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.ChannelLastSelectionReason";
+      reference
+        "Device.WiFi.Radio.{i}.ChannelLastSelectionReason";
+    }
+    leaf max-supported-ssi-ds {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.MaxSupportedSSIDs";
+      reference
+        "Device.WiFi.Radio.{i}.MaxSupportedSSIDs";
+    }
+    leaf max-supported-associations {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.MaxSupportedAssociations";
+      reference
+        "Device.WiFi.Radio.{i}.MaxSupportedAssociations";
+    }
+    leaf firmware-version {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.FirmwareVersion";
+      reference
+        "Device.WiFi.Radio.{i}.FirmwareVersion";
+    }
+    leaf supported-operating-channel-bandwidths {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.SupportedOperatingChannelBandwidths";
+      reference
+        "Device.WiFi.Radio.{i}.SupportedOperatingChannelBandwidths";
+    }
+    leaf operating-channel-bandwidth {
+      type string;
+      description
+        "Device.WiFi.Radio.{i}.OperatingChannelBandwidth";
+      reference
+        "Device.WiFi.Radio.{i}.OperatingChannelBandwidth";
+    }
+    leaf current-operating-channel-bandwidth {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.CurrentOperatingChannelBandwidth";
+      reference
+        "Device.WiFi.Radio.{i}.CurrentOperatingChannelBandwidth";
+    }
+    leaf extension-channel {
+      type enumeration {
+        enum AboveControlChannel {
+          description
+            "Enum Value - AboveControlChannel";
+        }
+        enum BelowControlChannel {
+          description
+            "Enum Value - BelowControlChannel";
+        }
+        enum Auto {
+          description
+            "Enum Value - Auto";
+        }
+      }
+      description
+        "Device.WiFi.Radio.{i}.ExtensionChannel";
+      reference
+        "Device.WiFi.Radio.{i}.ExtensionChannel";
+    }
+    leaf guard-interval {
+      type enumeration {
+        enum 400nsec {
+          description
+            "Enum Value - 400nsec";
+        }
+        enum 800nsec {
+          description
+            "Enum Value - 800nsec";
+        }
+        enum Auto {
+          description
+            "Enum Value - Auto";
+        }
+      }
+      description
+        "Device.WiFi.Radio.{i}.GuardInterval";
+      reference
+        "Device.WiFi.Radio.{i}.GuardInterval";
+    }
+    leaf mcs {
+      type int32 {
+        range "-1..15 | 16..31";
+      }
+      description
+        "Device.WiFi.Radio.{i}.MCS";
+      reference
+        "Device.WiFi.Radio.{i}.MCS";
+    }
+    leaf transmit-power-supported {
+      type int32 {
+        range "-1..100";
+      }
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.TransmitPowerSupported";
+      reference
+        "Device.WiFi.Radio.{i}.TransmitPowerSupported";
+    }
+    leaf transmit-power {
+      type int32 {
+        range "-1..100";
+      }
+      description
+        "Device.WiFi.Radio.{i}.TransmitPower";
+      reference
+        "Device.WiFi.Radio.{i}.TransmitPower";
+    }
+    leaf ieee80211h-supported {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.IEEE80211hSupported";
+      reference
+        "Device.WiFi.Radio.{i}.IEEE80211hSupported";
+    }
+    leaf ieee80211h-enabled {
+      type boolean;
+      description
+        "Device.WiFi.Radio.{i}.IEEE80211hEnabled";
+      reference
+        "Device.WiFi.Radio.{i}.IEEE80211hEnabled";
+    }
+    leaf regulatory-domain {
+      type string {
+        length "3";
+      }
+      description
+        "Device.WiFi.Radio.{i}.RegulatoryDomain";
+      reference
+        "Device.WiFi.Radio.{i}.RegulatoryDomain";
+    }
+    leaf retry-limit {
+      type uint32 {
+        range "0..7";
+      }
+      description
+        "Device.WiFi.Radio.{i}.RetryLimit";
+      reference
+        "Device.WiFi.Radio.{i}.RetryLimit";
+    }
+    leaf cca-request {
+      type string {
+        length "11";
+      }
+      description
+        "Device.WiFi.Radio.{i}.CCARequest";
+      reference
+        "Device.WiFi.Radio.{i}.CCARequest";
+    }
+    leaf cca-report {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.CCAReport";
+      reference
+        "Device.WiFi.Radio.{i}.CCAReport";
+    }
+    leaf rpi-histogram-request {
+      type string {
+        length "11";
+      }
+      description
+        "Device.WiFi.Radio.{i}.RPIHistogramRequest";
+      reference
+        "Device.WiFi.Radio.{i}.RPIHistogramRequest";
+    }
+    leaf rpi-histogram-report {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.RPIHistogramReport";
+      reference
+        "Device.WiFi.Radio.{i}.RPIHistogramReport";
+    }
+    leaf fragmentation-threshold {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.FragmentationThreshold";
+      reference
+        "Device.WiFi.Radio.{i}.FragmentationThreshold";
+    }
+    leaf rts-threshold {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.RTSThreshold";
+      reference
+        "Device.WiFi.Radio.{i}.RTSThreshold";
+    }
+    leaf long-retry-limit {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.LongRetryLimit";
+      reference
+        "Device.WiFi.Radio.{i}.LongRetryLimit";
+    }
+    leaf beacon-period {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.BeaconPeriod";
+      reference
+        "Device.WiFi.Radio.{i}.BeaconPeriod";
+    }
+    leaf dtim-period {
+      type uint32;
+      description
+        "Device.WiFi.Radio.{i}.DTIMPeriod";
+      reference
+        "Device.WiFi.Radio.{i}.DTIMPeriod";
+    }
+    leaf packet-aggregation-enable {
+      type boolean;
+      description
+        "Device.WiFi.Radio.{i}.PacketAggregationEnable";
+      reference
+        "Device.WiFi.Radio.{i}.PacketAggregationEnable";
+    }
+    leaf preamble-type {
+      type enumeration {
+        enum short {
+          description
+            "Enum Value - short";
+        }
+        enum auto {
+          description
+            "Enum Value - auto";
+        }
+      }
+      description
+        "Device.WiFi.Radio.{i}.PreambleType";
+      reference
+        "Device.WiFi.Radio.{i}.PreambleType";
+    }
+    leaf basic-data-transmit-rates {
+      type string;
+      description
+        "Device.WiFi.Radio.{i}.BasicDataTransmitRates";
+      reference
+        "Device.WiFi.Radio.{i}.BasicDataTransmitRates";
+    }
+    leaf operational-data-transmit-rates {
+      type string;
+      description
+        "Device.WiFi.Radio.{i}.OperationalDataTransmitRates";
+      reference
+        "Device.WiFi.Radio.{i}.OperationalDataTransmitRates";
+    }
+    leaf supported-data-transmit-rates {
+      type string;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.SupportedDataTransmitRates";
+      reference
+        "Device.WiFi.Radio.{i}.SupportedDataTransmitRates";
+    }
+  }
+
+  grouping radio-stats-g {
+    description
+      "Grouping object for Device.WiFi.Radio.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.BytesSent";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.BytesReceived";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.PacketsSent";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.PacketsReceived";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.ErrorsSent";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.ErrorsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf plcp-error-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.PLCPErrorCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.PLCPErrorCount";
+    }
+    leaf fcs-error-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.FCSErrorCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.FCSErrorCount";
+    }
+    leaf invalid-mac-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.InvalidMACCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.InvalidMACCount";
+    }
+    leaf packets-other-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.PacketsOtherReceived";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.PacketsOtherReceived";
+    }
+    leaf noise {
+      type int32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.Noise";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.Noise";
+    }
+    leaf total-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.TotalChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.TotalChannelChangeCount";
+    }
+    leaf manual-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.ManualChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.ManualChannelChangeCount";
+    }
+    leaf auto-startup-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.AutoStartupChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.AutoStartupChannelChangeCount";
+    }
+    leaf auto-user-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.AutoUserChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.AutoUserChannelChangeCount";
+    }
+    leaf auto-refresh-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.AutoRefreshChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.AutoRefreshChannelChangeCount";
+    }
+    leaf auto-dynamic-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.AutoDynamicChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.AutoDynamicChannelChangeCount";
+    }
+    leaf auto-dfs-channel-change-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.Radio.{i}.Stats.AutoDFSChannelChangeCount";
+      reference
+        "Device.WiFi.Radio.{i}.Stats.AutoDFSChannelChangeCount";
+    }
+  }
+
+  grouping wi-fi-ssid-g {
+    description
+      "Grouping object for Device.WiFi.SSID.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.WiFi.SSID.{i}.Enable";
+      reference
+        "Device.WiFi.SSID.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Status";
+      reference
+        "Device.WiFi.SSID.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.WiFi.SSID.{i}.Alias";
+      reference
+        "Device.WiFi.SSID.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Name";
+      reference
+        "Device.WiFi.SSID.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.LastChange";
+      reference
+        "Device.WiFi.SSID.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.WiFi.SSID.{i}.LowerLayers";
+      reference
+        "Device.WiFi.SSID.{i}.LowerLayers";
+    }
+    leaf bssid {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.BSSID";
+      reference
+        "Device.WiFi.SSID.{i}.BSSID";
+    }
+    leaf mac-address {
+      type string {
+        length "min..17";
+      }
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.MACAddress";
+      reference
+        "Device.WiFi.SSID.{i}.MACAddress";
+    }
+    leaf ssid {
+      type string {
+        length "min..32";
+      }
+      description
+        "Device.WiFi.SSID.{i}.SSID";
+      reference
+        "Device.WiFi.SSID.{i}.SSID";
+    }
+    leaf upstream {
+      type boolean;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Upstream";
+      reference
+        "Device.WiFi.SSID.{i}.Upstream";
+    }
+  }
+
+  grouping ssid-stats-g {
+    description
+      "Grouping object for Device.WiFi.SSID.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.BytesSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.BytesReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.PacketsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.PacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.ErrorsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.ErrorsSent";
+    }
+    leaf retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.RetransCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.RetransCount";
+    }
+    leaf failed-retrans-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.FailedRetransCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.FailedRetransCount";
+    }
+    leaf retry-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.RetryCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.RetryCount";
+    }
+    leaf multiple-retry-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.MultipleRetryCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.MultipleRetryCount";
+    }
+    leaf ack-failure-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.ACKFailureCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.ACKFailureCount";
+    }
+    leaf aggregated-packet-count {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.AggregatedPacketCount";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.AggregatedPacketCount";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-proto-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.WiFi.SSID.{i}.Stats.UnknownProtoPacketsReceived";
+      reference
+        "Device.WiFi.SSID.{i}.Stats.UnknownProtoPacketsReceived";
+    }
+  }
+
+  grouping device-xmpp-g {
+    description
+      "Grouping object for Device.XMPP.";
+    leaf connection-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.ConnectionNumberOfEntries";
+      reference
+        "Device.XMPP.ConnectionNumberOfEntries";
+    }
+    leaf supported-server-connect-algorithms {
+      type string;
+      config false;
+      description
+        "Device.XMPP.SupportedServerConnectAlgorithms";
+      reference
+        "Device.XMPP.SupportedServerConnectAlgorithms";
+    }
+  }
+
+  grouping xmpp-connection-g {
+    description
+      "Grouping object for Device.XMPP.Connection.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.XMPP.Connection.{i}.Enable";
+      reference
+        "Device.XMPP.Connection.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Alias";
+      reference
+        "Device.XMPP.Connection.{i}.Alias";
+    }
+    leaf username {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Username";
+      reference
+        "Device.XMPP.Connection.{i}.Username";
+    }
+    leaf domain {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Domain";
+      reference
+        "Device.XMPP.Connection.{i}.Domain";
+    }
+    leaf resource {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Resource";
+      reference
+        "Device.XMPP.Connection.{i}.Resource";
+    }
+    leaf jabber-id {
+      type string;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.JabberID";
+      reference
+        "Device.XMPP.Connection.{i}.JabberID";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.Status";
+      reference
+        "Device.XMPP.Connection.{i}.Status";
+    }
+    leaf last-change-date {
+      type string;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.LastChangeDate";
+      reference
+        "Device.XMPP.Connection.{i}.LastChangeDate";
+    }
+    leaf server-connect-algorithm {
+      type string;
+      description
+        "Device.XMPP.Connection.{i}.ServerConnectAlgorithm";
+      reference
+        "Device.XMPP.Connection.{i}.ServerConnectAlgorithm";
+    }
+    leaf keep-alive-interval {
+      type int32 {
+        range "-1..max";
+      }
+      description
+        "Device.XMPP.Connection.{i}.KeepAliveInterval";
+      reference
+        "Device.XMPP.Connection.{i}.KeepAliveInterval";
+    }
+    leaf server-connect-attempts {
+      type uint32;
+      description
+        "Device.XMPP.Connection.{i}.ServerConnectAttempts";
+      reference
+        "Device.XMPP.Connection.{i}.ServerConnectAttempts";
+    }
+    leaf server-retry-initial-interval {
+      type uint32 {
+        range "1..65535";
+      }
+      description
+        "Device.XMPP.Connection.{i}.ServerRetryInitialInterval";
+      reference
+        "Device.XMPP.Connection.{i}.ServerRetryInitialInterval";
+    }
+    leaf server-retry-interval-multiplier {
+      type uint32 {
+        range "1000..65535";
+      }
+      description
+        "Device.XMPP.Connection.{i}.ServerRetryIntervalMultiplier";
+      reference
+        "Device.XMPP.Connection.{i}.ServerRetryIntervalMultiplier";
+    }
+    leaf server-retry-max-interval {
+      type uint32 {
+        range "1..max";
+      }
+      description
+        "Device.XMPP.Connection.{i}.ServerRetryMaxInterval";
+      reference
+        "Device.XMPP.Connection.{i}.ServerRetryMaxInterval";
+    }
+    leaf use-tls {
+      type boolean;
+      description
+        "Device.XMPP.Connection.{i}.UseTLS";
+      reference
+        "Device.XMPP.Connection.{i}.UseTLS";
+    }
+    leaf tls-established {
+      type boolean;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.TLSEstablished";
+      reference
+        "Device.XMPP.Connection.{i}.TLSEstablished";
+    }
+    leaf server-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.ServerNumberOfEntries";
+      reference
+        "Device.XMPP.Connection.{i}.ServerNumberOfEntries";
+    }
+  }
+
+  grouping connection-server-g {
+    description
+      "Grouping object for Device.XMPP.Connection.{i}.Server.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.Enable";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.Alias";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.Alias";
+    }
+    leaf priority {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.Priority";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.Priority";
+    }
+    leaf weight {
+      type int32 {
+        range "-1..65535";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.Weight";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.Weight";
+    }
+    leaf server-address {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.ServerAddress";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.ServerAddress";
+    }
+    leaf port {
+      type uint32 {
+        range "0..65535";
+      }
+      description
+        "Device.XMPP.Connection.{i}.Server.{i}.Port";
+      reference
+        "Device.XMPP.Connection.{i}.Server.{i}.Port";
+    }
+  }
+
+  grouping connection-stats-g {
+    description
+      "Grouping object for Device.XMPP.Connection.{i}.Stats.";
+    leaf received-messages {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.Stats.ReceivedMessages";
+      reference
+        "Device.XMPP.Connection.{i}.Stats.ReceivedMessages";
+    }
+    leaf transmitted-messages {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.Stats.TransmittedMessages";
+      reference
+        "Device.XMPP.Connection.{i}.Stats.TransmittedMessages";
+    }
+    leaf received-error-messages {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.Stats.ReceivedErrorMessages";
+      reference
+        "Device.XMPP.Connection.{i}.Stats.ReceivedErrorMessages";
+    }
+    leaf transmitted-error-messages {
+      type uint32;
+      config false;
+      description
+        "Device.XMPP.Connection.{i}.Stats.TransmittedErrorMessages";
+      reference
+        "Device.XMPP.Connection.{i}.Stats.TransmittedErrorMessages";
+    }
+  }
+
+  grouping device-zig-bee-g {
+    description
+      "Grouping object for Device.ZigBee.";
+    leaf interface-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.InterfaceNumberOfEntries";
+      reference
+        "Device.ZigBee.InterfaceNumberOfEntries";
+    }
+    leaf zdo-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDONumberOfEntries";
+      reference
+        "Device.ZigBee.ZDONumberOfEntries";
+    }
+  }
+
+  grouping zig-bee-discovery-g {
+    description
+      "Grouping object for Device.ZigBee.Discovery.";
+    leaf area-network-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Discovery.AreaNetworkNumberOfEntries";
+      reference
+        "Device.ZigBee.Discovery.AreaNetworkNumberOfEntries";
+    }
+  }
+
+  grouping discovery-area-network-g {
+    description
+      "Grouping object for Device.ZigBee.Discovery.AreaNetwork.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Enable";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Enable";
+    }
+    leaf last-update {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.LastUpdate";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.LastUpdate";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Status";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Alias";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Alias";
+    }
+    leaf coordinator {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Coordinator";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.Coordinator";
+    }
+    leaf zdo-reference {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.ZDOReference";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.ZDOReference";
+    }
+    leaf zdo-list {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.ZDOList";
+      reference
+        "Device.ZigBee.Discovery.AreaNetwork.{i}.ZDOList";
+    }
+  }
+
+  grouping zig-bee-interface-g {
+    description
+      "Grouping object for Device.ZigBee.Interface.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ZigBee.Interface.{i}.Enable";
+      reference
+        "Device.ZigBee.Interface.{i}.Enable";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Status";
+      reference
+        "Device.ZigBee.Interface.{i}.Status";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.Interface.{i}.Alias";
+      reference
+        "Device.ZigBee.Interface.{i}.Alias";
+    }
+    leaf name {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Name";
+      reference
+        "Device.ZigBee.Interface.{i}.Name";
+    }
+    leaf last-change {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.LastChange";
+      reference
+        "Device.ZigBee.Interface.{i}.LastChange";
+    }
+    leaf lower-layers {
+      type string {
+        length "min..1024";
+      }
+      description
+        "Device.ZigBee.Interface.{i}.LowerLayers";
+      reference
+        "Device.ZigBee.Interface.{i}.LowerLayers";
+    }
+    leaf ieee-address {
+      type string {
+        length "min..23";
+      }
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.IEEEAddress";
+      reference
+        "Device.ZigBee.Interface.{i}.IEEEAddress";
+    }
+    leaf network-address {
+      type string {
+        length "min..4";
+      }
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.NetworkAddress";
+      reference
+        "Device.ZigBee.Interface.{i}.NetworkAddress";
+    }
+    leaf zdo-reference {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.ZDOReference";
+      reference
+        "Device.ZigBee.Interface.{i}.ZDOReference";
+    }
+    leaf associated-device-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.AssociatedDeviceNumberOfEntries";
+      reference
+        "Device.ZigBee.Interface.{i}.AssociatedDeviceNumberOfEntries";
+    }
+  }
+
+  grouping zig-bee-interface-associated-device-g {
+    description
+      "Grouping object for Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf ieee-address {
+      type string {
+        length "min..23";
+      }
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.IEEEAddress";
+      reference
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.IEEEAddress";
+    }
+    leaf network-address {
+      type string {
+        length "min..4";
+      }
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.NetworkAddress";
+      reference
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.NetworkAddress";
+    }
+    leaf active {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.Active";
+      reference
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.Active";
+    }
+    leaf zdo-reference {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.ZDOReference";
+      reference
+        "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.ZDOReference";
+    }
+  }
+
+  grouping zig-bee-interface-stats-g {
+    description
+      "Grouping object for Device.ZigBee.Interface.{i}.Stats.";
+    leaf bytes-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.BytesSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.BytesSent";
+    }
+    leaf bytes-received {
+      type uint64;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.BytesReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.BytesReceived";
+    }
+    leaf packets-sent {
+      type uint64;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.PacketsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.PacketsSent";
+    }
+    leaf packets-received {
+      type uint64;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.PacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.PacketsReceived";
+    }
+    leaf errors-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.ErrorsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.ErrorsSent";
+    }
+    leaf errors-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.ErrorsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.ErrorsReceived";
+    }
+    leaf unicast-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.UnicastPacketsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.UnicastPacketsSent";
+    }
+    leaf unicast-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.UnicastPacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.UnicastPacketsReceived";
+    }
+    leaf discard-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.DiscardPacketsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.DiscardPacketsSent";
+    }
+    leaf discard-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.DiscardPacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.DiscardPacketsReceived";
+    }
+    leaf multicast-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.MulticastPacketsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.MulticastPacketsSent";
+    }
+    leaf multicast-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.MulticastPacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.MulticastPacketsReceived";
+    }
+    leaf broadcast-packets-sent {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.BroadcastPacketsSent";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.BroadcastPacketsSent";
+    }
+    leaf broadcast-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.BroadcastPacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.BroadcastPacketsReceived";
+    }
+    leaf unknown-packets-received {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.Interface.{i}.Stats.UnknownPacketsReceived";
+      reference
+        "Device.ZigBee.Interface.{i}.Stats.UnknownPacketsReceived";
+    }
+  }
+
+  grouping zig-bee-zdo-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Alias";
+      reference
+        "Device.ZigBee.ZDO.{i}.Alias";
+    }
+    leaf ieee-address {
+      type string {
+        length "min..23";
+      }
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.IEEEAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.IEEEAddress";
+    }
+    leaf network-address {
+      type string {
+        length "min..4";
+      }
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NetworkAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.NetworkAddress";
+    }
+    leaf binding-table-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.BindingTableNumberOfEntries";
+      reference
+        "Device.ZigBee.ZDO.{i}.BindingTableNumberOfEntries";
+    }
+    leaf group-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.GroupNumberOfEntries";
+      reference
+        "Device.ZigBee.ZDO.{i}.GroupNumberOfEntries";
+    }
+    leaf application-endpoint-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpointNumberOfEntries";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpointNumberOfEntries";
+    }
+  }
+
+  grouping zdo-application-endpoint-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.Enable";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.Alias";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.Alias";
+    }
+    leaf endpoint-id {
+      type uint32 {
+        range "min..240";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.EndpointId";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.EndpointId";
+    }
+  }
+
+  grouping application-endpoint-simple-descriptor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.";
+    leaf profile-id {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.ProfileId";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.ProfileId";
+    }
+    leaf device-id {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.DeviceId";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.DeviceId";
+    }
+    leaf device-version {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.DeviceVersion";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.DeviceVersion";
+    }
+    leaf input-cluster-list {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.InputClusterList";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.InputClusterList";
+    }
+    leaf output-cluster-list {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.OutputClusterList";
+      reference
+        "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.OutputClusterList";
+    }
+  }
+
+  grouping zdo-binding-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.Binding.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.Enable";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.Alias";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.Alias";
+    }
+    leaf source-endpoint {
+      type uint32 {
+        range "min..240";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.SourceEndpoint";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.SourceEndpoint";
+    }
+    leaf source-address {
+      type string {
+        length "min..23";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.SourceAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.SourceAddress";
+    }
+    leaf cluster-id {
+      type uint32 {
+        range "min..65535";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.ClusterId";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.ClusterId";
+    }
+    leaf destination-address-mode {
+      type enumeration {
+        enum Group {
+          description
+            "Enum Value - Group";
+        }
+        enum Endpoint {
+          description
+            "Enum Value - Endpoint";
+        }
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.DestinationAddressMode";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.DestinationAddressMode";
+    }
+    leaf destination-endpoint {
+      type uint32 {
+        range "min..240";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.DestinationEndpoint";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.DestinationEndpoint";
+    }
+    leaf ieee-destination-address {
+      type string {
+        length "min..23";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.IEEEDestinationAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.IEEEDestinationAddress";
+    }
+    leaf group-destination-address {
+      type string {
+        length "min..4";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.GroupDestinationAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.Binding.{i}.GroupDestinationAddress";
+    }
+  }
+
+  grouping zdo-complex-descriptor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.ComplexDescriptor.";
+    leaf descriptor-available {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.DescriptorAvailable";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.DescriptorAvailable";
+    }
+    leaf language {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.Language";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.Language";
+    }
+    leaf character-set {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.CharacterSet";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.CharacterSet";
+    }
+    leaf manufacturer-name {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.ManufacturerName";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.ManufacturerName";
+    }
+    leaf model-name {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.ModelName";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.ModelName";
+    }
+    leaf serial-number {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.SerialNumber";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.SerialNumber";
+    }
+    leaf device-url {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.DeviceURL";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.DeviceURL";
+    }
+    leaf icon {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.Icon";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.Icon";
+    }
+    leaf icon-url {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.IconURL";
+      reference
+        "Device.ZigBee.ZDO.{i}.ComplexDescriptor.IconURL";
+    }
+  }
+
+  grouping zdo-group-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.Group.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf enable {
+      type boolean;
+      description
+        "Device.ZigBee.ZDO.{i}.Group.{i}.Enable";
+      reference
+        "Device.ZigBee.ZDO.{i}.Group.{i}.Enable";
+    }
+    leaf alias {
+      type string {
+        length "min..64";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Group.{i}.Alias";
+      reference
+        "Device.ZigBee.ZDO.{i}.Group.{i}.Alias";
+    }
+    leaf group-id {
+      type string {
+        length "min..4";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Group.{i}.GroupId";
+      reference
+        "Device.ZigBee.ZDO.{i}.Group.{i}.GroupId";
+    }
+    leaf endpoint-list {
+      type string {
+        length "min..256";
+      }
+      description
+        "Device.ZigBee.ZDO.{i}.Group.{i}.EndpointList";
+      reference
+        "Device.ZigBee.ZDO.{i}.Group.{i}.EndpointList";
+    }
+  }
+
+  grouping zdo-network-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.Network.";
+    leaf neighbor-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.NeighborNumberOfEntries";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.NeighborNumberOfEntries";
+    }
+  }
+
+  grouping network-neighbor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf neighbor {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Neighbor";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Neighbor";
+    }
+    leaf lqi {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.LQI";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.LQI";
+    }
+    leaf relationship {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Relationship";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Relationship";
+    }
+    leaf permit-join {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.PermitJoin";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.PermitJoin";
+    }
+    leaf depth {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Depth";
+      reference
+        "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.Depth";
+    }
+  }
+
+  grouping zdo-node-descriptor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.NodeDescriptor.";
+    leaf logical-type {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.LogicalType";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.LogicalType";
+    }
+    leaf complex-descriptor-supported {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ComplexDescriptorSupported";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ComplexDescriptorSupported";
+    }
+    leaf user-descriptor-supported {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.UserDescriptorSupported";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.UserDescriptorSupported";
+    }
+    leaf frequency-band {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.FrequencyBand";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.FrequencyBand";
+    }
+    leaf mac-capability {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MACCapability";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MACCapability";
+    }
+    leaf manufacture-code {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ManufactureCode";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ManufactureCode";
+    }
+    leaf maximum-buffer-size {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumBufferSize";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumBufferSize";
+    }
+    leaf maximum-incoming-transfer-size {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumIncomingTransferSize";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumIncomingTransferSize";
+    }
+    leaf maximum-outgoing-transfer-size {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumOutgoingTransferSize";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.MaximumOutgoingTransferSize";
+    }
+    leaf server-mask {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ServerMask";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.ServerMask";
+    }
+    leaf descriptor-capability {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.DescriptorCapability";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeDescriptor.DescriptorCapability";
+    }
+  }
+
+  grouping zdo-node-manager-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.NodeManager.";
+    leaf routing-table-number-of-entries {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTableNumberOfEntries";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTableNumberOfEntries";
+    }
+  }
+
+  grouping node-manager-routing-table-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.";
+    leaf index {
+      type uint16;
+      description
+        "Index attribute";
+    }
+    leaf destination-address {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.DestinationAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.DestinationAddress";
+    }
+    leaf next-hop-address {
+      type string {
+        length "min..4";
+      }
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.NextHopAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.NextHopAddress";
+    }
+    leaf status {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.Status";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.Status";
+    }
+    leaf memory-constrained {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.MemoryConstrained";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.MemoryConstrained";
+    }
+    leaf many-to-one {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.ManyToOne";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.ManyToOne";
+    }
+    leaf route-record-required {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.RouteRecordRequired";
+      reference
+        "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.RouteRecordRequired";
+    }
+  }
+
+  grouping zdo-power-descriptor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.PowerDescriptor.";
+    leaf current-power-mode {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerMode";
+      reference
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerMode";
+    }
+    leaf available-power-source {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.AvailablePowerSource";
+      reference
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.AvailablePowerSource";
+    }
+    leaf current-power-source {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerSource";
+      reference
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerSource";
+    }
+    leaf current-power-source-level {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerSourceLevel";
+      reference
+        "Device.ZigBee.ZDO.{i}.PowerDescriptor.CurrentPowerSourceLevel";
+    }
+  }
+
+  grouping zdo-security-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.Security.";
+    leaf trust-center-address {
+      type string {
+        length "min..23";
+      }
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Security.TrustCenterAddress";
+      reference
+        "Device.ZigBee.ZDO.{i}.Security.TrustCenterAddress";
+    }
+    leaf security-level {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Security.SecurityLevel";
+      reference
+        "Device.ZigBee.ZDO.{i}.Security.SecurityLevel";
+    }
+    leaf time-out-period {
+      type uint32;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.Security.TimeOutPeriod";
+      reference
+        "Device.ZigBee.ZDO.{i}.Security.TimeOutPeriod";
+    }
+  }
+
+  grouping zdo-user-descriptor-g {
+    description
+      "Grouping object for Device.ZigBee.ZDO.{i}.UserDescriptor.";
+    leaf descriptor-available {
+      type boolean;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.UserDescriptor.DescriptorAvailable";
+      reference
+        "Device.ZigBee.ZDO.{i}.UserDescriptor.DescriptorAvailable";
+    }
+    leaf description {
+      type string;
+      config false;
+      description
+        "Device.ZigBee.ZDO.{i}.UserDescriptor.Description";
+      reference
+        "Device.ZigBee.ZDO.{i}.UserDescriptor.Description";
+    }
+  }
+
+  grouping atm-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-dlna-g {
+    description
+      "Grouping object";
+  }
+
+  grouping dns-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping bonded-channel-ethernet-g {
+    description
+      "Grouping object";
+  }
+
+  grouping bonding-group-ethernet-g {
+    description
+      "Grouping object";
+  }
+
+  grouping dsl-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-fap-g {
+    description
+      "Grouping object";
+  }
+
+  grouping ghn-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping hpna-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-lan-config-security-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-lldp-g {
+    description
+      "Grouping object";
+  }
+
+  grouping management-server-download-availability-g {
+    description
+      "Grouping object";
+  }
+
+  grouping interface-pp-po-a-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-services-g {
+    description
+      "Grouping object";
+  }
+
+  grouping execution-unit-extensions-g {
+    description
+      "Grouping object";
+  }
+
+  grouping upa-diagnostics-g {
+    description
+      "Grouping object";
+  }
+
+  grouping device-u-pn-p-g {
+    description
+      "Grouping object";
+  }
+
+  container device {
+    description
+      "Container for object class Device.";
+    reference
+      "Device.";
+    uses device-g;
+    container atm {
+      description
+        "Container for object class Device.ATM.";
+      reference
+        "Device.ATM.";
+      uses device-atm-g;
+      container diagnostics {
+        description
+          "Container for object class Device.ATM.Diagnostics.";
+        reference
+          "Device.ATM.Diagnostics.";
+        uses atm-diagnostics-g;
+        container f5-loopback {
+          description
+            "Container for object class Device.ATM.Diagnostics.F5Loopback.";
+          reference
+            "Device.ATM.Diagnostics.F5Loopback.";
+          uses diagnostics-f5-loopback-g;
+        }
+      }
+      list link {
+        key "index";
+        description
+          "Device.ATM.Link.{i}.";
+        reference
+          "Device.ATM.Link.{i}.";
+        uses atm-link-g;
+        container qo-s {
+          description
+            "Container for object class Device.ATM.Link.{i}.QoS.";
+          reference
+            "Device.ATM.Link.{i}.QoS.";
+          uses link-qo-s-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.ATM.Link.{i}.Stats.";
+          reference
+            "Device.ATM.Link.{i}.Stats.";
+          uses link-stats-g;
+        }
+      }
+    }
+    container basapm {
+      description
+        "Container for object class Device.BASAPM.";
+      reference
+        "Device.BASAPM.";
+      uses device-basapm-g;
+      list measurement-endpoint {
+        key "index";
+        description
+          "Device.BASAPM.MeasurementEndpoint.{i}.";
+        reference
+          "Device.BASAPM.MeasurementEndpoint.{i}.";
+        uses basapm-measurement-endpoint-g;
+        container customer-device {
+          description
+            "Container for object class Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.";
+          reference
+            "Device.BASAPM.MeasurementEndpoint.{i}.CustomerDevice.";
+          uses measurement-endpoint-customer-device-g;
+        }
+        container isp-device {
+          description
+            "Container for object class Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.";
+          reference
+            "Device.BASAPM.MeasurementEndpoint.{i}.ISPDevice.";
+          uses measurement-endpoint-isp-device-g;
+        }
+      }
+    }
+    container bridging {
+      description
+        "Container for object class Device.Bridging.";
+      reference
+        "Device.Bridging.";
+      uses device-bridging-g;
+      list bridge {
+        key "index";
+        description
+          "Device.Bridging.Bridge.{i}.";
+        reference
+          "Device.Bridging.Bridge.{i}.";
+        uses bridging-bridge-g;
+        list port {
+          key "index";
+          description
+            "Device.Bridging.Bridge.{i}.Port.{i}.";
+          reference
+            "Device.Bridging.Bridge.{i}.Port.{i}.";
+          uses bridge-port-g;
+          container priority-code-point {
+            description
+              "Container for object class Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.";
+            reference
+              "Device.Bridging.Bridge.{i}.Port.{i}.PriorityCodePoint.";
+            uses port-priority-code-point-g;
+          }
+          container stats {
+            description
+              "Container for object class Device.Bridging.Bridge.{i}.Port.{i}.Stats.";
+            reference
+              "Device.Bridging.Bridge.{i}.Port.{i}.Stats.";
+            uses port-stats-g;
+          }
+        }
+        list vlan {
+          key "index";
+          description
+            "Device.Bridging.Bridge.{i}.VLAN.{i}.";
+          reference
+            "Device.Bridging.Bridge.{i}.VLAN.{i}.";
+          uses bridge-vlan-g;
+        }
+        list vlan-port {
+          key "index";
+          description
+            "Device.Bridging.Bridge.{i}.VLANPort.{i}.";
+          reference
+            "Device.Bridging.Bridge.{i}.VLANPort.{i}.";
+          uses bridge-vlan-port-g;
+        }
+      }
+      list filter {
+        key "index";
+        description
+          "Device.Bridging.Filter.{i}.";
+        reference
+          "Device.Bridging.Filter.{i}.";
+        uses bridging-filter-g;
+      }
+      list provider-bridge {
+        key "index";
+        description
+          "Device.Bridging.ProviderBridge.{i}.";
+        reference
+          "Device.Bridging.ProviderBridge.{i}.";
+        uses bridging-provider-bridge-g;
+      }
+    }
+    container bulk-data {
+      description
+        "Container for object class Device.BulkData.";
+      reference
+        "Device.BulkData.";
+      uses device-bulk-data-g;
+      list profile {
+        key "index";
+        description
+          "Device.BulkData.Profile.{i}.";
+        reference
+          "Device.BulkData.Profile.{i}.";
+        uses bulk-data-profile-g;
+        container csv-encoding {
+          description
+            "Container for object class Device.BulkData.Profile.{i}.CSVEncoding.";
+          reference
+            "Device.BulkData.Profile.{i}.CSVEncoding.";
+          uses profile-csv-encoding-g;
+        }
+        container http {
+          description
+            "Container for object class Device.BulkData.Profile.{i}.HTTP.";
+          reference
+            "Device.BulkData.Profile.{i}.HTTP.";
+          uses profile-http-g;
+          list request-uri-parameter {
+            key "index";
+            description
+              "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.";
+            reference
+              "Device.BulkData.Profile.{i}.HTTP.RequestURIParameter.{i}.";
+            uses http-request-uri-parameter-g;
+          }
+        }
+        container json-encoding {
+          description
+            "Container for object class Device.BulkData.Profile.{i}.JSONEncoding.";
+          reference
+            "Device.BulkData.Profile.{i}.JSONEncoding.";
+          uses profile-json-encoding-g;
+        }
+        list parameter {
+          key "index";
+          description
+            "Device.BulkData.Profile.{i}.Parameter.{i}.";
+          reference
+            "Device.BulkData.Profile.{i}.Parameter.{i}.";
+          uses profile-parameter-g;
+        }
+      }
+    }
+    container captive-portal {
+      description
+        "Container for object class Device.CaptivePortal.";
+      reference
+        "Device.CaptivePortal.";
+      uses device-captive-portal-g;
+    }
+    container cellular {
+      description
+        "Container for object class Device.Cellular.";
+      reference
+        "Device.Cellular.";
+      uses device-cellular-g;
+      list access-point {
+        key "index";
+        description
+          "Device.Cellular.AccessPoint.{i}.";
+        reference
+          "Device.Cellular.AccessPoint.{i}.";
+        uses cellular-access-point-g;
+      }
+      list interface {
+        key "index";
+        description
+          "Device.Cellular.Interface.{i}.";
+        reference
+          "Device.Cellular.Interface.{i}.";
+        uses cellular-interface-g;
+        container stats {
+          description
+            "Container for object class Device.Cellular.Interface.{i}.Stats.";
+          reference
+            "Device.Cellular.Interface.{i}.Stats.";
+          uses interface-stats-g;
+        }
+        container usim {
+          description
+            "Container for object class Device.Cellular.Interface.{i}.USIM.";
+          reference
+            "Device.Cellular.Interface.{i}.USIM.";
+          uses interface-usim-g;
+        }
+      }
+    }
+    container dhcpv4 {
+      description
+        "Container for object class Device.DHCPv4.";
+      reference
+        "Device.DHCPv4.";
+      uses device-dhcpv4-g;
+      list client {
+        key "index";
+        description
+          "Device.DHCPv4.Client.{i}.";
+        reference
+          "Device.DHCPv4.Client.{i}.";
+        uses dhcpv4-client-g;
+        list req-option {
+          key "index";
+          description
+            "Device.DHCPv4.Client.{i}.ReqOption.{i}.";
+          reference
+            "Device.DHCPv4.Client.{i}.ReqOption.{i}.";
+          uses client-req-option-g;
+        }
+        list sent-option {
+          key "index";
+          description
+            "Device.DHCPv4.Client.{i}.SentOption.{i}.";
+          reference
+            "Device.DHCPv4.Client.{i}.SentOption.{i}.";
+          uses client-sent-option-g;
+        }
+      }
+      container relay {
+        description
+          "Container for object class Device.DHCPv4.Relay.";
+        reference
+          "Device.DHCPv4.Relay.";
+        uses dhcpv4-relay-g;
+        list forwarding {
+          key "index";
+          description
+            "Device.DHCPv4.Relay.Forwarding.{i}.";
+          reference
+            "Device.DHCPv4.Relay.Forwarding.{i}.";
+          uses relay-forwarding-g;
+        }
+      }
+      container server {
+        description
+          "Container for object class Device.DHCPv4.Server.";
+        reference
+          "Device.DHCPv4.Server.";
+        uses dhcpv4-server-g;
+        list pool {
+          key "index";
+          description
+            "Device.DHCPv4.Server.Pool.{i}.";
+          reference
+            "Device.DHCPv4.Server.Pool.{i}.";
+          uses server-pool-g;
+          list client {
+            key "index";
+            description
+              "Device.DHCPv4.Server.Pool.{i}.Client.{i}.";
+            reference
+              "Device.DHCPv4.Server.Pool.{i}.Client.{i}.";
+            uses pool-client-g;
+            list ipv4-address {
+              key "index";
+              description
+                "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.";
+              reference
+                "Device.DHCPv4.Server.Pool.{i}.Client.{i}.IPv4Address.{i}.";
+              uses client-ipv4-address-g;
+            }
+            list option {
+              key "index";
+              description
+                "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.";
+              reference
+                "Device.DHCPv4.Server.Pool.{i}.Client.{i}.Option.{i}.";
+              uses client-option-g;
+            }
+          }
+          list option {
+            key "index";
+            description
+              "Device.DHCPv4.Server.Pool.{i}.Option.{i}.";
+            reference
+              "Device.DHCPv4.Server.Pool.{i}.Option.{i}.";
+            uses pool-option-g;
+          }
+          list static-address {
+            key "index";
+            description
+              "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.";
+            reference
+              "Device.DHCPv4.Server.Pool.{i}.StaticAddress.{i}.";
+            uses pool-static-address-g;
+          }
+        }
+      }
+    }
+    container dhcpv6 {
+      description
+        "Container for object class Device.DHCPv6.";
+      reference
+        "Device.DHCPv6.";
+      uses device-dhcpv6-g;
+      list client {
+        key "index";
+        description
+          "Device.DHCPv6.Client.{i}.";
+        reference
+          "Device.DHCPv6.Client.{i}.";
+        uses dhcpv6-client-g;
+        list received-option {
+          key "index";
+          description
+            "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.";
+          reference
+            "Device.DHCPv6.Client.{i}.ReceivedOption.{i}.";
+          uses client-received-option-g;
+        }
+        list sent-option {
+          key "index";
+          description
+            "Device.DHCPv6.Client.{i}.SentOption.{i}.";
+          reference
+            "Device.DHCPv6.Client.{i}.SentOption.{i}.";
+          uses dhcpv6-client-sent-option-g;
+        }
+        list server {
+          key "index";
+          description
+            "Device.DHCPv6.Client.{i}.Server.{i}.";
+          reference
+            "Device.DHCPv6.Client.{i}.Server.{i}.";
+          uses client-server-g;
+        }
+      }
+      container server {
+        description
+          "Container for object class Device.DHCPv6.Server.";
+        reference
+          "Device.DHCPv6.Server.";
+        uses dhcpv6-server-g;
+        list pool {
+          key "index";
+          description
+            "Device.DHCPv6.Server.Pool.{i}.";
+          reference
+            "Device.DHCPv6.Server.Pool.{i}.";
+          uses dhcpv6-server-pool-g;
+          list client {
+            key "index";
+            description
+              "Device.DHCPv6.Server.Pool.{i}.Client.{i}.";
+            reference
+              "Device.DHCPv6.Server.Pool.{i}.Client.{i}.";
+            uses server-pool-client-g;
+            list ipv6-address {
+              key "index";
+              description
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.";
+              reference
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Address.{i}.";
+              uses client-ipv6-address-g;
+            }
+            list ipv6-prefix {
+              key "index";
+              description
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.";
+              reference
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.IPv6Prefix.{i}.";
+              uses client-ipv6-prefix-g;
+            }
+            list option {
+              key "index";
+              description
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.";
+              reference
+                "Device.DHCPv6.Server.Pool.{i}.Client.{i}.Option.{i}.";
+              uses pool-client-option-g;
+            }
+          }
+          list option {
+            key "index";
+            description
+              "Device.DHCPv6.Server.Pool.{i}.Option.{i}.";
+            reference
+              "Device.DHCPv6.Server.Pool.{i}.Option.{i}.";
+            uses server-pool-option-g;
+          }
+        }
+      }
+    }
+    container dlna {
+      description
+        "Container for object class Device.DLNA.";
+      reference
+        "Device.DLNA.";
+      uses device-dlna-g;
+      container capabilities {
+        description
+          "Container for object class Device.DLNA.Capabilities.";
+        reference
+          "Device.DLNA.Capabilities.";
+        uses dlna-capabilities-g;
+      }
+    }
+    container dns {
+      description
+        "Container for object class Device.DNS.";
+      reference
+        "Device.DNS.";
+      uses device-dns-g;
+      container client {
+        description
+          "Container for object class Device.DNS.Client.";
+        reference
+          "Device.DNS.Client.";
+        uses dns-client-g;
+        list server {
+          key "index";
+          description
+            "Device.DNS.Client.Server.{i}.";
+          reference
+            "Device.DNS.Client.Server.{i}.";
+          uses dns-client-server-g;
+        }
+      }
+      container diagnostics {
+        description
+          "Container for object class Device.DNS.Diagnostics.";
+        reference
+          "Device.DNS.Diagnostics.";
+        uses dns-diagnostics-g;
+        container ns-lookup-diagnostics {
+          description
+            "Container for object class Device.DNS.Diagnostics.NSLookupDiagnostics.";
+          reference
+            "Device.DNS.Diagnostics.NSLookupDiagnostics.";
+          uses diagnostics-ns-lookup-diagnostics-g;
+          list result {
+            key "index";
+            description
+              "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.";
+            reference
+              "Device.DNS.Diagnostics.NSLookupDiagnostics.Result.{i}.";
+            uses ns-lookup-diagnostics-result-g;
+          }
+        }
+      }
+      container relay {
+        description
+          "Container for object class Device.DNS.Relay.";
+        reference
+          "Device.DNS.Relay.";
+        uses dns-relay-g;
+        list forwarding {
+          key "index";
+          description
+            "Device.DNS.Relay.Forwarding.{i}.";
+          reference
+            "Device.DNS.Relay.Forwarding.{i}.";
+          uses dns-relay-forwarding-g;
+        }
+      }
+      container sd {
+        description
+          "Container for object class Device.DNS.SD.";
+        reference
+          "Device.DNS.SD.";
+        uses dns-sd-g;
+        list service {
+          key "index";
+          description
+            "Device.DNS.SD.Service.{i}.";
+          reference
+            "Device.DNS.SD.Service.{i}.";
+          uses sd-service-g;
+          list text-record {
+            key "index";
+            description
+              "Device.DNS.SD.Service.{i}.TextRecord.{i}.";
+            reference
+              "Device.DNS.SD.Service.{i}.TextRecord.{i}.";
+            uses service-text-record-g;
+          }
+        }
+      }
+    }
+    container dsl {
+      description
+        "Container for object class Device.DSL.";
+      reference
+        "Device.DSL.";
+      uses device-dsl-g;
+      list bonding-group {
+        key "index";
+        description
+          "Device.DSL.BondingGroup.{i}.";
+        reference
+          "Device.DSL.BondingGroup.{i}.";
+        uses dsl-bonding-group-g;
+        list bonded-channel {
+          key "index";
+          description
+            "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.";
+          reference
+            "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.";
+          uses bonding-group-bonded-channel-g;
+          container ethernet {
+            description
+              "Container for object class Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.";
+            reference
+              "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.";
+            uses bonded-channel-ethernet-g;
+            container stats {
+              description
+                "Container for object class Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.";
+              reference
+                "Device.DSL.BondingGroup.{i}.BondedChannel.{i}.Ethernet.Stats.";
+              uses ethernet-stats-g;
+            }
+          }
+        }
+        container ethernet {
+          description
+            "Container for object class Device.DSL.BondingGroup.{i}.Ethernet.";
+          reference
+            "Device.DSL.BondingGroup.{i}.Ethernet.";
+          uses bonding-group-ethernet-g;
+          container stats {
+            description
+              "Container for object class Device.DSL.BondingGroup.{i}.Ethernet.Stats.";
+            reference
+              "Device.DSL.BondingGroup.{i}.Ethernet.Stats.";
+            uses bonding-group-ethernet-stats-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.DSL.BondingGroup.{i}.Stats.";
+          reference
+            "Device.DSL.BondingGroup.{i}.Stats.";
+          uses bonding-group-stats-g;
+          container current-day {
+            description
+              "Container for object class Device.DSL.BondingGroup.{i}.Stats.CurrentDay.";
+            reference
+              "Device.DSL.BondingGroup.{i}.Stats.CurrentDay.";
+            uses stats-current-day-g;
+          }
+          container quarter-hour {
+            description
+              "Container for object class Device.DSL.BondingGroup.{i}.Stats.QuarterHour.";
+            reference
+              "Device.DSL.BondingGroup.{i}.Stats.QuarterHour.";
+            uses stats-quarter-hour-g;
+          }
+          container total {
+            description
+              "Container for object class Device.DSL.BondingGroup.{i}.Stats.Total.";
+            reference
+              "Device.DSL.BondingGroup.{i}.Stats.Total.";
+            uses stats-total-g;
+          }
+        }
+      }
+      list channel {
+        key "index";
+        description
+          "Device.DSL.Channel.{i}.";
+        reference
+          "Device.DSL.Channel.{i}.";
+        uses dsl-channel-g;
+        container stats {
+          description
+            "Container for object class Device.DSL.Channel.{i}.Stats.";
+          reference
+            "Device.DSL.Channel.{i}.Stats.";
+          uses channel-stats-g;
+          container current-day {
+            description
+              "Container for object class Device.DSL.Channel.{i}.Stats.CurrentDay.";
+            reference
+              "Device.DSL.Channel.{i}.Stats.CurrentDay.";
+            uses channel-stats-current-day-g;
+          }
+          container last-showtime {
+            description
+              "Container for object class Device.DSL.Channel.{i}.Stats.LastShowtime.";
+            reference
+              "Device.DSL.Channel.{i}.Stats.LastShowtime.";
+            uses stats-last-showtime-g;
+          }
+          container quarter-hour {
+            description
+              "Container for object class Device.DSL.Channel.{i}.Stats.QuarterHour.";
+            reference
+              "Device.DSL.Channel.{i}.Stats.QuarterHour.";
+            uses channel-stats-quarter-hour-g;
+          }
+          container showtime {
+            description
+              "Container for object class Device.DSL.Channel.{i}.Stats.Showtime.";
+            reference
+              "Device.DSL.Channel.{i}.Stats.Showtime.";
+            uses stats-showtime-g;
+          }
+          container total {
+            description
+              "Container for object class Device.DSL.Channel.{i}.Stats.Total.";
+            reference
+              "Device.DSL.Channel.{i}.Stats.Total.";
+            uses channel-stats-total-g;
+          }
+        }
+      }
+      container diagnostics {
+        description
+          "Container for object class Device.DSL.Diagnostics.";
+        reference
+          "Device.DSL.Diagnostics.";
+        uses dsl-diagnostics-g;
+        container adsl-line-test {
+          description
+            "Container for object class Device.DSL.Diagnostics.ADSLLineTest.";
+          reference
+            "Device.DSL.Diagnostics.ADSLLineTest.";
+          uses diagnostics-adsl-line-test-g;
+        }
+      }
+      list line {
+        key "index";
+        description
+          "Device.DSL.Line.{i}.";
+        reference
+          "Device.DSL.Line.{i}.";
+        uses dsl-line-g;
+        container data-gathering {
+          description
+            "Container for object class Device.DSL.Line.{i}.DataGathering.";
+          reference
+            "Device.DSL.Line.{i}.DataGathering.";
+          uses line-data-gathering-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.DSL.Line.{i}.Stats.";
+          reference
+            "Device.DSL.Line.{i}.Stats.";
+          uses line-stats-g;
+          container current-day {
+            description
+              "Container for object class Device.DSL.Line.{i}.Stats.CurrentDay.";
+            reference
+              "Device.DSL.Line.{i}.Stats.CurrentDay.";
+            uses line-stats-current-day-g;
+          }
+          container last-showtime {
+            description
+              "Container for object class Device.DSL.Line.{i}.Stats.LastShowtime.";
+            reference
+              "Device.DSL.Line.{i}.Stats.LastShowtime.";
+            uses line-stats-last-showtime-g;
+          }
+          container quarter-hour {
+            description
+              "Container for object class Device.DSL.Line.{i}.Stats.QuarterHour.";
+            reference
+              "Device.DSL.Line.{i}.Stats.QuarterHour.";
+            uses line-stats-quarter-hour-g;
+          }
+          container showtime {
+            description
+              "Container for object class Device.DSL.Line.{i}.Stats.Showtime.";
+            reference
+              "Device.DSL.Line.{i}.Stats.Showtime.";
+            uses line-stats-showtime-g;
+          }
+          container total {
+            description
+              "Container for object class Device.DSL.Line.{i}.Stats.Total.";
+            reference
+              "Device.DSL.Line.{i}.Stats.Total.";
+            uses line-stats-total-g;
+          }
+        }
+        container test-params {
+          description
+            "Container for object class Device.DSL.Line.{i}.TestParams.";
+          reference
+            "Device.DSL.Line.{i}.TestParams.";
+          uses line-test-params-g;
+        }
+      }
+    }
+    container ds-lite {
+      description
+        "Container for object class Device.DSLite.";
+      reference
+        "Device.DSLite.";
+      uses device-ds-lite-g;
+      list interface-setting {
+        key "index";
+        description
+          "Device.DSLite.InterfaceSetting.{i}.";
+        reference
+          "Device.DSLite.InterfaceSetting.{i}.";
+        uses ds-lite-interface-setting-g;
+      }
+    }
+    container device-info {
+      description
+        "Container for object class Device.DeviceInfo.";
+      reference
+        "Device.DeviceInfo.";
+      uses device-device-info-g;
+      list device-image-file {
+        key "index";
+        description
+          "Device.DeviceInfo.DeviceImageFile.{i}.";
+        reference
+          "Device.DeviceInfo.DeviceImageFile.{i}.";
+        uses device-info-device-image-file-g;
+      }
+      list firmware-image {
+        key "index";
+        description
+          "Device.DeviceInfo.FirmwareImage.{i}.";
+        reference
+          "Device.DeviceInfo.FirmwareImage.{i}.";
+        uses device-info-firmware-image-g;
+      }
+      list location {
+        key "index";
+        description
+          "Device.DeviceInfo.Location.{i}.";
+        reference
+          "Device.DeviceInfo.Location.{i}.";
+        uses device-info-location-g;
+      }
+      container memory-status {
+        description
+          "Container for object class Device.DeviceInfo.MemoryStatus.";
+        reference
+          "Device.DeviceInfo.MemoryStatus.";
+        uses device-info-memory-status-g;
+      }
+      container network-properties {
+        description
+          "Container for object class Device.DeviceInfo.NetworkProperties.";
+        reference
+          "Device.DeviceInfo.NetworkProperties.";
+        uses device-info-network-properties-g;
+      }
+      container process-status {
+        description
+          "Container for object class Device.DeviceInfo.ProcessStatus.";
+        reference
+          "Device.DeviceInfo.ProcessStatus.";
+        uses device-info-process-status-g;
+        list process {
+          key "index";
+          description
+            "Device.DeviceInfo.ProcessStatus.Process.{i}.";
+          reference
+            "Device.DeviceInfo.ProcessStatus.Process.{i}.";
+          uses process-status-process-g;
+        }
+      }
+      list processor {
+        key "index";
+        description
+          "Device.DeviceInfo.Processor.{i}.";
+        reference
+          "Device.DeviceInfo.Processor.{i}.";
+        uses device-info-processor-g;
+      }
+      container proxier-info {
+        description
+          "Container for object class Device.DeviceInfo.ProxierInfo.";
+        reference
+          "Device.DeviceInfo.ProxierInfo.";
+        uses device-info-proxier-info-g;
+      }
+      list supported-data-model {
+        key "index";
+        description
+          "Device.DeviceInfo.SupportedDataModel.{i}.";
+        reference
+          "Device.DeviceInfo.SupportedDataModel.{i}.";
+        uses device-info-supported-data-model-g;
+      }
+      container temperature-status {
+        description
+          "Container for object class Device.DeviceInfo.TemperatureStatus.";
+        reference
+          "Device.DeviceInfo.TemperatureStatus.";
+        uses device-info-temperature-status-g;
+        list temperature-sensor {
+          key "index";
+          description
+            "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.";
+          reference
+            "Device.DeviceInfo.TemperatureStatus.TemperatureSensor.{i}.";
+          uses temperature-status-temperature-sensor-g;
+        }
+      }
+      list vendor-config-file {
+        key "index";
+        description
+          "Device.DeviceInfo.VendorConfigFile.{i}.";
+        reference
+          "Device.DeviceInfo.VendorConfigFile.{i}.";
+        uses device-info-vendor-config-file-g;
+      }
+      list vendor-log-file {
+        key "index";
+        description
+          "Device.DeviceInfo.VendorLogFile.{i}.";
+        reference
+          "Device.DeviceInfo.VendorLogFile.{i}.";
+        uses device-info-vendor-log-file-g;
+      }
+    }
+    container dynamic-dns {
+      description
+        "Container for object class Device.DynamicDNS.";
+      reference
+        "Device.DynamicDNS.";
+      uses device-dynamic-dns-g;
+      list client {
+        key "index";
+        description
+          "Device.DynamicDNS.Client.{i}.";
+        reference
+          "Device.DynamicDNS.Client.{i}.";
+        uses dynamic-dns-client-g;
+        list hostname {
+          key "index";
+          description
+            "Device.DynamicDNS.Client.{i}.Hostname.{i}.";
+          reference
+            "Device.DynamicDNS.Client.{i}.Hostname.{i}.";
+          uses client-hostname-g;
+        }
+      }
+      list server {
+        key "index";
+        description
+          "Device.DynamicDNS.Server.{i}.";
+        reference
+          "Device.DynamicDNS.Server.{i}.";
+        uses dynamic-dns-server-g;
+      }
+    }
+    container etsi-m2-m {
+      description
+        "Container for object class Device.ETSIM2M.";
+      reference
+        "Device.ETSIM2M.";
+      uses device-etsi-m2-m-g;
+      list scl {
+        key "index";
+        description
+          "Device.ETSIM2M.SCL.{i}.";
+        reference
+          "Device.ETSIM2M.SCL.{i}.";
+        uses etsi-m2-m-scl-g;
+        list area-nwk-device-info-instance {
+          key "index";
+          description
+            "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.";
+          reference
+            "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.";
+          uses scl-area-nwk-device-info-instance-g;
+          list property {
+            key "index";
+            description
+              "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.";
+            reference
+              "Device.ETSIM2M.SCL.{i}.AreaNwkDeviceInfoInstance.{i}.Property.{i}.";
+            uses area-nwk-device-info-instance-property-g;
+          }
+        }
+        list area-nwk-instance {
+          key "index";
+          description
+            "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.";
+          reference
+            "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.";
+          uses scl-area-nwk-instance-g;
+          list property {
+            key "index";
+            description
+              "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.";
+            reference
+              "Device.ETSIM2M.SCL.{i}.AreaNwkInstance.{i}.Property.{i}.";
+            uses area-nwk-instance-property-g;
+          }
+        }
+        container discovery {
+          description
+            "Container for object class Device.ETSIM2M.SCL.{i}.Discovery.";
+          reference
+            "Device.ETSIM2M.SCL.{i}.Discovery.";
+          uses scl-discovery-g;
+        }
+        container reregistration {
+          description
+            "Container for object class Device.ETSIM2M.SCL.{i}.Reregistration.";
+          reference
+            "Device.ETSIM2M.SCL.{i}.Reregistration.";
+          uses scl-reregistration-g;
+          container action-status {
+            description
+              "Container for object class Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.";
+            reference
+              "Device.ETSIM2M.SCL.{i}.Reregistration.ActionStatus.";
+            uses reregistration-action-status-g;
+          }
+        }
+        list saf-policy-set {
+          key "index";
+          description
+            "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.";
+          reference
+            "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.";
+          uses scl-saf-policy-set-g;
+          list anp-policy {
+            key "index";
+            description
+              "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.";
+            reference
+              "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.";
+            uses saf-policy-set-anp-policy-g;
+            list block-period {
+              key "index";
+              description
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.";
+              reference
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.BlockPeriod.{i}.";
+              uses anp-policy-block-period-g;
+            }
+            list request-category {
+              key "index";
+              description
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.";
+              reference
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.";
+              uses anp-policy-request-category-g;
+              list schedule {
+                key "index";
+                description
+                  "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.";
+                reference
+                  "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.";
+                uses request-category-schedule-g;
+                list abs-time-span {
+                  key "index";
+                  description
+                    "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.";
+                  reference
+                    "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.ANPPolicy.{i}.RequestCategory.{i}.Schedule.{i}.AbsTimeSpan.{i}.";
+                  uses schedule-abs-time-span-g;
+                }
+              }
+            }
+          }
+          container m2-msp-policy {
+            description
+              "Container for object class Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.";
+            reference
+              "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.";
+            uses saf-policy-set-m2-msp-policy-g;
+            list request-category {
+              key "index";
+              description
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.";
+              reference
+                "Device.ETSIM2M.SCL.{i}.SAFPolicySet.{i}.M2MSPPolicy.RequestCategory.{i}.";
+              uses m2-msp-policy-request-category-g;
+            }
+          }
+        }
+      }
+    }
+    container ethernet {
+      description
+        "Container for object class Device.Ethernet.";
+      reference
+        "Device.Ethernet.";
+      uses device-ethernet-g;
+      list interface {
+        key "index";
+        description
+          "Device.Ethernet.Interface.{i}.";
+        reference
+          "Device.Ethernet.Interface.{i}.";
+        uses ethernet-interface-g;
+        container stats {
+          description
+            "Container for object class Device.Ethernet.Interface.{i}.Stats.";
+          reference
+            "Device.Ethernet.Interface.{i}.Stats.";
+          uses ethernet-interface-stats-g;
+        }
+      }
+      list lag {
+        key "index";
+        description
+          "Device.Ethernet.LAG.{i}.";
+        reference
+          "Device.Ethernet.LAG.{i}.";
+        uses ethernet-lag-g;
+        container stats {
+          description
+            "Container for object class Device.Ethernet.LAG.{i}.Stats.";
+          reference
+            "Device.Ethernet.LAG.{i}.Stats.";
+          uses lag-stats-g;
+        }
+      }
+      list link {
+        key "index";
+        description
+          "Device.Ethernet.Link.{i}.";
+        reference
+          "Device.Ethernet.Link.{i}.";
+        uses ethernet-link-g;
+        container stats {
+          description
+            "Container for object class Device.Ethernet.Link.{i}.Stats.";
+          reference
+            "Device.Ethernet.Link.{i}.Stats.";
+          uses ethernet-link-stats-g;
+        }
+      }
+      list rmon-stats {
+        key "index";
+        description
+          "Device.Ethernet.RMONStats.{i}.";
+        reference
+          "Device.Ethernet.RMONStats.{i}.";
+        uses ethernet-rmon-stats-g;
+      }
+      list vlan-termination {
+        key "index";
+        description
+          "Device.Ethernet.VLANTermination.{i}.";
+        reference
+          "Device.Ethernet.VLANTermination.{i}.";
+        uses ethernet-vlan-termination-g;
+        container stats {
+          description
+            "Container for object class Device.Ethernet.VLANTermination.{i}.Stats.";
+          reference
+            "Device.Ethernet.VLANTermination.{i}.Stats.";
+          uses vlan-termination-stats-g;
+        }
+      }
+    }
+    container fap {
+      description
+        "Container for object class Device.FAP.";
+      reference
+        "Device.FAP.";
+      uses device-fap-g;
+      container application-platform {
+        description
+          "Container for object class Device.FAP.ApplicationPlatform.";
+        reference
+          "Device.FAP.ApplicationPlatform.";
+        uses fap-application-platform-g;
+        container capabilities {
+          description
+            "Container for object class Device.FAP.ApplicationPlatform.Capabilities.";
+          reference
+            "Device.FAP.ApplicationPlatform.Capabilities.";
+          uses application-platform-capabilities-g;
+        }
+        container control {
+          description
+            "Container for object class Device.FAP.ApplicationPlatform.Control.";
+          reference
+            "Device.FAP.ApplicationPlatform.Control.";
+          uses application-platform-control-g;
+          container femto-awareness {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Control.FemtoAwareness.";
+            reference
+              "Device.FAP.ApplicationPlatform.Control.FemtoAwareness.";
+            uses control-femto-awareness-g;
+          }
+          container mms {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Control.MMS.";
+            reference
+              "Device.FAP.ApplicationPlatform.Control.MMS.";
+            uses control-mms-g;
+          }
+          container sms {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Control.SMS.";
+            reference
+              "Device.FAP.ApplicationPlatform.Control.SMS.";
+            uses control-sms-g;
+          }
+          container terminal-location {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Control.TerminalLocation.";
+            reference
+              "Device.FAP.ApplicationPlatform.Control.TerminalLocation.";
+            uses control-terminal-location-g;
+          }
+        }
+        container monitoring {
+          description
+            "Container for object class Device.FAP.ApplicationPlatform.Monitoring.";
+          reference
+            "Device.FAP.ApplicationPlatform.Monitoring.";
+          uses application-platform-monitoring-g;
+          container femto-awareness {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.";
+            reference
+              "Device.FAP.ApplicationPlatform.Monitoring.FemtoAwareness.";
+            uses monitoring-femto-awareness-g;
+          }
+          container mms {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Monitoring.MMS.";
+            reference
+              "Device.FAP.ApplicationPlatform.Monitoring.MMS.";
+            uses monitoring-mms-g;
+          }
+          container sms {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Monitoring.SMS.";
+            reference
+              "Device.FAP.ApplicationPlatform.Monitoring.SMS.";
+            uses monitoring-sms-g;
+          }
+          container terminal-location {
+            description
+              "Container for object class Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.";
+            reference
+              "Device.FAP.ApplicationPlatform.Monitoring.TerminalLocation.";
+            uses monitoring-terminal-location-g;
+          }
+        }
+      }
+      container gps {
+        description
+          "Container for object class Device.FAP.GPS.";
+        reference
+          "Device.FAP.GPS.";
+        uses fap-gps-g;
+        container agps-server-config {
+          description
+            "Container for object class Device.FAP.GPS.AGPSServerConfig.";
+          reference
+            "Device.FAP.GPS.AGPSServerConfig.";
+          uses gps-agps-server-config-g;
+        }
+        container continuous-gps-status {
+          description
+            "Container for object class Device.FAP.GPS.ContinuousGPSStatus.";
+          reference
+            "Device.FAP.GPS.ContinuousGPSStatus.";
+          uses gps-continuous-gps-status-g;
+        }
+      }
+      container perf-mgmt {
+        description
+          "Container for object class Device.FAP.PerfMgmt.";
+        reference
+          "Device.FAP.PerfMgmt.";
+        uses fap-perf-mgmt-g;
+        list config {
+          key "index";
+          description
+            "Device.FAP.PerfMgmt.Config.{i}.";
+          reference
+            "Device.FAP.PerfMgmt.Config.{i}.";
+          uses perf-mgmt-config-g;
+        }
+      }
+    }
+    container fast {
+      description
+        "Container for object class Device.FAST.";
+      reference
+        "Device.FAST.";
+      uses device-fast-g;
+      list line {
+        key "index";
+        description
+          "Device.FAST.Line.{i}.";
+        reference
+          "Device.FAST.Line.{i}.";
+        uses fast-line-g;
+        container stats {
+          description
+            "Container for object class Device.FAST.Line.{i}.Stats.";
+          reference
+            "Device.FAST.Line.{i}.Stats.";
+          uses fast-line-stats-g;
+          container current-day {
+            description
+              "Container for object class Device.FAST.Line.{i}.Stats.CurrentDay.";
+            reference
+              "Device.FAST.Line.{i}.Stats.CurrentDay.";
+            uses fast-line-stats-current-day-g;
+          }
+          container last-showtime {
+            description
+              "Container for object class Device.FAST.Line.{i}.Stats.LastShowtime.";
+            reference
+              "Device.FAST.Line.{i}.Stats.LastShowtime.";
+            uses fast-line-stats-last-showtime-g;
+          }
+          container quarter-hour {
+            description
+              "Container for object class Device.FAST.Line.{i}.Stats.QuarterHour.";
+            reference
+              "Device.FAST.Line.{i}.Stats.QuarterHour.";
+            uses fast-line-stats-quarter-hour-g;
+          }
+          container showtime {
+            description
+              "Container for object class Device.FAST.Line.{i}.Stats.Showtime.";
+            reference
+              "Device.FAST.Line.{i}.Stats.Showtime.";
+            uses fast-line-stats-showtime-g;
+          }
+          container total {
+            description
+              "Container for object class Device.FAST.Line.{i}.Stats.Total.";
+            reference
+              "Device.FAST.Line.{i}.Stats.Total.";
+            uses fast-line-stats-total-g;
+          }
+        }
+        container test-params {
+          description
+            "Container for object class Device.FAST.Line.{i}.TestParams.";
+          reference
+            "Device.FAST.Line.{i}.TestParams.";
+          uses fast-line-test-params-g;
+        }
+      }
+    }
+    container fault-mgmt {
+      description
+        "Container for object class Device.FaultMgmt.";
+      reference
+        "Device.FaultMgmt.";
+      uses device-fault-mgmt-g;
+      list current-alarm {
+        key "index";
+        description
+          "Device.FaultMgmt.CurrentAlarm.{i}.";
+        reference
+          "Device.FaultMgmt.CurrentAlarm.{i}.";
+        uses fault-mgmt-current-alarm-g;
+      }
+      list expedited-event {
+        key "index";
+        description
+          "Device.FaultMgmt.ExpeditedEvent.{i}.";
+        reference
+          "Device.FaultMgmt.ExpeditedEvent.{i}.";
+        uses fault-mgmt-expedited-event-g;
+      }
+      list history-event {
+        key "index";
+        description
+          "Device.FaultMgmt.HistoryEvent.{i}.";
+        reference
+          "Device.FaultMgmt.HistoryEvent.{i}.";
+        uses fault-mgmt-history-event-g;
+      }
+      list queued-event {
+        key "index";
+        description
+          "Device.FaultMgmt.QueuedEvent.{i}.";
+        reference
+          "Device.FaultMgmt.QueuedEvent.{i}.";
+        uses fault-mgmt-queued-event-g;
+      }
+      list supported-alarm {
+        key "index";
+        description
+          "Device.FaultMgmt.SupportedAlarm.{i}.";
+        reference
+          "Device.FaultMgmt.SupportedAlarm.{i}.";
+        uses fault-mgmt-supported-alarm-g;
+      }
+    }
+    container firewall {
+      description
+        "Container for object class Device.Firewall.";
+      reference
+        "Device.Firewall.";
+      uses device-firewall-g;
+      list chain {
+        key "index";
+        description
+          "Device.Firewall.Chain.{i}.";
+        reference
+          "Device.Firewall.Chain.{i}.";
+        uses firewall-chain-g;
+        list rule {
+          key "index";
+          description
+            "Device.Firewall.Chain.{i}.Rule.{i}.";
+          reference
+            "Device.Firewall.Chain.{i}.Rule.{i}.";
+          uses chain-rule-g;
+        }
+      }
+      list level {
+        key "index";
+        description
+          "Device.Firewall.Level.{i}.";
+        reference
+          "Device.Firewall.Level.{i}.";
+        uses firewall-level-g;
+      }
+    }
+    container gre {
+      description
+        "Container for object class Device.GRE.";
+      reference
+        "Device.GRE.";
+      uses device-gre-g;
+      list filter {
+        key "index";
+        description
+          "Device.GRE.Filter.{i}.";
+        reference
+          "Device.GRE.Filter.{i}.";
+        uses gre-filter-g;
+      }
+      list tunnel {
+        key "index";
+        description
+          "Device.GRE.Tunnel.{i}.";
+        reference
+          "Device.GRE.Tunnel.{i}.";
+        uses gre-tunnel-g;
+        list interface {
+          key "index";
+          description
+            "Device.GRE.Tunnel.{i}.Interface.{i}.";
+          reference
+            "Device.GRE.Tunnel.{i}.Interface.{i}.";
+          uses tunnel-interface-g;
+          container stats {
+            description
+              "Container for object class Device.GRE.Tunnel.{i}.Interface.{i}.Stats.";
+            reference
+              "Device.GRE.Tunnel.{i}.Interface.{i}.Stats.";
+            uses tunnel-interface-stats-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.GRE.Tunnel.{i}.Stats.";
+          reference
+            "Device.GRE.Tunnel.{i}.Stats.";
+          uses tunnel-stats-g;
+        }
+      }
+    }
+    container gateway-info {
+      description
+        "Container for object class Device.GatewayInfo.";
+      reference
+        "Device.GatewayInfo.";
+      uses device-gateway-info-g;
+    }
+    container ghn {
+      description
+        "Container for object class Device.Ghn.";
+      reference
+        "Device.Ghn.";
+      uses device-ghn-g;
+      container diagnostics {
+        description
+          "Container for object class Device.Ghn.Diagnostics.";
+        reference
+          "Device.Ghn.Diagnostics.";
+        uses ghn-diagnostics-g;
+        container phy-throughput {
+          description
+            "Container for object class Device.Ghn.Diagnostics.PHYThroughput.";
+          reference
+            "Device.Ghn.Diagnostics.PHYThroughput.";
+          uses diagnostics-phy-throughput-g;
+          list result {
+            key "index";
+            description
+              "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.";
+            reference
+              "Device.Ghn.Diagnostics.PHYThroughput.Result.{i}.";
+            uses phy-throughput-result-g;
+          }
+        }
+        container performance-monitoring {
+          description
+            "Container for object class Device.Ghn.Diagnostics.PerformanceMonitoring.";
+          reference
+            "Device.Ghn.Diagnostics.PerformanceMonitoring.";
+          uses diagnostics-performance-monitoring-g;
+          container channels {
+            description
+              "Container for object class Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.";
+            reference
+              "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.";
+            uses performance-monitoring-channels-g;
+            list channel {
+              key "index";
+              description
+                "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+              reference
+                "Device.Ghn.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+              uses channels-channel-g;
+            }
+          }
+          container nodes {
+            description
+              "Container for object class Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.";
+            reference
+              "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.";
+            uses performance-monitoring-nodes-g;
+            list node {
+              key "index";
+              description
+                "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+              reference
+                "Device.Ghn.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+              uses nodes-node-g;
+            }
+          }
+        }
+      }
+      list interface {
+        key "index";
+        description
+          "Device.Ghn.Interface.{i}.";
+        reference
+          "Device.Ghn.Interface.{i}.";
+        uses ghn-interface-g;
+        list associated-device {
+          key "index";
+          description
+            "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.Ghn.Interface.{i}.AssociatedDevice.{i}.";
+          uses interface-associated-device-g;
+        }
+        container dm-info {
+          description
+            "Container for object class Device.Ghn.Interface.{i}.DMInfo.";
+          reference
+            "Device.Ghn.Interface.{i}.DMInfo.";
+          uses interface-dm-info-g;
+        }
+        container sc-info {
+          description
+            "Container for object class Device.Ghn.Interface.{i}.SCInfo.";
+          reference
+            "Device.Ghn.Interface.{i}.SCInfo.";
+          uses interface-sc-info-g;
+        }
+        list sm-masked-band {
+          key "index";
+          description
+            "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.";
+          reference
+            "Device.Ghn.Interface.{i}.SMMaskedBand.{i}.";
+          uses interface-sm-masked-band-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.Ghn.Interface.{i}.Stats.";
+          reference
+            "Device.Ghn.Interface.{i}.Stats.";
+          uses ghn-interface-stats-g;
+        }
+      }
+    }
+    container hpna {
+      description
+        "Container for object class Device.HPNA.";
+      reference
+        "Device.HPNA.";
+      uses device-hpna-g;
+      container diagnostics {
+        description
+          "Container for object class Device.HPNA.Diagnostics.";
+        reference
+          "Device.HPNA.Diagnostics.";
+        uses hpna-diagnostics-g;
+        container phy-throughput {
+          description
+            "Container for object class Device.HPNA.Diagnostics.PHYThroughput.";
+          reference
+            "Device.HPNA.Diagnostics.PHYThroughput.";
+          uses hpna-diagnostics-phy-throughput-g;
+          list result {
+            key "index";
+            description
+              "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.";
+            reference
+              "Device.HPNA.Diagnostics.PHYThroughput.Result.{i}.";
+            uses diagnostics-phy-throughput-result-g;
+          }
+        }
+        container performance-monitoring {
+          description
+            "Container for object class Device.HPNA.Diagnostics.PerformanceMonitoring.";
+          reference
+            "Device.HPNA.Diagnostics.PerformanceMonitoring.";
+          uses hpna-diagnostics-performance-monitoring-g;
+          container channels {
+            description
+              "Container for object class Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.";
+            reference
+              "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.";
+            uses diagnostics-performance-monitoring-channels-g;
+            list channel {
+              key "index";
+              description
+                "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+              reference
+                "Device.HPNA.Diagnostics.PerformanceMonitoring.Channels.Channel.{i}.";
+              uses performance-monitoring-channels-channel-g;
+            }
+          }
+          container nodes {
+            description
+              "Container for object class Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.";
+            reference
+              "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.";
+            uses diagnostics-performance-monitoring-nodes-g;
+            list node {
+              key "index";
+              description
+                "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+              reference
+                "Device.HPNA.Diagnostics.PerformanceMonitoring.Nodes.Node.{i}.";
+              uses performance-monitoring-nodes-node-g;
+            }
+          }
+        }
+      }
+      list interface {
+        key "index";
+        description
+          "Device.HPNA.Interface.{i}.";
+        reference
+          "Device.HPNA.Interface.{i}.";
+        uses hpna-interface-g;
+        list associated-device {
+          key "index";
+          description
+            "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.HPNA.Interface.{i}.AssociatedDevice.{i}.";
+          uses hpna-interface-associated-device-g;
+        }
+        container qo-s {
+          description
+            "Container for object class Device.HPNA.Interface.{i}.QoS.";
+          reference
+            "Device.HPNA.Interface.{i}.QoS.";
+          uses interface-qo-s-g;
+          list flow-spec {
+            key "index";
+            description
+              "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.";
+            reference
+              "Device.HPNA.Interface.{i}.QoS.FlowSpec.{i}.";
+            uses qo-s-flow-spec-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.HPNA.Interface.{i}.Stats.";
+          reference
+            "Device.HPNA.Interface.{i}.Stats.";
+          uses hpna-interface-stats-g;
+        }
+      }
+    }
+    container home-plug {
+      description
+        "Container for object class Device.HomePlug.";
+      reference
+        "Device.HomePlug.";
+      uses device-home-plug-g;
+      list interface {
+        key "index";
+        description
+          "Device.HomePlug.Interface.{i}.";
+        reference
+          "Device.HomePlug.Interface.{i}.";
+        uses home-plug-interface-g;
+        list associated-device {
+          key "index";
+          description
+            "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.HomePlug.Interface.{i}.AssociatedDevice.{i}.";
+          uses home-plug-interface-associated-device-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.HomePlug.Interface.{i}.Stats.";
+          reference
+            "Device.HomePlug.Interface.{i}.Stats.";
+          uses home-plug-interface-stats-g;
+        }
+      }
+    }
+    container hosts {
+      description
+        "Container for object class Device.Hosts.";
+      reference
+        "Device.Hosts.";
+      uses device-hosts-g;
+      list host {
+        key "index";
+        description
+          "Device.Hosts.Host.{i}.";
+        reference
+          "Device.Hosts.Host.{i}.";
+        uses hosts-host-g;
+        list ipv4-address {
+          key "index";
+          description
+            "Device.Hosts.Host.{i}.IPv4Address.{i}.";
+          reference
+            "Device.Hosts.Host.{i}.IPv4Address.{i}.";
+          uses host-ipv4-address-g;
+        }
+        list ipv6-address {
+          key "index";
+          description
+            "Device.Hosts.Host.{i}.IPv6Address.{i}.";
+          reference
+            "Device.Hosts.Host.{i}.IPv6Address.{i}.";
+          uses host-ipv6-address-g;
+        }
+        container wan-stats {
+          description
+            "Container for object class Device.Hosts.Host.{i}.WANStats.";
+          reference
+            "Device.Hosts.Host.{i}.WANStats.";
+          uses host-wan-stats-g;
+        }
+      }
+    }
+    container ieee1905 {
+      description
+        "Container for object class Device.IEEE1905.";
+      reference
+        "Device.IEEE1905.";
+      uses device-ieee1905-g;
+      container al {
+        description
+          "Container for object class Device.IEEE1905.AL.";
+        reference
+          "Device.IEEE1905.AL.";
+        uses ieee1905-al-g;
+        container forwarding-table {
+          description
+            "Container for object class Device.IEEE1905.AL.ForwardingTable.";
+          reference
+            "Device.IEEE1905.AL.ForwardingTable.";
+          uses al-forwarding-table-g;
+          list forwarding-rule {
+            key "index";
+            description
+              "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.";
+            reference
+              "Device.IEEE1905.AL.ForwardingTable.ForwardingRule.{i}.";
+            uses forwarding-table-forwarding-rule-g;
+          }
+        }
+        list interface {
+          key "index";
+          description
+            "Device.IEEE1905.AL.Interface.{i}.";
+          reference
+            "Device.IEEE1905.AL.Interface.{i}.";
+          uses al-interface-g;
+          list link {
+            key "index";
+            description
+              "Device.IEEE1905.AL.Interface.{i}.Link.{i}.";
+            reference
+              "Device.IEEE1905.AL.Interface.{i}.Link.{i}.";
+            uses interface-link-g;
+            container metric {
+              description
+                "Container for object class Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.";
+              reference
+                "Device.IEEE1905.AL.Interface.{i}.Link.{i}.Metric.";
+              uses link-metric-g;
+            }
+          }
+          list vendor-properties {
+            key "index";
+            description
+              "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.";
+            reference
+              "Device.IEEE1905.AL.Interface.{i}.VendorProperties.{i}.";
+            uses interface-vendor-properties-g;
+          }
+        }
+        container network-topology {
+          description
+            "Container for object class Device.IEEE1905.AL.NetworkTopology.";
+          reference
+            "Device.IEEE1905.AL.NetworkTopology.";
+          uses al-network-topology-g;
+          list change-log {
+            key "index";
+            description
+              "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.";
+            reference
+              "Device.IEEE1905.AL.NetworkTopology.ChangeLog.{i}.";
+            uses network-topology-change-log-g;
+          }
+          list ieee1905-device {
+            key "index";
+            description
+              "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.";
+            reference
+              "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.";
+            uses network-topology-ieee1905-device-g;
+            list bridging-tuple {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTuple.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.BridgingTuple.{i}.";
+              uses ieee1905-device-bridging-tuple-g;
+            }
+            list ieee1905-neighbor {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.";
+              uses ieee1905-device-ieee1905-neighbor-g;
+              list metric {
+                key "index";
+                description
+                  "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.";
+                reference
+                  "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IEEE1905Neighbor.{i}.Metric.{i}.";
+                uses ieee1905-neighbor-metric-g;
+              }
+            }
+            list ipv4-address {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv4Address.{i}.";
+              uses ieee1905-device-ipv4-address-g;
+            }
+            list ipv6-address {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.IPv6Address.{i}.";
+              uses ieee1905-device-ipv6-address-g;
+            }
+            list interface {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.Interface.{i}.";
+              uses ieee1905-device-interface-g;
+            }
+            list l2-neighbor {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.L2Neighbor.{i}.";
+              uses ieee1905-device-l2-neighbor-g;
+            }
+            list non-ieee1905-neighbor {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.NonIEEE1905Neighbor.{i}.";
+              uses ieee1905-device-non-ieee1905-neighbor-g;
+            }
+            list vendor-properties {
+              key "index";
+              description
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.";
+              reference
+                "Device.IEEE1905.AL.NetworkTopology.IEEE1905Device.{i}.VendorProperties.{i}.";
+              uses ieee1905-device-vendor-properties-g;
+            }
+          }
+        }
+        container networking-registrar {
+          description
+            "Container for object class Device.IEEE1905.AL.NetworkingRegistrar.";
+          reference
+            "Device.IEEE1905.AL.NetworkingRegistrar.";
+          uses al-networking-registrar-g;
+        }
+        container security {
+          description
+            "Container for object class Device.IEEE1905.AL.Security.";
+          reference
+            "Device.IEEE1905.AL.Security.";
+          uses al-security-g;
+        }
+      }
+    }
+    container ieee8021x {
+      description
+        "Container for object class Device.IEEE8021x.";
+      reference
+        "Device.IEEE8021x.";
+      uses device-ieee8021x-g;
+      list supplicant {
+        key "index";
+        description
+          "Device.IEEE8021x.Supplicant.{i}.";
+        reference
+          "Device.IEEE8021x.Supplicant.{i}.";
+        uses ieee8021x-supplicant-g;
+        container eapm-d5 {
+          description
+            "Container for object class Device.IEEE8021x.Supplicant.{i}.EAPMD5.";
+          reference
+            "Device.IEEE8021x.Supplicant.{i}.EAPMD5.";
+          uses supplicant-eapm-d5-g;
+        }
+        container eaptls {
+          description
+            "Container for object class Device.IEEE8021x.Supplicant.{i}.EAPTLS.";
+          reference
+            "Device.IEEE8021x.Supplicant.{i}.EAPTLS.";
+          uses supplicant-eaptls-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.IEEE8021x.Supplicant.{i}.Stats.";
+          reference
+            "Device.IEEE8021x.Supplicant.{i}.Stats.";
+          uses supplicant-stats-g;
+        }
+      }
+    }
+    container ip {
+      description
+        "Container for object class Device.IP.";
+      reference
+        "Device.IP.";
+      uses device-ip-g;
+      list active-port {
+        key "index";
+        description
+          "Device.IP.ActivePort.{i}.";
+        reference
+          "Device.IP.ActivePort.{i}.";
+        uses ip-active-port-g;
+      }
+      container diagnostics {
+        description
+          "Container for object class Device.IP.Diagnostics.";
+        reference
+          "Device.IP.Diagnostics.";
+        uses ip-diagnostics-g;
+        container download-diagnostics {
+          description
+            "Container for object class Device.IP.Diagnostics.DownloadDiagnostics.";
+          reference
+            "Device.IP.Diagnostics.DownloadDiagnostics.";
+          uses diagnostics-download-diagnostics-g;
+          list incremental-result {
+            key "index";
+            description
+              "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.";
+            reference
+              "Device.IP.Diagnostics.DownloadDiagnostics.IncrementalResult.{i}.";
+            uses download-diagnostics-incremental-result-g;
+          }
+          list per-connection-result {
+            key "index";
+            description
+              "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.";
+            reference
+              "Device.IP.Diagnostics.DownloadDiagnostics.PerConnectionResult.{i}.";
+            uses download-diagnostics-per-connection-result-g;
+          }
+        }
+        container ip-ping {
+          description
+            "Container for object class Device.IP.Diagnostics.IPPing.";
+          reference
+            "Device.IP.Diagnostics.IPPing.";
+          uses diagnostics-ip-ping-g;
+        }
+        container server-selection-diagnostics {
+          description
+            "Container for object class Device.IP.Diagnostics.ServerSelectionDiagnostics.";
+          reference
+            "Device.IP.Diagnostics.ServerSelectionDiagnostics.";
+          uses diagnostics-server-selection-diagnostics-g;
+        }
+        container trace-route {
+          description
+            "Container for object class Device.IP.Diagnostics.TraceRoute.";
+          reference
+            "Device.IP.Diagnostics.TraceRoute.";
+          uses diagnostics-trace-route-g;
+          list route-hops {
+            key "index";
+            description
+              "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.";
+            reference
+              "Device.IP.Diagnostics.TraceRoute.RouteHops.{i}.";
+            uses trace-route-route-hops-g;
+          }
+        }
+        container udp-echo-config {
+          description
+            "Container for object class Device.IP.Diagnostics.UDPEchoConfig.";
+          reference
+            "Device.IP.Diagnostics.UDPEchoConfig.";
+          uses diagnostics-udp-echo-config-g;
+        }
+        container udp-echo-diagnostics {
+          description
+            "Container for object class Device.IP.Diagnostics.UDPEchoDiagnostics.";
+          reference
+            "Device.IP.Diagnostics.UDPEchoDiagnostics.";
+          uses diagnostics-udp-echo-diagnostics-g;
+          list individual-packet-result {
+            key "index";
+            description
+              "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.";
+            reference
+              "Device.IP.Diagnostics.UDPEchoDiagnostics.IndividualPacketResult.{i}.";
+            uses udp-echo-diagnostics-individual-packet-result-g;
+          }
+        }
+        container upload-diagnostics {
+          description
+            "Container for object class Device.IP.Diagnostics.UploadDiagnostics.";
+          reference
+            "Device.IP.Diagnostics.UploadDiagnostics.";
+          uses diagnostics-upload-diagnostics-g;
+          list incremental-result {
+            key "index";
+            description
+              "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.";
+            reference
+              "Device.IP.Diagnostics.UploadDiagnostics.IncrementalResult.{i}.";
+            uses upload-diagnostics-incremental-result-g;
+          }
+          list per-connection-result {
+            key "index";
+            description
+              "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.";
+            reference
+              "Device.IP.Diagnostics.UploadDiagnostics.PerConnectionResult.{i}.";
+            uses upload-diagnostics-per-connection-result-g;
+          }
+        }
+      }
+      list interface {
+        key "index";
+        description
+          "Device.IP.Interface.{i}.";
+        reference
+          "Device.IP.Interface.{i}.";
+        uses ip-interface-g;
+        list ipv4-address {
+          key "index";
+          description
+            "Device.IP.Interface.{i}.IPv4Address.{i}.";
+          reference
+            "Device.IP.Interface.{i}.IPv4Address.{i}.";
+          uses interface-ipv4-address-g;
+        }
+        list ipv6-address {
+          key "index";
+          description
+            "Device.IP.Interface.{i}.IPv6Address.{i}.";
+          reference
+            "Device.IP.Interface.{i}.IPv6Address.{i}.";
+          uses interface-ipv6-address-g;
+        }
+        list ipv6-prefix {
+          key "index";
+          description
+            "Device.IP.Interface.{i}.IPv6Prefix.{i}.";
+          reference
+            "Device.IP.Interface.{i}.IPv6Prefix.{i}.";
+          uses interface-ipv6-prefix-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.IP.Interface.{i}.Stats.";
+          reference
+            "Device.IP.Interface.{i}.Stats.";
+          uses ip-interface-stats-g;
+        }
+        list twamp-reflector {
+          key "index";
+          description
+            "Device.IP.Interface.{i}.TWAMPReflector.{i}.";
+          reference
+            "Device.IP.Interface.{i}.TWAMPReflector.{i}.";
+          uses interface-twamp-reflector-g;
+        }
+      }
+    }
+    container i-psec {
+      description
+        "Container for object class Device.IPsec.";
+      reference
+        "Device.IPsec.";
+      uses device-i-psec-g;
+      list filter {
+        key "index";
+        description
+          "Device.IPsec.Filter.{i}.";
+        reference
+          "Device.IPsec.Filter.{i}.";
+        uses i-psec-filter-g;
+      }
+      list ikev2-sa {
+        key "index";
+        description
+          "Device.IPsec.IKEv2SA.{i}.";
+        reference
+          "Device.IPsec.IKEv2SA.{i}.";
+        uses i-psec-ikev2-sa-g;
+        list child-sa {
+          key "index";
+          description
+            "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.";
+          reference
+            "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.";
+          uses ikev2-sa-child-sa-g;
+          container stats {
+            description
+              "Container for object class Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.";
+            reference
+              "Device.IPsec.IKEv2SA.{i}.ChildSA.{i}.Stats.";
+            uses child-sa-stats-g;
+          }
+        }
+        list received-cp-attr {
+          key "index";
+          description
+            "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.";
+          reference
+            "Device.IPsec.IKEv2SA.{i}.ReceivedCPAttr.{i}.";
+          uses ikev2-sa-received-cp-attr-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.IPsec.IKEv2SA.{i}.Stats.";
+          reference
+            "Device.IPsec.IKEv2SA.{i}.Stats.";
+          uses ikev2-sa-stats-g;
+        }
+      }
+      list profile {
+        key "index";
+        description
+          "Device.IPsec.Profile.{i}.";
+        reference
+          "Device.IPsec.Profile.{i}.";
+        uses i-psec-profile-g;
+        list sent-cp-attr {
+          key "index";
+          description
+            "Device.IPsec.Profile.{i}.SentCPAttr.{i}.";
+          reference
+            "Device.IPsec.Profile.{i}.SentCPAttr.{i}.";
+          uses profile-sent-cp-attr-g;
+        }
+      }
+      container stats {
+        description
+          "Container for object class Device.IPsec.Stats.";
+        reference
+          "Device.IPsec.Stats.";
+        uses i-psec-stats-g;
+      }
+      list tunnel {
+        key "index";
+        description
+          "Device.IPsec.Tunnel.{i}.";
+        reference
+          "Device.IPsec.Tunnel.{i}.";
+        uses i-psec-tunnel-g;
+        container stats {
+          description
+            "Container for object class Device.IPsec.Tunnel.{i}.Stats.";
+          reference
+            "Device.IPsec.Tunnel.{i}.Stats.";
+          uses i-psec-tunnel-stats-g;
+        }
+      }
+    }
+    container ipv6rd {
+      description
+        "Container for object class Device.IPv6rd.";
+      reference
+        "Device.IPv6rd.";
+      uses device-ipv6rd-g;
+      list interface-setting {
+        key "index";
+        description
+          "Device.IPv6rd.InterfaceSetting.{i}.";
+        reference
+          "Device.IPv6rd.InterfaceSetting.{i}.";
+        uses ipv6rd-interface-setting-g;
+      }
+    }
+    list interface-stack {
+      key "index";
+      description
+        "Device.InterfaceStack.{i}.";
+      reference
+        "Device.InterfaceStack.{i}.";
+      uses device-interface-stack-g;
+    }
+    container l2-tpv3 {
+      description
+        "Container for object class Device.L2TPv3.";
+      reference
+        "Device.L2TPv3.";
+      uses device-l2-tpv3-g;
+      list filter {
+        key "index";
+        description
+          "Device.L2TPv3.Filter.{i}.";
+        reference
+          "Device.L2TPv3.Filter.{i}.";
+        uses l2-tpv3-filter-g;
+      }
+      list tunnel {
+        key "index";
+        description
+          "Device.L2TPv3.Tunnel.{i}.";
+        reference
+          "Device.L2TPv3.Tunnel.{i}.";
+        uses l2-tpv3-tunnel-g;
+        list interface {
+          key "index";
+          description
+            "Device.L2TPv3.Tunnel.{i}.Interface.{i}.";
+          reference
+            "Device.L2TPv3.Tunnel.{i}.Interface.{i}.";
+          uses l2-tpv3-tunnel-interface-g;
+          container stats {
+            description
+              "Container for object class Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.";
+            reference
+              "Device.L2TPv3.Tunnel.{i}.Interface.{i}.Stats.";
+            uses l2-tpv3-tunnel-interface-stats-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.L2TPv3.Tunnel.{i}.Stats.";
+          reference
+            "Device.L2TPv3.Tunnel.{i}.Stats.";
+          uses l2-tpv3-tunnel-stats-g;
+        }
+        container udp {
+          description
+            "Container for object class Device.L2TPv3.Tunnel.{i}.UDP.";
+          reference
+            "Device.L2TPv3.Tunnel.{i}.UDP.";
+          uses tunnel-udp-g;
+        }
+      }
+    }
+    container lan-config-security {
+      description
+        "Container for object class Device.LANConfigSecurity.";
+      reference
+        "Device.LANConfigSecurity.";
+      uses device-lan-config-security-g;
+    }
+    container le-ds {
+      description
+        "Container for object class Device.LEDs.";
+      reference
+        "Device.LEDs.";
+      uses device-le-ds-g;
+      list led {
+        key "index";
+        description
+          "Device.LEDs.LED.{i}.";
+        reference
+          "Device.LEDs.LED.{i}.";
+        uses le-ds-led-g;
+        container current-cycle-element {
+          description
+            "Container for object class Device.LEDs.LED.{i}.CurrentCycleElement.";
+          reference
+            "Device.LEDs.LED.{i}.CurrentCycleElement.";
+          uses led-current-cycle-element-g;
+        }
+        list cycle-element {
+          key "index";
+          description
+            "Device.LEDs.LED.{i}.CycleElement.{i}.";
+          reference
+            "Device.LEDs.LED.{i}.CycleElement.{i}.";
+          uses led-cycle-element-g;
+        }
+      }
+    }
+    container lldp {
+      description
+        "Container for object class Device.LLDP.";
+      reference
+        "Device.LLDP.";
+      uses device-lldp-g;
+      container discovery {
+        description
+          "Container for object class Device.LLDP.Discovery.";
+        reference
+          "Device.LLDP.Discovery.";
+        uses lldp-discovery-g;
+        list device {
+          key "index";
+          description
+            "Device.LLDP.Discovery.Device.{i}.";
+          reference
+            "Device.LLDP.Discovery.Device.{i}.";
+          uses discovery-device-g;
+          container device-information {
+            description
+              "Container for object class Device.LLDP.Discovery.Device.{i}.DeviceInformation.";
+            reference
+              "Device.LLDP.Discovery.Device.{i}.DeviceInformation.";
+            uses device-device-information-g;
+            list vendor-specific {
+              key "index";
+              description
+                "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.";
+              reference
+                "Device.LLDP.Discovery.Device.{i}.DeviceInformation.VendorSpecific.{i}.";
+              uses device-information-vendor-specific-g;
+            }
+          }
+          list port {
+            key "index";
+            description
+              "Device.LLDP.Discovery.Device.{i}.Port.{i}.";
+            reference
+              "Device.LLDP.Discovery.Device.{i}.Port.{i}.";
+            uses device-port-g;
+            container link-information {
+              description
+                "Container for object class Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.";
+              reference
+                "Device.LLDP.Discovery.Device.{i}.Port.{i}.LinkInformation.";
+              uses port-link-information-g;
+            }
+          }
+        }
+      }
+    }
+    container lmap {
+      description
+        "Container for object class Device.LMAP.";
+      reference
+        "Device.LMAP.";
+      uses device-lmap-g;
+      list event {
+        key "index";
+        description
+          "Device.LMAP.Event.{i}.";
+        reference
+          "Device.LMAP.Event.{i}.";
+        uses lmap-event-g;
+        container calendar-timer {
+          description
+            "Container for object class Device.LMAP.Event.{i}.CalendarTimer.";
+          reference
+            "Device.LMAP.Event.{i}.CalendarTimer.";
+          uses event-calendar-timer-g;
+        }
+        container one-off {
+          description
+            "Container for object class Device.LMAP.Event.{i}.OneOff.";
+          reference
+            "Device.LMAP.Event.{i}.OneOff.";
+          uses event-one-off-g;
+        }
+        container periodic-timer {
+          description
+            "Container for object class Device.LMAP.Event.{i}.PeriodicTimer.";
+          reference
+            "Device.LMAP.Event.{i}.PeriodicTimer.";
+          uses event-periodic-timer-g;
+        }
+      }
+      list measurement-agent {
+        key "index";
+        description
+          "Device.LMAP.MeasurementAgent.{i}.";
+        reference
+          "Device.LMAP.MeasurementAgent.{i}.";
+        uses lmap-measurement-agent-g;
+        list communication-channel {
+          key "index";
+          description
+            "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.CommunicationChannel.{i}.";
+          uses measurement-agent-communication-channel-g;
+        }
+        container controller {
+          description
+            "Container for object class Device.LMAP.MeasurementAgent.{i}.Controller.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.Controller.";
+          uses measurement-agent-controller-g;
+        }
+        list instruction {
+          key "index";
+          description
+            "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.";
+          uses measurement-agent-instruction-g;
+          list measurement-suppression {
+            key "index";
+            description
+              "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.Instruction.{i}.MeasurementSuppression.{i}.";
+            uses instruction-measurement-suppression-g;
+          }
+        }
+        list schedule {
+          key "index";
+          description
+            "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.";
+          uses measurement-agent-schedule-g;
+          list action {
+            key "index";
+            description
+              "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.";
+            uses schedule-action-g;
+            list option {
+              key "index";
+              description
+                "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.";
+              reference
+                "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Option.{i}.";
+              uses action-option-g;
+            }
+            container stats {
+              description
+                "Container for object class Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.";
+              reference
+                "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Action.{i}.Stats.";
+              uses action-stats-g;
+            }
+          }
+          container stats {
+            description
+              "Container for object class Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.Schedule.{i}.Stats.";
+            uses schedule-stats-g;
+          }
+        }
+        list task {
+          key "index";
+          description
+            "Device.LMAP.MeasurementAgent.{i}.Task.{i}.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.Task.{i}.";
+          uses measurement-agent-task-g;
+          list option {
+            key "index";
+            description
+              "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Option.{i}.";
+            uses task-option-g;
+          }
+          list registry {
+            key "index";
+            description
+              "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.Task.{i}.Registry.{i}.";
+            uses task-registry-g;
+          }
+        }
+        list task-capability {
+          key "index";
+          description
+            "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.";
+          reference
+            "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.";
+          uses measurement-agent-task-capability-g;
+          list registry {
+            key "index";
+            description
+              "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.";
+            reference
+              "Device.LMAP.MeasurementAgent.{i}.TaskCapability.{i}.Registry.{i}.";
+            uses task-capability-registry-g;
+          }
+        }
+      }
+      list report {
+        key "index";
+        description
+          "Device.LMAP.Report.{i}.";
+        reference
+          "Device.LMAP.Report.{i}.";
+        uses lmap-report-g;
+        list result {
+          key "index";
+          description
+            "Device.LMAP.Report.{i}.Result.{i}.";
+          reference
+            "Device.LMAP.Report.{i}.Result.{i}.";
+          uses report-result-g;
+          list conflict {
+            key "index";
+            description
+              "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.";
+            reference
+              "Device.LMAP.Report.{i}.Result.{i}.Conflict.{i}.";
+            uses result-conflict-g;
+          }
+          list option {
+            key "index";
+            description
+              "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.";
+            reference
+              "Device.LMAP.Report.{i}.Result.{i}.Option.{i}.";
+            uses result-option-g;
+          }
+          list report-table {
+            key "index";
+            description
+              "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.";
+            reference
+              "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.";
+            uses result-report-table-g;
+            list registry {
+              key "index";
+              description
+                "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.";
+              reference
+                "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.Registry.{i}.";
+              uses report-table-registry-g;
+            }
+            list result-row {
+              key "index";
+              description
+                "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultRow.{i}.";
+              reference
+                "Device.LMAP.Report.{i}.Result.{i}.ReportTable.{i}.ResultRow.{i}.";
+              uses report-table-result-row-g;
+            }
+          }
+        }
+      }
+    }
+    container map {
+      description
+        "Container for object class Device.MAP.";
+      reference
+        "Device.MAP.";
+      uses device-map-g;
+      list domain {
+        key "index";
+        description
+          "Device.MAP.Domain.{i}.";
+        reference
+          "Device.MAP.Domain.{i}.";
+        uses map-domain-g;
+        container interface {
+          description
+            "Container for object class Device.MAP.Domain.{i}.Interface.";
+          reference
+            "Device.MAP.Domain.{i}.Interface.";
+          uses domain-interface-g;
+          container stats {
+            description
+              "Container for object class Device.MAP.Domain.{i}.Interface.Stats.";
+            reference
+              "Device.MAP.Domain.{i}.Interface.Stats.";
+            uses domain-interface-stats-g;
+          }
+        }
+        list rule {
+          key "index";
+          description
+            "Device.MAP.Domain.{i}.Rule.{i}.";
+          reference
+            "Device.MAP.Domain.{i}.Rule.{i}.";
+          uses domain-rule-g;
+        }
+      }
+    }
+    container mqtt {
+      description
+        "Container for object class Device.MQTT.";
+      reference
+        "Device.MQTT.";
+      uses device-mqtt-g;
+      list broker {
+        key "index";
+        description
+          "Device.MQTT.Broker.{i}.";
+        reference
+          "Device.MQTT.Broker.{i}.";
+        uses mqtt-broker-g;
+        list bridge {
+          key "index";
+          description
+            "Device.MQTT.Broker.{i}.Bridge.{i}.";
+          reference
+            "Device.MQTT.Broker.{i}.Bridge.{i}.";
+          uses broker-bridge-g;
+          list server {
+            key "index";
+            description
+              "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.";
+            reference
+              "Device.MQTT.Broker.{i}.Bridge.{i}.Server.{i}.";
+            uses bridge-server-g;
+          }
+          list subscription {
+            key "index";
+            description
+              "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.";
+            reference
+              "Device.MQTT.Broker.{i}.Bridge.{i}.Subscription.{i}.";
+            uses bridge-subscription-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.MQTT.Broker.{i}.Stats.";
+          reference
+            "Device.MQTT.Broker.{i}.Stats.";
+          uses broker-stats-g;
+        }
+      }
+      container capabilities {
+        description
+          "Container for object class Device.MQTT.Capabilities.";
+        reference
+          "Device.MQTT.Capabilities.";
+        uses mqtt-capabilities-g;
+      }
+      list client {
+        key "index";
+        description
+          "Device.MQTT.Client.{i}.";
+        reference
+          "Device.MQTT.Client.{i}.";
+        uses mqtt-client-g;
+        container stats {
+          description
+            "Container for object class Device.MQTT.Client.{i}.Stats.";
+          reference
+            "Device.MQTT.Client.{i}.Stats.";
+          uses client-stats-g;
+        }
+        list subscription {
+          key "index";
+          description
+            "Device.MQTT.Client.{i}.Subscription.{i}.";
+          reference
+            "Device.MQTT.Client.{i}.Subscription.{i}.";
+          uses client-subscription-g;
+        }
+      }
+    }
+    container management-server {
+      description
+        "Container for object class Device.ManagementServer.";
+      reference
+        "Device.ManagementServer.";
+      uses device-management-server-g;
+      container autonomous-transfer-complete-policy {
+        description
+          "Container for object class Device.ManagementServer.AutonomousTransferCompletePolicy.";
+        reference
+          "Device.ManagementServer.AutonomousTransferCompletePolicy.";
+        uses management-server-autonomous-transfer-complete-policy-g;
+      }
+      container du-state-change-compl-policy {
+        description
+          "Container for object class Device.ManagementServer.DUStateChangeComplPolicy.";
+        reference
+          "Device.ManagementServer.DUStateChangeComplPolicy.";
+        uses management-server-du-state-change-compl-policy-g;
+      }
+      container download-availability {
+        description
+          "Container for object class Device.ManagementServer.DownloadAvailability.";
+        reference
+          "Device.ManagementServer.DownloadAvailability.";
+        uses management-server-download-availability-g;
+        container announcement {
+          description
+            "Container for object class Device.ManagementServer.DownloadAvailability.Announcement.";
+          reference
+            "Device.ManagementServer.DownloadAvailability.Announcement.";
+          uses download-availability-announcement-g;
+          list group {
+            key "index";
+            description
+              "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.";
+            reference
+              "Device.ManagementServer.DownloadAvailability.Announcement.Group.{i}.";
+            uses announcement-group-g;
+          }
+        }
+        container query {
+          description
+            "Container for object class Device.ManagementServer.DownloadAvailability.Query.";
+          reference
+            "Device.ManagementServer.DownloadAvailability.Query.";
+          uses download-availability-query-g;
+        }
+      }
+      list embedded-device {
+        key "index";
+        description
+          "Device.ManagementServer.EmbeddedDevice.{i}.";
+        reference
+          "Device.ManagementServer.EmbeddedDevice.{i}.";
+        uses management-server-embedded-device-g;
+      }
+      container heartbeat-policy {
+        description
+          "Container for object class Device.ManagementServer.HeartbeatPolicy.";
+        reference
+          "Device.ManagementServer.HeartbeatPolicy.";
+        uses management-server-heartbeat-policy-g;
+      }
+      list inform-parameter {
+        key "index";
+        description
+          "Device.ManagementServer.InformParameter.{i}.";
+        reference
+          "Device.ManagementServer.InformParameter.{i}.";
+        uses management-server-inform-parameter-g;
+      }
+      list manageable-device {
+        key "index";
+        description
+          "Device.ManagementServer.ManageableDevice.{i}.";
+        reference
+          "Device.ManagementServer.ManageableDevice.{i}.";
+        uses management-server-manageable-device-g;
+      }
+      container standby-policy {
+        description
+          "Container for object class Device.ManagementServer.StandbyPolicy.";
+        reference
+          "Device.ManagementServer.StandbyPolicy.";
+        uses management-server-standby-policy-g;
+      }
+      list virtual-device {
+        key "index";
+        description
+          "Device.ManagementServer.VirtualDevice.{i}.";
+        reference
+          "Device.ManagementServer.VirtualDevice.{i}.";
+        uses management-server-virtual-device-g;
+      }
+    }
+    container mo-ca {
+      description
+        "Container for object class Device.MoCA.";
+      reference
+        "Device.MoCA.";
+      uses device-mo-ca-g;
+      list interface {
+        key "index";
+        description
+          "Device.MoCA.Interface.{i}.";
+        reference
+          "Device.MoCA.Interface.{i}.";
+        uses mo-ca-interface-g;
+        list associated-device {
+          key "index";
+          description
+            "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.MoCA.Interface.{i}.AssociatedDevice.{i}.";
+          uses mo-ca-interface-associated-device-g;
+        }
+        container qo-s {
+          description
+            "Container for object class Device.MoCA.Interface.{i}.QoS.";
+          reference
+            "Device.MoCA.Interface.{i}.QoS.";
+          uses mo-ca-interface-qo-s-g;
+          list flow-stats {
+            key "index";
+            description
+              "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.";
+            reference
+              "Device.MoCA.Interface.{i}.QoS.FlowStats.{i}.";
+            uses qo-s-flow-stats-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.MoCA.Interface.{i}.Stats.";
+          reference
+            "Device.MoCA.Interface.{i}.Stats.";
+          uses mo-ca-interface-stats-g;
+        }
+      }
+    }
+    container nat {
+      description
+        "Container for object class Device.NAT.";
+      reference
+        "Device.NAT.";
+      uses device-nat-g;
+      list interface-setting {
+        key "index";
+        description
+          "Device.NAT.InterfaceSetting.{i}.";
+        reference
+          "Device.NAT.InterfaceSetting.{i}.";
+        uses nat-interface-setting-g;
+      }
+      list port-mapping {
+        key "index";
+        description
+          "Device.NAT.PortMapping.{i}.";
+        reference
+          "Device.NAT.PortMapping.{i}.";
+        uses nat-port-mapping-g;
+      }
+    }
+    container neighbor-discovery {
+      description
+        "Container for object class Device.NeighborDiscovery.";
+      reference
+        "Device.NeighborDiscovery.";
+      uses device-neighbor-discovery-g;
+      list interface-setting {
+        key "index";
+        description
+          "Device.NeighborDiscovery.InterfaceSetting.{i}.";
+        reference
+          "Device.NeighborDiscovery.InterfaceSetting.{i}.";
+        uses neighbor-discovery-interface-setting-g;
+      }
+    }
+    container optical {
+      description
+        "Container for object class Device.Optical.";
+      reference
+        "Device.Optical.";
+      uses device-optical-g;
+      list interface {
+        key "index";
+        description
+          "Device.Optical.Interface.{i}.";
+        reference
+          "Device.Optical.Interface.{i}.";
+        uses optical-interface-g;
+        container stats {
+          description
+            "Container for object class Device.Optical.Interface.{i}.Stats.";
+          reference
+            "Device.Optical.Interface.{i}.Stats.";
+          uses optical-interface-stats-g;
+        }
+      }
+    }
+    container pcp {
+      description
+        "Container for object class Device.PCP.";
+      reference
+        "Device.PCP.";
+      uses device-pcp-g;
+      list client {
+        key "index";
+        description
+          "Device.PCP.Client.{i}.";
+        reference
+          "Device.PCP.Client.{i}.";
+        uses pcp-client-g;
+        container pcp-proxy {
+          description
+            "Container for object class Device.PCP.Client.{i}.PCPProxy.";
+          reference
+            "Device.PCP.Client.{i}.PCPProxy.";
+          uses client-pcp-proxy-g;
+        }
+        list server {
+          key "index";
+          description
+            "Device.PCP.Client.{i}.Server.{i}.";
+          reference
+            "Device.PCP.Client.{i}.Server.{i}.";
+          uses pcp-client-server-g;
+          list inbound-mapping {
+            key "index";
+            description
+              "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.";
+            reference
+              "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.";
+            uses server-inbound-mapping-g;
+            list filter {
+              key "index";
+              description
+                "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.";
+              reference
+                "Device.PCP.Client.{i}.Server.{i}.InboundMapping.{i}.Filter.{i}.";
+              uses inbound-mapping-filter-g;
+            }
+          }
+          list outbound-mapping {
+            key "index";
+            description
+              "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.";
+            reference
+              "Device.PCP.Client.{i}.Server.{i}.OutboundMapping.{i}.";
+            uses server-outbound-mapping-g;
+          }
+        }
+        container u-pn-piwf {
+          description
+            "Container for object class Device.PCP.Client.{i}.UPnPIWF.";
+          reference
+            "Device.PCP.Client.{i}.UPnPIWF.";
+          uses client-u-pn-piwf-g;
+        }
+      }
+    }
+    container ppp {
+      description
+        "Container for object class Device.PPP.";
+      reference
+        "Device.PPP.";
+      uses device-ppp-g;
+      list interface {
+        key "index";
+        description
+          "Device.PPP.Interface.{i}.";
+        reference
+          "Device.PPP.Interface.{i}.";
+        uses ppp-interface-g;
+        container ipcp {
+          description
+            "Container for object class Device.PPP.Interface.{i}.IPCP.";
+          reference
+            "Device.PPP.Interface.{i}.IPCP.";
+          uses interface-ipcp-g;
+        }
+        container ipv6-cp {
+          description
+            "Container for object class Device.PPP.Interface.{i}.IPv6CP.";
+          reference
+            "Device.PPP.Interface.{i}.IPv6CP.";
+          uses interface-ipv6-cp-g;
+        }
+        container pp-po-a {
+          description
+            "Container for object class Device.PPP.Interface.{i}.PPPoA.";
+          reference
+            "Device.PPP.Interface.{i}.PPPoA.";
+          uses interface-pp-po-a-g;
+        }
+        container pp-po-e {
+          description
+            "Container for object class Device.PPP.Interface.{i}.PPPoE.";
+          reference
+            "Device.PPP.Interface.{i}.PPPoE.";
+          uses interface-pp-po-e-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.PPP.Interface.{i}.Stats.";
+          reference
+            "Device.PPP.Interface.{i}.Stats.";
+          uses ppp-interface-stats-g;
+        }
+      }
+    }
+    container ptm {
+      description
+        "Container for object class Device.PTM.";
+      reference
+        "Device.PTM.";
+      uses device-ptm-g;
+      list link {
+        key "index";
+        description
+          "Device.PTM.Link.{i}.";
+        reference
+          "Device.PTM.Link.{i}.";
+        uses ptm-link-g;
+        container stats {
+          description
+            "Container for object class Device.PTM.Link.{i}.Stats.";
+          reference
+            "Device.PTM.Link.{i}.Stats.";
+          uses ptm-link-stats-g;
+        }
+      }
+    }
+    container periodic-statistics {
+      description
+        "Container for object class Device.PeriodicStatistics.";
+      reference
+        "Device.PeriodicStatistics.";
+      uses device-periodic-statistics-g;
+      list sample-set {
+        key "index";
+        description
+          "Device.PeriodicStatistics.SampleSet.{i}.";
+        reference
+          "Device.PeriodicStatistics.SampleSet.{i}.";
+        uses periodic-statistics-sample-set-g;
+        list parameter {
+          key "index";
+          description
+            "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.";
+          reference
+            "Device.PeriodicStatistics.SampleSet.{i}.Parameter.{i}.";
+          uses sample-set-parameter-g;
+        }
+      }
+    }
+    container qo-s {
+      description
+        "Container for object class Device.QoS.";
+      reference
+        "Device.QoS.";
+      uses device-qo-s-g;
+      list app {
+        key "index";
+        description
+          "Device.QoS.App.{i}.";
+        reference
+          "Device.QoS.App.{i}.";
+        uses qo-s-app-g;
+      }
+      list classification {
+        key "index";
+        description
+          "Device.QoS.Classification.{i}.";
+        reference
+          "Device.QoS.Classification.{i}.";
+        uses qo-s-classification-g;
+      }
+      list flow {
+        key "index";
+        description
+          "Device.QoS.Flow.{i}.";
+        reference
+          "Device.QoS.Flow.{i}.";
+        uses qo-s-flow-g;
+      }
+      list policer {
+        key "index";
+        description
+          "Device.QoS.Policer.{i}.";
+        reference
+          "Device.QoS.Policer.{i}.";
+        uses qo-s-policer-g;
+      }
+      list queue {
+        key "index";
+        description
+          "Device.QoS.Queue.{i}.";
+        reference
+          "Device.QoS.Queue.{i}.";
+        uses qo-s-queue-g;
+      }
+      list queue-stats {
+        key "index";
+        description
+          "Device.QoS.QueueStats.{i}.";
+        reference
+          "Device.QoS.QueueStats.{i}.";
+        uses qo-s-queue-stats-g;
+      }
+      list shaper {
+        key "index";
+        description
+          "Device.QoS.Shaper.{i}.";
+        reference
+          "Device.QoS.Shaper.{i}.";
+        uses qo-s-shaper-g;
+      }
+    }
+    container router-advertisement {
+      description
+        "Container for object class Device.RouterAdvertisement.";
+      reference
+        "Device.RouterAdvertisement.";
+      uses device-router-advertisement-g;
+      list interface-setting {
+        key "index";
+        description
+          "Device.RouterAdvertisement.InterfaceSetting.{i}.";
+        reference
+          "Device.RouterAdvertisement.InterfaceSetting.{i}.";
+        uses router-advertisement-interface-setting-g;
+        list option {
+          key "index";
+          description
+            "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.";
+          reference
+            "Device.RouterAdvertisement.InterfaceSetting.{i}.Option.{i}.";
+          uses interface-setting-option-g;
+        }
+      }
+    }
+    container routing {
+      description
+        "Container for object class Device.Routing.";
+      reference
+        "Device.Routing.";
+      uses device-routing-g;
+      container rip {
+        description
+          "Container for object class Device.Routing.RIP.";
+        reference
+          "Device.Routing.RIP.";
+        uses routing-rip-g;
+        list interface-setting {
+          key "index";
+          description
+            "Device.Routing.RIP.InterfaceSetting.{i}.";
+          reference
+            "Device.Routing.RIP.InterfaceSetting.{i}.";
+          uses rip-interface-setting-g;
+        }
+      }
+      container route-information {
+        description
+          "Container for object class Device.Routing.RouteInformation.";
+        reference
+          "Device.Routing.RouteInformation.";
+        uses routing-route-information-g;
+        list interface-setting {
+          key "index";
+          description
+            "Device.Routing.RouteInformation.InterfaceSetting.{i}.";
+          reference
+            "Device.Routing.RouteInformation.InterfaceSetting.{i}.";
+          uses route-information-interface-setting-g;
+        }
+      }
+      list router {
+        key "index";
+        description
+          "Device.Routing.Router.{i}.";
+        reference
+          "Device.Routing.Router.{i}.";
+        uses routing-router-g;
+        list ipv4-forwarding {
+          key "index";
+          description
+            "Device.Routing.Router.{i}.IPv4Forwarding.{i}.";
+          reference
+            "Device.Routing.Router.{i}.IPv4Forwarding.{i}.";
+          uses router-ipv4-forwarding-g;
+        }
+        list ipv6-forwarding {
+          key "index";
+          description
+            "Device.Routing.Router.{i}.IPv6Forwarding.{i}.";
+          reference
+            "Device.Routing.Router.{i}.IPv6Forwarding.{i}.";
+          uses router-ipv6-forwarding-g;
+        }
+      }
+    }
+    container security {
+      description
+        "Container for object class Device.Security.";
+      reference
+        "Device.Security.";
+      uses device-security-g;
+      list certificate {
+        key "index";
+        description
+          "Device.Security.Certificate.{i}.";
+        reference
+          "Device.Security.Certificate.{i}.";
+        uses security-certificate-g;
+      }
+    }
+    container self-test-diagnostics {
+      description
+        "Container for object class Device.SelfTestDiagnostics.";
+      reference
+        "Device.SelfTestDiagnostics.";
+      uses device-self-test-diagnostics-g;
+    }
+    container services {
+      description
+        "Container for object class Device.Services.";
+      reference
+        "Device.Services.";
+      uses device-services-g;
+    }
+    container smart-card-readers {
+      description
+        "Container for object class Device.SmartCardReaders.";
+      reference
+        "Device.SmartCardReaders.";
+      uses device-smart-card-readers-g;
+      list smart-card-reader {
+        key "index";
+        description
+          "Device.SmartCardReaders.SmartCardReader.{i}.";
+        reference
+          "Device.SmartCardReaders.SmartCardReader.{i}.";
+        uses smart-card-readers-smart-card-reader-g;
+        container smart-card {
+          description
+            "Container for object class Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.";
+          reference
+            "Device.SmartCardReaders.SmartCardReader.{i}.SmartCard.";
+          uses smart-card-reader-smart-card-g;
+        }
+      }
+    }
+    container software-modules {
+      description
+        "Container for object class Device.SoftwareModules.";
+      reference
+        "Device.SoftwareModules.";
+      uses device-software-modules-g;
+      list deployment-unit {
+        key "index";
+        description
+          "Device.SoftwareModules.DeploymentUnit.{i}.";
+        reference
+          "Device.SoftwareModules.DeploymentUnit.{i}.";
+        uses software-modules-deployment-unit-g;
+      }
+      list exec-env {
+        key "index";
+        description
+          "Device.SoftwareModules.ExecEnv.{i}.";
+        reference
+          "Device.SoftwareModules.ExecEnv.{i}.";
+        uses software-modules-exec-env-g;
+      }
+      list execution-unit {
+        key "index";
+        description
+          "Device.SoftwareModules.ExecutionUnit.{i}.";
+        reference
+          "Device.SoftwareModules.ExecutionUnit.{i}.";
+        uses software-modules-execution-unit-g;
+        container extensions {
+          description
+            "Container for object class Device.SoftwareModules.ExecutionUnit.{i}.Extensions.";
+          reference
+            "Device.SoftwareModules.ExecutionUnit.{i}.Extensions.";
+          uses execution-unit-extensions-g;
+        }
+      }
+    }
+    container time {
+      description
+        "Container for object class Device.Time.";
+      reference
+        "Device.Time.";
+      uses device-time-g;
+    }
+    container upa {
+      description
+        "Container for object class Device.UPA.";
+      reference
+        "Device.UPA.";
+      uses device-upa-g;
+      container diagnostics {
+        description
+          "Container for object class Device.UPA.Diagnostics.";
+        reference
+          "Device.UPA.Diagnostics.";
+        uses upa-diagnostics-g;
+        container interface-measurement {
+          description
+            "Container for object class Device.UPA.Diagnostics.InterfaceMeasurement.";
+          reference
+            "Device.UPA.Diagnostics.InterfaceMeasurement.";
+          uses diagnostics-interface-measurement-g;
+        }
+      }
+      list interface {
+        key "index";
+        description
+          "Device.UPA.Interface.{i}.";
+        reference
+          "Device.UPA.Interface.{i}.";
+        uses upa-interface-g;
+        list active-notch {
+          key "index";
+          description
+            "Device.UPA.Interface.{i}.ActiveNotch.{i}.";
+          reference
+            "Device.UPA.Interface.{i}.ActiveNotch.{i}.";
+          uses interface-active-notch-g;
+        }
+        list associated-device {
+          key "index";
+          description
+            "Device.UPA.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.UPA.Interface.{i}.AssociatedDevice.{i}.";
+          uses upa-interface-associated-device-g;
+        }
+        list bridge-for {
+          key "index";
+          description
+            "Device.UPA.Interface.{i}.BridgeFor.{i}.";
+          reference
+            "Device.UPA.Interface.{i}.BridgeFor.{i}.";
+          uses interface-bridge-for-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.UPA.Interface.{i}.Stats.";
+          reference
+            "Device.UPA.Interface.{i}.Stats.";
+          uses upa-interface-stats-g;
+        }
+      }
+    }
+    container u-pn-p {
+      description
+        "Container for object class Device.UPnP.";
+      reference
+        "Device.UPnP.";
+      uses device-u-pn-p-g;
+      container description {
+        description
+          "Container for object class Device.UPnP.Description.";
+        reference
+          "Device.UPnP.Description.";
+        uses u-pn-p-description-g;
+        list device-description {
+          key "index";
+          description
+            "Device.UPnP.Description.DeviceDescription.{i}.";
+          reference
+            "Device.UPnP.Description.DeviceDescription.{i}.";
+          uses description-device-description-g;
+        }
+        list device-instance {
+          key "index";
+          description
+            "Device.UPnP.Description.DeviceInstance.{i}.";
+          reference
+            "Device.UPnP.Description.DeviceInstance.{i}.";
+          uses description-device-instance-g;
+        }
+        list service-instance {
+          key "index";
+          description
+            "Device.UPnP.Description.ServiceInstance.{i}.";
+          reference
+            "Device.UPnP.Description.ServiceInstance.{i}.";
+          uses description-service-instance-g;
+        }
+      }
+      container device {
+        description
+          "Container for object class Device.UPnP.Device.";
+        reference
+          "Device.UPnP.Device.";
+        uses u-pn-p-device-g;
+        container capabilities {
+          description
+            "Container for object class Device.UPnP.Device.Capabilities.";
+          reference
+            "Device.UPnP.Device.Capabilities.";
+          uses device-capabilities-g;
+        }
+      }
+      container discovery {
+        description
+          "Container for object class Device.UPnP.Discovery.";
+        reference
+          "Device.UPnP.Discovery.";
+        uses u-pn-p-discovery-g;
+        list device {
+          key "index";
+          description
+            "Device.UPnP.Discovery.Device.{i}.";
+          reference
+            "Device.UPnP.Discovery.Device.{i}.";
+          uses u-pn-p-discovery-device-g;
+        }
+        list root-device {
+          key "index";
+          description
+            "Device.UPnP.Discovery.RootDevice.{i}.";
+          reference
+            "Device.UPnP.Discovery.RootDevice.{i}.";
+          uses discovery-root-device-g;
+        }
+        list service {
+          key "index";
+          description
+            "Device.UPnP.Discovery.Service.{i}.";
+          reference
+            "Device.UPnP.Discovery.Service.{i}.";
+          uses discovery-service-g;
+        }
+      }
+    }
+    container usb {
+      description
+        "Container for object class Device.USB.";
+      reference
+        "Device.USB.";
+      uses device-usb-g;
+      list interface {
+        key "index";
+        description
+          "Device.USB.Interface.{i}.";
+        reference
+          "Device.USB.Interface.{i}.";
+        uses usb-interface-g;
+        container stats {
+          description
+            "Container for object class Device.USB.Interface.{i}.Stats.";
+          reference
+            "Device.USB.Interface.{i}.Stats.";
+          uses usb-interface-stats-g;
+        }
+      }
+      list port {
+        key "index";
+        description
+          "Device.USB.Port.{i}.";
+        reference
+          "Device.USB.Port.{i}.";
+        uses usb-port-g;
+      }
+      container usb-hosts {
+        description
+          "Container for object class Device.USB.USBHosts.";
+        reference
+          "Device.USB.USBHosts.";
+        uses usb-usb-hosts-g;
+        list host {
+          key "index";
+          description
+            "Device.USB.USBHosts.Host.{i}.";
+          reference
+            "Device.USB.USBHosts.Host.{i}.";
+          uses usb-hosts-host-g;
+          list device {
+            key "index";
+            description
+              "Device.USB.USBHosts.Host.{i}.Device.{i}.";
+            reference
+              "Device.USB.USBHosts.Host.{i}.Device.{i}.";
+            uses host-device-g;
+            list configuration {
+              key "index";
+              description
+                "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.";
+              reference
+                "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.";
+              uses device-configuration-g;
+              list interface {
+                key "index";
+                description
+                  "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.";
+                reference
+                  "Device.USB.USBHosts.Host.{i}.Device.{i}.Configuration.{i}.Interface.{i}.";
+                uses configuration-interface-g;
+              }
+            }
+          }
+        }
+      }
+    }
+    container user-interface {
+      description
+        "Container for object class Device.UserInterface.";
+      reference
+        "Device.UserInterface.";
+      uses device-user-interface-g;
+      container local-display {
+        description
+          "Container for object class Device.UserInterface.LocalDisplay.";
+        reference
+          "Device.UserInterface.LocalDisplay.";
+        uses user-interface-local-display-g;
+      }
+      container messages {
+        description
+          "Container for object class Device.UserInterface.Messages.";
+        reference
+          "Device.UserInterface.Messages.";
+        uses user-interface-messages-g;
+      }
+      container remote-access {
+        description
+          "Container for object class Device.UserInterface.RemoteAccess.";
+        reference
+          "Device.UserInterface.RemoteAccess.";
+        uses user-interface-remote-access-g;
+      }
+    }
+    container users {
+      description
+        "Container for object class Device.Users.";
+      reference
+        "Device.Users.";
+      uses device-users-g;
+      list user {
+        key "index";
+        description
+          "Device.Users.User.{i}.";
+        reference
+          "Device.Users.User.{i}.";
+        uses users-user-g;
+      }
+    }
+    container vxlan {
+      description
+        "Container for object class Device.VXLAN.";
+      reference
+        "Device.VXLAN.";
+      uses device-vxlan-g;
+      list filter {
+        key "index";
+        description
+          "Device.VXLAN.Filter.{i}.";
+        reference
+          "Device.VXLAN.Filter.{i}.";
+        uses vxlan-filter-g;
+      }
+      list tunnel {
+        key "index";
+        description
+          "Device.VXLAN.Tunnel.{i}.";
+        reference
+          "Device.VXLAN.Tunnel.{i}.";
+        uses vxlan-tunnel-g;
+        list interface {
+          key "index";
+          description
+            "Device.VXLAN.Tunnel.{i}.Interface.{i}.";
+          reference
+            "Device.VXLAN.Tunnel.{i}.Interface.{i}.";
+          uses vxlan-tunnel-interface-g;
+          container stats {
+            description
+              "Container for object class Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.";
+            reference
+              "Device.VXLAN.Tunnel.{i}.Interface.{i}.Stats.";
+            uses vxlan-tunnel-interface-stats-g;
+          }
+        }
+        container stats {
+          description
+            "Container for object class Device.VXLAN.Tunnel.{i}.Stats.";
+          reference
+            "Device.VXLAN.Tunnel.{i}.Stats.";
+          uses vxlan-tunnel-stats-g;
+        }
+      }
+    }
+    container wi-fi {
+      description
+        "Container for object class Device.WiFi.";
+      reference
+        "Device.WiFi.";
+      uses device-wi-fi-g;
+      list access-point {
+        key "index";
+        description
+          "Device.WiFi.AccessPoint.{i}.";
+        reference
+          "Device.WiFi.AccessPoint.{i}.";
+        uses wi-fi-access-point-g;
+        list ac {
+          key "index";
+          description
+            "Device.WiFi.AccessPoint.{i}.AC.{i}.";
+          reference
+            "Device.WiFi.AccessPoint.{i}.AC.{i}.";
+          uses access-point-ac-g;
+          container stats {
+            description
+              "Container for object class Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.";
+            reference
+              "Device.WiFi.AccessPoint.{i}.AC.{i}.Stats.";
+            uses ac-stats-g;
+          }
+        }
+        container accounting {
+          description
+            "Container for object class Device.WiFi.AccessPoint.{i}.Accounting.";
+          reference
+            "Device.WiFi.AccessPoint.{i}.Accounting.";
+          uses access-point-accounting-g;
+        }
+        list associated-device {
+          key "index";
+          description
+            "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.";
+          uses access-point-associated-device-g;
+          container stats {
+            description
+              "Container for object class Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.";
+            reference
+              "Device.WiFi.AccessPoint.{i}.AssociatedDevice.{i}.Stats.";
+            uses associated-device-stats-g;
+          }
+        }
+        container security {
+          description
+            "Container for object class Device.WiFi.AccessPoint.{i}.Security.";
+          reference
+            "Device.WiFi.AccessPoint.{i}.Security.";
+          uses access-point-security-g;
+        }
+        container wps {
+          description
+            "Container for object class Device.WiFi.AccessPoint.{i}.WPS.";
+          reference
+            "Device.WiFi.AccessPoint.{i}.WPS.";
+          uses access-point-wps-g;
+        }
+      }
+      list end-point {
+        key "index";
+        description
+          "Device.WiFi.EndPoint.{i}.";
+        reference
+          "Device.WiFi.EndPoint.{i}.";
+        uses wi-fi-end-point-g;
+        list ac {
+          key "index";
+          description
+            "Device.WiFi.EndPoint.{i}.AC.{i}.";
+          reference
+            "Device.WiFi.EndPoint.{i}.AC.{i}.";
+          uses end-point-ac-g;
+          container stats {
+            description
+              "Container for object class Device.WiFi.EndPoint.{i}.AC.{i}.Stats.";
+            reference
+              "Device.WiFi.EndPoint.{i}.AC.{i}.Stats.";
+            uses end-point-ac-stats-g;
+          }
+        }
+        list profile {
+          key "index";
+          description
+            "Device.WiFi.EndPoint.{i}.Profile.{i}.";
+          reference
+            "Device.WiFi.EndPoint.{i}.Profile.{i}.";
+          uses end-point-profile-g;
+          container security {
+            description
+              "Container for object class Device.WiFi.EndPoint.{i}.Profile.{i}.Security.";
+            reference
+              "Device.WiFi.EndPoint.{i}.Profile.{i}.Security.";
+            uses profile-security-g;
+          }
+        }
+        container security {
+          description
+            "Container for object class Device.WiFi.EndPoint.{i}.Security.";
+          reference
+            "Device.WiFi.EndPoint.{i}.Security.";
+          uses end-point-security-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.WiFi.EndPoint.{i}.Stats.";
+          reference
+            "Device.WiFi.EndPoint.{i}.Stats.";
+          uses end-point-stats-g;
+        }
+        container wps {
+          description
+            "Container for object class Device.WiFi.EndPoint.{i}.WPS.";
+          reference
+            "Device.WiFi.EndPoint.{i}.WPS.";
+          uses end-point-wps-g;
+        }
+      }
+      container neighboring-wi-fi-diagnostic {
+        description
+          "Container for object class Device.WiFi.NeighboringWiFiDiagnostic.";
+        reference
+          "Device.WiFi.NeighboringWiFiDiagnostic.";
+        uses wi-fi-neighboring-wi-fi-diagnostic-g;
+        list result {
+          key "index";
+          description
+            "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.";
+          reference
+            "Device.WiFi.NeighboringWiFiDiagnostic.Result.{i}.";
+          uses neighboring-wi-fi-diagnostic-result-g;
+        }
+      }
+      list radio {
+        key "index";
+        description
+          "Device.WiFi.Radio.{i}.";
+        reference
+          "Device.WiFi.Radio.{i}.";
+        uses wi-fi-radio-g;
+        container stats {
+          description
+            "Container for object class Device.WiFi.Radio.{i}.Stats.";
+          reference
+            "Device.WiFi.Radio.{i}.Stats.";
+          uses radio-stats-g;
+        }
+      }
+      list ssid {
+        key "index";
+        description
+          "Device.WiFi.SSID.{i}.";
+        reference
+          "Device.WiFi.SSID.{i}.";
+        uses wi-fi-ssid-g;
+        container stats {
+          description
+            "Container for object class Device.WiFi.SSID.{i}.Stats.";
+          reference
+            "Device.WiFi.SSID.{i}.Stats.";
+          uses ssid-stats-g;
+        }
+      }
+    }
+    container xmpp {
+      description
+        "Container for object class Device.XMPP.";
+      reference
+        "Device.XMPP.";
+      uses device-xmpp-g;
+      list connection {
+        key "index";
+        description
+          "Device.XMPP.Connection.{i}.";
+        reference
+          "Device.XMPP.Connection.{i}.";
+        uses xmpp-connection-g;
+        list server {
+          key "index";
+          description
+            "Device.XMPP.Connection.{i}.Server.{i}.";
+          reference
+            "Device.XMPP.Connection.{i}.Server.{i}.";
+          uses connection-server-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.XMPP.Connection.{i}.Stats.";
+          reference
+            "Device.XMPP.Connection.{i}.Stats.";
+          uses connection-stats-g;
+        }
+      }
+    }
+    container zig-bee {
+      description
+        "Container for object class Device.ZigBee.";
+      reference
+        "Device.ZigBee.";
+      uses device-zig-bee-g;
+      container discovery {
+        description
+          "Container for object class Device.ZigBee.Discovery.";
+        reference
+          "Device.ZigBee.Discovery.";
+        uses zig-bee-discovery-g;
+        list area-network {
+          key "index";
+          description
+            "Device.ZigBee.Discovery.AreaNetwork.{i}.";
+          reference
+            "Device.ZigBee.Discovery.AreaNetwork.{i}.";
+          uses discovery-area-network-g;
+        }
+      }
+      list interface {
+        key "index";
+        description
+          "Device.ZigBee.Interface.{i}.";
+        reference
+          "Device.ZigBee.Interface.{i}.";
+        uses zig-bee-interface-g;
+        list associated-device {
+          key "index";
+          description
+            "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.";
+          reference
+            "Device.ZigBee.Interface.{i}.AssociatedDevice.{i}.";
+          uses zig-bee-interface-associated-device-g;
+        }
+        container stats {
+          description
+            "Container for object class Device.ZigBee.Interface.{i}.Stats.";
+          reference
+            "Device.ZigBee.Interface.{i}.Stats.";
+          uses zig-bee-interface-stats-g;
+        }
+      }
+      list zdo {
+        key "index";
+        description
+          "Device.ZigBee.ZDO.{i}.";
+        reference
+          "Device.ZigBee.ZDO.{i}.";
+        uses zig-bee-zdo-g;
+        list application-endpoint {
+          key "index";
+          description
+            "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.";
+          reference
+            "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.";
+          uses zdo-application-endpoint-g;
+          container simple-descriptor {
+            description
+              "Container for object class Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.";
+            reference
+              "Device.ZigBee.ZDO.{i}.ApplicationEndpoint.{i}.SimpleDescriptor.";
+            uses application-endpoint-simple-descriptor-g;
+          }
+        }
+        list binding {
+          key "index";
+          description
+            "Device.ZigBee.ZDO.{i}.Binding.{i}.";
+          reference
+            "Device.ZigBee.ZDO.{i}.Binding.{i}.";
+          uses zdo-binding-g;
+        }
+        container complex-descriptor {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.ComplexDescriptor.";
+          reference
+            "Device.ZigBee.ZDO.{i}.ComplexDescriptor.";
+          uses zdo-complex-descriptor-g;
+        }
+        list group {
+          key "index";
+          description
+            "Device.ZigBee.ZDO.{i}.Group.{i}.";
+          reference
+            "Device.ZigBee.ZDO.{i}.Group.{i}.";
+          uses zdo-group-g;
+        }
+        container network {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.Network.";
+          reference
+            "Device.ZigBee.ZDO.{i}.Network.";
+          uses zdo-network-g;
+          list neighbor {
+            key "index";
+            description
+              "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.";
+            reference
+              "Device.ZigBee.ZDO.{i}.Network.Neighbor.{i}.";
+            uses network-neighbor-g;
+          }
+        }
+        container node-descriptor {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.NodeDescriptor.";
+          reference
+            "Device.ZigBee.ZDO.{i}.NodeDescriptor.";
+          uses zdo-node-descriptor-g;
+        }
+        container node-manager {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.NodeManager.";
+          reference
+            "Device.ZigBee.ZDO.{i}.NodeManager.";
+          uses zdo-node-manager-g;
+          list routing-table {
+            key "index";
+            description
+              "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.";
+            reference
+              "Device.ZigBee.ZDO.{i}.NodeManager.RoutingTable.{i}.";
+            uses node-manager-routing-table-g;
+          }
+        }
+        container power-descriptor {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.PowerDescriptor.";
+          reference
+            "Device.ZigBee.ZDO.{i}.PowerDescriptor.";
+          uses zdo-power-descriptor-g;
+        }
+        container security {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.Security.";
+          reference
+            "Device.ZigBee.ZDO.{i}.Security.";
+          uses zdo-security-g;
+        }
+        container user-descriptor {
+          description
+            "Container for object class Device.ZigBee.ZDO.{i}.UserDescriptor.";
+          reference
+            "Device.ZigBee.ZDO.{i}.UserDescriptor.";
+          uses zdo-user-descriptor-g;
+        }
+      }
+    }
+  }
+}