-- *****************************************************************
-- WESTERMO-SW6-MIB :
-- SNMP configuration of Westermo devices with SW6.
--
-- Copyright (c) 2020 by Westermo Network Technologies AB
-- All rights reserved.
-- *****************************************************************

-- *****************************************************************
-- This script has been tested using the SMI checker smilint
-- the tool can be downloaded at
-- http://www.ibr.cs.tu-bs.de/projects/libsmi/smilint.html
-- or use alternatively the online version at:
-- http://www.simpleweb.org/ietf/mibs/validate/
--
-- smilint -m -s -l 6 -i nameLength-32 ./WESTERMO-SW6-MIB
-- Ensure that all needed MIBS are located in the SMIPATH.
-- *****************************************************************

-- **********************************************************************
-- * STANDARD MIB
-- **********************************************************************

WESTERMO-SW6-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        MODULE-IDENTITY, OBJECT-TYPE,
        Counter32,
        IpAddress, Integer32, TimeTicks        FROM SNMPv2-SMI
        DisplayString                          FROM SNMPv2-TC
        MODULE-COMPLIANCE, OBJECT-GROUP        FROM SNMPv2-CONF
    ;

-- **********************************************************************
-- *  MODULE IDENTITY
-- **********************************************************************
base MODULE-IDENTITY
    LAST-UPDATED "202608120000Z"

    ORGANIZATION "Westermo Network Technologies AB"
    CONTACT-INFO "E-mail: info@westermo.com"
    DESCRIPTION  "MIB Module for the Westermo RT-300 Radio Modem Device - Base definitions"

    REVISION     "202608120000Z"
    DESCRIPTION  "Release 6.12.1-0"

    ::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1)
          westermo(16177) products(1) rt(400) 1 }

-- **********************************************************************
-- *  Begin Major sections
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

--  Configuration
--  =============

    configuration        OBJECT IDENTIFIER ::= { base 1 }
     cfgSystem           OBJECT IDENTIFIER ::= { configuration 1 }
     cfgNetwork          OBJECT IDENTIFIER ::= { configuration 2 }
     cfgWireless         OBJECT IDENTIFIER ::= { configuration 3 }
     cfgRouting          OBJECT IDENTIFIER ::= { configuration 4 }
     cfgQos              OBJECT IDENTIFIER ::= { configuration 6 }
     cfgLogging          OBJECT IDENTIFIER ::= { configuration 11 }
     cfgSnmp             OBJECT IDENTIFIER ::= { configuration 12 }
     cfgDhcp             OBJECT IDENTIFIER ::= { configuration 13 }
     cfgNtp              OBJECT IDENTIFIER ::= { configuration 14 }
     cfgHttp             OBJECT IDENTIFIER ::= { configuration 15 }
     cfgLldp             OBJECT IDENTIFIER ::= { configuration 16 }
     cfgMdns             OBJECT IDENTIFIER ::= { configuration 17 }
     cfgSsdp             OBJECT IDENTIFIER ::= { configuration 19 }
     cfgNlm              OBJECT IDENTIFIER ::= { configuration 40 }
     cfgCli              OBJECT IDENTIFIER ::= { configuration 100 }
     cfgCellular         OBJECT IDENTIFIER ::= { configuration 101 }
     cfgCertificate      OBJECT IDENTIFIER ::= { configuration 1001 }
     cfgScep             OBJECT IDENTIFIER ::= { configuration 1002 }
     cfgVpn              OBJECT IDENTIFIER ::= { configuration 1003 }
     cfgLdap             OBJECT IDENTIFIER ::= { configuration 1005 }
     cfgRadsec           OBJECT IDENTIFIER ::= { configuration 1008 }
     cfgStunnel          OBJECT IDENTIFIER ::= { configuration 1010 }

--  RPCs Remote Procedure Calls
--  ==========================

    rpc                  OBJECT IDENTIFIER ::= { base 3 }
     rpcConfiguration    OBJECT IDENTIFIER ::= { rpc 1 }
     rpcFirmware         OBJECT IDENTIFIER ::= { rpc 2 }
     rpcSystem           OBJECT IDENTIFIER ::= { rpc 3 }
     rpcCertificate      OBJECT IDENTIFIER ::= { rpc 4 }
     rpcDriver           OBJECT IDENTIFIER ::= { rpc 6 }
     rpcScep             OBJECT IDENTIFIER ::= { rpc 100 }
     rpcCellular         OBJECT IDENTIFIER ::= { rpc 101 }
     rpcPartitions       OBJECT IDENTIFIER ::= { rpc 103 }

--  Settings
--  ========

    settings             OBJECT IDENTIFIER ::= { base 4 }
      setConfiguration   OBJECT IDENTIFIER ::= { settings 1 }
      setWireless        OBJECT IDENTIFIER ::= { settings 3 }
      setFirmware        OBJECT IDENTIFIER ::= { settings 5 }
      setCertificate     OBJECT IDENTIFIER ::= { settings 6 }
      setSystem          OBJECT IDENTIFIER ::= { settings 7 }
      setTechPreview     OBJECT IDENTIFIER ::= { settings 8 }
      setTlsClient       OBJECT IDENTIFIER ::= { settings 9 }
      setCellular        OBJECT IDENTIFIER ::= { settings 50 }

--  Hardware
--  ========

    hardware             OBJECT IDENTIFIER ::= { base 5 }
      hwSystem           OBJECT IDENTIFIER ::= { hardware 1 }
      hwNetwork          OBJECT IDENTIFIER ::= { hardware 2 }
      hwWireless         OBJECT IDENTIFIER ::= { hardware 3 }
      hwBaseBoard        OBJECT IDENTIFIER ::= { hardware 10 }
      hwIfaceBoard       OBJECT IDENTIFIER ::= { hardware 11 }
      hwSensor           OBJECT IDENTIFIER ::= { hardware 21 }
      hwCellular         OBJECT IDENTIFIER ::= { hardware 50 }
      hwGnss             OBJECT IDENTIFIER ::= { hardware 51 }
      hwPowerSupply      OBJECT IDENTIFIER ::= { hardware 52 }


--  Software
--  ========

    software             OBJECT IDENTIFIER ::= { base 6 }
     swFirmware          OBJECT IDENTIFIER ::= { software 2 }
     swSystem            OBJECT IDENTIFIER ::= { software 3 }
     swOperatingSystem   OBJECT IDENTIFIER ::= { software 4 }
     swDriver            OBJECT IDENTIFIER ::= { software 5 }
     swRdm               OBJECT IDENTIFIER ::= { software 6 }
     swCertificate       OBJECT IDENTIFIER ::= { software 9 }
     swBootloader        OBJECT IDENTIFIER ::= { software 20 }
     swConfiguration     OBJECT IDENTIFIER ::= { software 30 }
     swCellular          OBJECT IDENTIFIER ::= { software 50 }
     swNlm               OBJECT IDENTIFIER ::= { software 52 }

--  Conformance Information
--  =======================

    conformance           OBJECT IDENTIFIER ::= { base 100 }
     groups               OBJECT IDENTIFIER ::= { conformance 1 }
      groupConfiguration  OBJECT IDENTIFIER ::= { groups 1 }
      groupStatus         OBJECT IDENTIFIER ::= { groups 2 }
      groupRpc            OBJECT IDENTIFIER ::= { groups 3 }
      groupSettings       OBJECT IDENTIFIER ::= { groups 4 }
      groupHardware       OBJECT IDENTIFIER ::= { groups 5 }
      groupSoftware       OBJECT IDENTIFIER ::= { groups 6 }
      groupFeatures       OBJECT IDENTIFIER ::= { groups 7 }

     compliances          OBJECT IDENTIFIER ::= { conformance 2 }


-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End Major Sections
-- **********************************************************************

-- **********************************************************************
-- *  Begin Object Types
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

-- Configuration
-- =============

-- System

    cfgSysHostname OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..63))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The Hostname of the Device

             Valid characters for hostnames are ASCII(7) letters from a to z,
             the digits from 0 to 9, and the hyphen (-).
             A hostname may not start or end with a hyphen."
        ::= { cfgSystem 1 }

    cfgSysTimezone OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "POSIX Timezone String

             Defines the local time.

             For more strings also see
             http://wiki.openwrt.org/doc/uci/system#time_zones

             **Example:**

             * Europe/Zurich: CET-1CEST,M3.5.0,M10.5.0/3"
        ::= { cfgSystem 2 }

    cfgSysDomain OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Local Domain Name of the Device

             Will be ignored when set to 'none'.

             The local domain name, as well as the domain search list
             (as configured in `cfgSysSearchdomainTable`), is used by the resolver
             to create a fully qualified domain name from a relative name.

             **Example:**

             * `yourdomain.org`
             * `subdomain.yourdomain.org`

             **Note:**

             It is recommended to not use the domain `local` because it
             collides with mDNS."
        ::= { cfgSystem 3 }

    cfgSysComment OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "System Comment

             This parameter has no operational function.
             A simple comment field to add customised information,
             such as configuration version, release notes or other remarks."
        ::= { cfgSystem 4 }

-- -----------------------------------------------------------------------------

    cfgSysSearchdomainTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgSysSearchdomainTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Domain Search List

             Configure the domain search list by adding entries in
             this table.

             The domain search list, as well as the local domain name
             (see `cfgSysDomain`), is used by the resolver to create
             a fully qualified domain name from a relative name."
        ::= { cfgSystem 10 }

    cfgSysSearchdomainTableEntry OBJECT-TYPE
        SYNTAX  CfgSysSearchdomainTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Searchdomain configuration."
        INDEX {cfgSysSdIndex}
        ::= { cfgSysSearchdomainTable 1 }

    CfgSysSearchdomainTableSeq ::=
        SEQUENCE {  cfgSysSdIndex Integer32,
                    cfgSysSdSearch DisplayString
                 }

    cfgSysSdIndex OBJECT-TYPE
        SYNTAX Integer32 (0..5)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgSysSearchdomainTableEntry 1 }

    cfgSysSdSearch OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Search Domain List Entry

             This entry will be ignored when set to 'none'.

             **Example:**

             * `example.com`
             * `subdomain.otherdomain.org`"
        ::= { cfgSysSearchdomainTableEntry 2 }

-- -----------------------------------------------------------------------------

    cfgSysNameserverTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgSysNameserverTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Nameserver configuration

            Configure a prioritised list of nameservers with which the device
            may resolve hostnames. The lower the index, the higher the priority.

            Entries are tried either in parallel or sequentially.
            When querying sequentially, the timeout is 2 seconds.
            When querying in parallel the timeout is 5 seconds.
            Either way, 2 attempts are performed.

            There are two types of entries: static and dynamic.

            Static entries allow to specify a static server IP as nameserver in
            `cfgSysNsServer`.

            Dynamic entries allow to reference a network interface, by setting
            `cfgSysNsDhcpInterface`, on which a DHCP client is running. The
            cellular network and OpenVPN interfaces may be referenced as well,
            since they may provide dynamic DNS information.

            Nameserver entries from DHCP clients that are not explicitly listed
            are put to the end of the list.

            Entries received by DHCP, may also be ignored and not used at all
            by setting `cfgSysNsType` to **ignoreinterface(3)**.

            A maximum of 6 entries are queried. When more entries are defined,
            the additional ones are ignored."
        ::= { cfgSystem 11 }

    cfgSysNameserverTableEntry OBJECT-TYPE
        SYNTAX  CfgSysNameserverTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Nameserver Configuration"
        INDEX {cfgSysNsIndex}
        ::= { cfgSysNameserverTable 1 }

    CfgSysNameserverTableSeq ::=
        SEQUENCE {  cfgSysNsIndex Integer32,
                    cfgSysNsType INTEGER,
                    cfgSysNsServer IpAddress,
                    cfgSysNsDhcpInterface DisplayString,
                    cfgSysNsDhcpDnsRouteEnabled INTEGER
                 }

    cfgSysNsIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgSysNameserverTableEntry 1 }

    cfgSysNsType OBJECT-TYPE
        SYNTAX INTEGER { none(0), server(1), dhcpinterface(2), ignoreinterface(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Type of the Nameserver Entry

             * **none(0):**  Disables this entry
             * **server(1):** Uses the address specified by `cfgSysNsServer`
             * **dhcpinterface(2):** Uses nameservers provided by a DHCP client
                                     referenced by `cfgSysNsDhcpInterface`
             * **ignoreinterface(3):** Ignore nameservers provided by a DHCP client
                                       referenced by `cfgSysNsDhcpInterface`"
        ::= { cfgSysNameserverTableEntry 2 }

    cfgSysNsServer OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Nameserver Address

             This parameter is only used when `cfgSysNsType` is set to
             **server(1)**."
        ::= { cfgSysNameserverTableEntry 3 }

    cfgSysNsDhcpInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Client Interface

             This parameter is only used when `cfgSysNsType` is set to
             **dhcpinterface(2)** or **ignoreinterface(3)**.

             Name of an interface on which a DHCP client is running.
             This may be a DHCP client defined by `cfgNetIpTable` or a wwan or
             ovpn interface which have their own means of handling DHCP.

             **Examples:**

             * wlan0
             * ovpn0
             * macvlan2
             * wwan0
             * br0.vlan7"
        ::= { cfgSysNameserverTableEntry 4 }

    cfgSysNsDhcpDnsRouteEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP DNS Route Disabled or Enabled

             This parameter is only used when `cfgSysNsType` is set to
             **dhcpinterface(2)**.

             When this parameter is set to **enabled(1)**, routing rules and
             routes are created to force DNS traffic to this server to the
             interface on which the DHCP client is running.

             This means that DNS requests for DNS server entries received on
             wlan0 will be sent via wlan0, even if the routing table would send
             the requests over a different interface, e.g eth0."
        ::= { cfgSysNameserverTableEntry 5 }

    cfgSysNameserverOrder OBJECT-TYPE
        SYNTAX INTEGER { parallel(0), sequential(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Nameserver Order

             Defines the order in which the available nameservers are querried.

             * **parallel(0)**: All servers are queried in parallel. The first
                                response is used, including NXDomain (not found).
             * **sequential(1)**: The servers are queried in the order in which
                                  they are defined. Use `cfgSysNameserverTable`
                                  to specify the order of nameservers via DHCP."
        ::= { cfgSystem 12 }

-- =============================================================================

-- Network

    cfgNetEthernetTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetEthernetTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Ethernet Network Interfaces"
        ::= { cfgNetwork 1 }

    cfgNetEthernetTableEntry OBJECT-TYPE
        SYNTAX  CfgNetEthernetTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Ethernet Network Interfaces"
        INDEX {cfgNetEthIndex}
        ::= { cfgNetEthernetTable 1 }

    CfgNetEthernetTableSeq ::=
        SEQUENCE {  cfgNetEthIndex Integer32,
                    cfgNetEthName DisplayString,
                    cfgNetEthEnabled INTEGER,
                    cfgNetEthBridge Integer32,
                    cfgNetEthAutoneg INTEGER,
                    cfgNetEthSpeed Integer32,
                    cfgNetEthTrunk DisplayString,
                    cfgNetEthTag Integer32,
                    cfgNetEthVlanMode INTEGER,
                    cfgNetEthProtected INTEGER,
                    cfgNetEthLldpEnabled INTEGER,
                    cfgNetEthMtu Integer32,
                    cfgNetEthMac DisplayString
                 }

    cfgNetEthIndex OBJECT-TYPE
        SYNTAX Integer32 (0..9)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetEthernetTableEntry 1 }

    cfgNetEthName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Ethernet Interface"
        ::= { cfgNetEthernetTableEntry 2 }

    cfgNetEthEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Disabled or Enabled"
        ::= { cfgNetEthernetTableEntry 3 }

    cfgNetEthBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             Bridges with an index >=100 are special bridges which forward
             link local traffic. This can be used for wireless links in 4addr
             mode which should act as a cable-replacement.

             **Note:** Such a bridge may only contain 2 interfaces!

             **Example:**

             * wlan0 and eth0 in br100, with eth1 as management interface"
        ::= { cfgNetEthernetTableEntry 7 }

    cfgNetEthAutoneg OBJECT-TYPE
        SYNTAX INTEGER { forced(0), auto(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Auto Negotiation of the PHY

             * **forced(0):** Forces the speed and duplex defined by
               `cfgNetEthSpeed`. Only 10Mbit and 100Mbit rates are
                allowed in forced mode. 1000Mbit and 2500Mbit require the mode
                to be auto.
             * **auto(1):**  Advertises the supported auto negotiation
               defined by `cfgNetEthSpeed`."
        ::= { cfgNetEthernetTableEntry 8 }

    cfgNetEthSpeed OBJECT-TYPE
        SYNTAX Integer32 (1..175)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "A Bitmask Containing the Possible Speed/Duplex Combinations

             * 0x01 (1) = 10Mbit/Half
             * 0x02 (2) = 10Mbit/Full
             * 0x04 (4) = 100Mbit/Half
             * 0x08 (8) = 100Mbit/Full
             * 0x20 (32) = 1000Mbit/Full
             * 0x80 (128) = 2500Mbit/Full

             When `cfgNetEthAutoneg` is **forced(0)** only a single bit may be
             active. Only 10Mbit and 100Mbit rates are allowed in forced mode.
             1000Mbit and 2500Mbit require the mode to be auto.

             **Examples:**

             * **1:** Force 10Mbit half duplex
             * **8:** Force 100Mbit full duplex

             When `cfgNetEthAutoneg` is **auto(1)** multiple bits may be set which
             are used to advertise the supported speed/duplex.
             1000Mbit/Half is not supported.

             **Examples:**

             * **12:** Advertise 100 Mbit, half/full duplex (4 + 8)
             * **15:** Advertise 10/100 Mbit, half/full duplex (1 + 2 + 4 + 8)
             * **32:** Advertise only 1000 Mbit full duplex
             * **47:** Advertise all speeds up to 1000Mbit (1 + 2 + 4 + 8 + 32)
             * **175:** Advertise all speeds up to 2500Mbit (1 + 2 + 4 + 8 + 32 + 128)"
        ::= { cfgNetEthernetTableEntry 9 }

    cfgNetEthTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Trunk

             This entry is active when `cfgNetEthVlanMode` is set to
             **trunk(0)** or **nativeuntagged(3)**.

             It specifies which 802.1q VLANs are accepted ingress and egress on
             the respective port. All unspecified VLANs are dropped.
             Set this entry to -1 to allow all VLANs.
             Untagged traffic is considered as VLAN 0.

             The format of this entry is a space and/or comma separated list.
             To describe ranges the character '-' can be used.

             **Examples:**

             * '0,12,24,69'
             * '7 56 127'
             * '0, 84, 99, 2000'
             * '0, 12-17, 3000-4000'
             * '0-99 101-199 201-299, 301-4094'"
        ::= { cfgNetEthernetTableEntry 10 }

    cfgNetEthTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Tag

             This entry is active when `cfgNetEthVlanMode` is set to
             **access(1)** or **nativeuntagged(3)**. It specifies which 802.1q
             VLAN should be used for untagged ingress and egress traffic. Set
             this entry to `-1` to disable it."
        ::= { cfgNetEthernetTableEntry 11 }

    cfgNetEthVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface VLAN Mode

             * **trunk(0):** A trunk port carries packets on one or more specified
               VLANs specified in the cfgNetEthTrunk entry.
               A packet that ingresses on a trunk port is in the VLAN specified
               in its 802.1q header, or VLAN 0 if the packet has no 802.1q header
               (untagged frame). A packet that egresses through a trunk port will
               have an 802.1q header if it has a nonzero VLAN ID.
               Frames egressing on VLAN 0 have their tag stripped (egress untagged).
               Any packet that ingresses on a trunk port tagged with a
               VLAN that the port does not trunk is dropped.
             * **access(1):** An access port carries packets on exactly one VLAN
               specified in `cfgNetEthTag`. Packets egressing on an access
               port have no 802.1q header (egress untagged).
               Any packet with an 802.1q header with a nonzero VLAN ID that
               ingresses on an access port is dropped, regardless of whether
               the VLAN ID in the header is the access port's VLAN ID or not.
             * **nativeuntagged(3):** A native-untagged port resembles a trunk port,
               with the exception that a packet without an 802.1q header
               (ingress untagged) is automatically in the native VLAN specified
               in `cfgNetEthTag`. Frames egressing in the native VLAN are
               automatically untagged (egress untagged)."
        ::= { cfgNetEthernetTableEntry 12 }

    cfgNetEthProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetEthernetTableEntry 13 }

    cfgNetEthLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation."
        ::= { cfgNetEthernetTableEntry 15 }

    cfgNetEthMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..9000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface MTU

             The minimum value is 68.
             The maximum value is 9000.
             The default value is -1, which means that the system default value
             (usually 1500) will be used.

             When this interface is part of a bridge, the here configured MTU
             affects the MTU of the bridge.
             The bridge will have the smallest MTU of all its bridge members.

             **Example:**

             * br0 contains the interfaces eth0, eth1 and wlan0
             * eth0 is set to 1400
             * eth1 is set to 1200
             * wlan0 is set to -1 (default 1500)
             * This will result in an MTU of 1200 for br0"
        ::= { cfgNetEthernetTableEntry 16 }

    cfgNetEthMac OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet Interface MAC Address

             Set 00:00:00:00:00:00 to use the MAC address stored in the flash of
             the device.

             **Format:** `00:14:5a:02:10:42`"
        ::= { cfgNetEthernetTableEntry 19 }

-- -----------------------------------------------------------------------------

    cfgNetWlanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetWlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "WLAN Network Interfaces"
        ::= { cfgNetwork 2 }

    cfgNetWlanTableEntry OBJECT-TYPE
        SYNTAX  CfgNetWlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "WLAN Network Interfaces"
        INDEX {cfgNetWlanIndex}
        ::= { cfgNetWlanTable 1 }

    CfgNetWlanTableSeq ::=
        SEQUENCE {  cfgNetWlanIndex Integer32,
                    cfgNetWlanName DisplayString,
                    cfgNetWlanEnabled INTEGER,
                    cfgNetWlanBridge Integer32,
                    cfgNetWlanTrunk DisplayString,
                    cfgNetWlanTag Integer32,
                    cfgNetWlanVlanMode INTEGER,
                    cfgNetWlanProtected INTEGER,
                    cfgNetWlanLldpEnabled INTEGER,
                    cfgNetWlanMtu Integer32,
                    cfgNetWlanDhcpOption82 INTEGER
                 }

    cfgNetWlanIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetWlanTableEntry 1 }

    cfgNetWlanName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Interface"
        ::= { cfgNetWlanTableEntry 2 }

    cfgNetWlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface Disabled or Enabled"
        ::= { cfgNetWlanTableEntry 3 }

    cfgNetWlanBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             Bridges with an index >=100 are special bridges which forward
             link local traffic. This can be used for wireless links in 4addr
             mode which should act as a cable-replacement.

             **Note:** Such a bridge may only contain 2 interfaces!

             **Example:**

             * wlan0 and eth0 in br100, with eth1 as managment interface"
        ::= { cfgNetWlanTableEntry 7 }

    cfgNetWlanTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface Trunk

             This entry is active when `cfgNetWlanVlanMode` is set to
             **trunk(0)** or **nativeuntagged(3)**.

             It specifies which 802.1q VLANs are accepted ingress and egress on
             the respective port. All unspecified VLANs are dropped.
             Set this entry to -1 to allow all VLANs.
             Untagged traffic is considered as VLAN 0.

             The format of this entry is a space and/or comma separated list.
             To describe ranges the character '-' can be used.

             **Examples:**

             * '0,12,24,69'
             * '7 56 127'
             * '0, 84, 99, 2000'
             * '0, 12-17, 3000-4000'
             * '0-99 101-199 201-299, 301-4094'"
        ::= { cfgNetWlanTableEntry 10 }

    cfgNetWlanTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface Tag

             This entry is active when `cfgNetWlanVlanMode` is set to
             **access(1)** or **nativeuntagged(3)**. It specifies which 802.1q
             VLAN should be used for untagged ingress and egress traffic. Set
             this entry to -1 to disable it.

             Applies to AP and STA."
        ::= { cfgNetWlanTableEntry 11 }

    cfgNetWlanVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface VLAN Mode

             * **trunk(0):** A trunk port carries packets on one or more specified
               VLANs specified in the cfgNetWlanTrunk entry.
               A packet that ingresses on a trunk port is in the VLAN specified
               in its 802.1q header, or VLAN 0 if the packet has no 802.1q header
               (untagged frame). A packet that egresses through a trunk port will
               have an 802.1q header if it has a nonzero VLAN ID.
               Frames egressing on VLAN 0 have their tag stripped (egress untagged).
               Any packet that ingresses on a trunk port tagged with a
               VLAN that the port does not trunk is dropped.
             * **access(1):** An access port carries packets on exactly one VLAN
               specified in the cfgNetWlanTag. Packets egressing on an access
               port have no 802.1q header (egress untagged).
               Any packet with an 802.1q header with a nonzero VLAN ID that
               ingresses on an access port is dropped, regardless of whether
               the VLAN ID in the header is the access port's VLAN ID.
             * **nativeuntagged(3):** A native-untagged port resembles a trunk port,
               with the exception that a packet without an 802.1q header
               (ingress untagged) is automatically in the native VLAN specified
               in cfgNetWlanTag. Frames egressing in the native VLAN are
               automatically untagged (egress untagged).

             Applies to AP and STA."
        ::= { cfgNetWlanTableEntry 12 }

    cfgNetWlanProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetWlanTableEntry 13 }

    cfgNetWlanLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation."
        ::= { cfgNetWlanTableEntry 15 }

    cfgNetWlanMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..2304)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface MTU

             The minimum value is 256.
             The maximum value is 2304.
             The default value is -1, which means that the system default value
             (usually 1500) will be used.

             When this interface is part of a bridge, the here configured MTU
             affects the MTU of the bridge.
             The bridge will have the smallest MTU of all its bridge members.

             **Example:**

             * br0 contains the interfaces eth0, eth1 and wlan0
             * eth0 is set to -1 (default 1500)
             * eth1 is set to 9000
             * wlan0 is set to 2000
             * This will result in an MTU of 1500 for br0"
        ::= { cfgNetWlanTableEntry 16 }

    cfgNetWlanDhcpOption82 OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Interface DHCP Option 82

             When the wireless interface is bridged, enabling this option causes
             all DHCP request frames that pass through the interface to be
             extended with the DHCP option 82.

             The circuit-id (suboption 1) defines the identity of the AP and the
             circuit where the request was received.
             This is in the form: `<hostname>:<iface>`

             Example:

             * rmodem:wlan0

             The remote-id (suboption 2) defines the remote host.
             It is the MAC of the AP (static 6 bytes) followed by the SSID.
             This is in the form: `<mac>:<ssid>`

             Example:

             * 00145a012345:ExampleSsid"
        ::= { cfgNetWlanTableEntry 17 }

-- -----------------------------------------------------------------------------

    cfgNetVlanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetVlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "VLAN Network Interfaces"
        ::= { cfgNetwork 3 }

    cfgNetVlanTableEntry OBJECT-TYPE
        SYNTAX  CfgNetVlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "VLAN Network Interfaces"
        INDEX {cfgNetVlanIndex}
        ::= { cfgNetVlanTable 1 }

    CfgNetVlanTableSeq ::=
        SEQUENCE {  cfgNetVlanIndex Integer32,
                    cfgNetVlanName DisplayString,
                    cfgNetVlanEnabled INTEGER,
                    cfgNetVlanBridge Integer32,
                    cfgNetVlanParent DisplayString,
                    cfgNetVlanVid Integer32,
                    cfgNetVlanProtected INTEGER,
                    cfgNetVlanMtu Integer32,
                    cfgNetVlanPriority Integer32,
                    cfgNetVlanComment DisplayString
                 }

    cfgNetVlanIndex OBJECT-TYPE
        SYNTAX Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetVlanTableEntry 1 }

    cfgNetVlanName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the VLAN Interface"
        ::= { cfgNetVlanTableEntry 2 }

    cfgNetVlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface Disabled or Enabled"
        ::= { cfgNetVlanTableEntry 3 }

    cfgNetVlanBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             VLAN interfaces are always of type access.

             When set to -1, the VLAN interface will be created
             on the parent interface defined by `cfgNetVlanParent`."
        ::= { cfgNetVlanTableEntry 7 }

    cfgNetVlanParent OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface Parent

             Name of the physical parent interface on which the VLAN resides.

             This entry is only active when the VLAN interface is not part of
             a bridge (`cfgNetVlanBridge` = -1)."
        ::= { cfgNetVlanTableEntry 8 }

    cfgNetVlanVid OBJECT-TYPE
        SYNTAX Integer32 (0..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface VID"
        ::= { cfgNetVlanTableEntry 9 }

    cfgNetVlanProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetVlanTableEntry 13 }

    cfgNetVlanMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..9000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface MTU

             The minimum value is 68.
             The maximum value is 9000.
             The default value is -1, which means that the MTU is inherited
             from the bridge MTU.

             VLAN interfaces are internal ports of a bridge. Based on the MTU
             of the bridge, these internal ports inherit the MTU of the bridge.
             The Bridge MTU is the minumum MTU of its member-interfaces.
             VLAN interfaces are not considered member-interfaces when deriving
             the bridge MTU.
             When setting the VLAN MTU, it is not possible to set a higher MTU,
             than the value inherited from the bridge.
             Setting a value higher than the bridge MTU, will not result in an
             error, but instead set the MTU to the value inherited from the bridge."
        ::= { cfgNetVlanTableEntry 16 }

    cfgNetVlanPriority OBJECT-TYPE
        SYNTAX Integer32 (-1..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface Priority (PCP)

             Sets the PCP of the 802.1Q header to the value specified.

             When set to -1, will not set anything.
             However the PCP may be inherited from the priority of a frame
             received via another interface, e.g. wlan (TID), when L2
             prioritisation is enabled (see `cfgQosL3PrioEnabled`)."
        ::= { cfgNetVlanTableEntry 18 }

    cfgNetVlanComment OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN Interface User Comment

             This parameter has no operational function.
             It allows to store a comment about the use of this VLAN."
        ::= { cfgNetVlanTableEntry 19 }

-- -----------------------------------------------------------------------------

    cfgNetIpTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetIpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP Address Configuration"
        ::= { cfgNetwork 6 }

    cfgNetIpTableEntry OBJECT-TYPE
        SYNTAX  CfgNetIpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP Address Configuration"
        INDEX {cfgNetIpIndex}
        ::= { cfgNetIpTable 1 }

    CfgNetIpTableSeq ::=
        SEQUENCE {  cfgNetIpIndex Integer32,
                    cfgNetIpEnabled INTEGER,
                    cfgNetIpAddr DisplayString,
                    cfgNetIpProto INTEGER,
                    cfgNetIpInterface DisplayString,
                    cfgNetIpCarpId Integer32,
                    cfgNetIpComment DisplayString
                 }

    cfgNetIpIndex OBJECT-TYPE
        SYNTAX Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetIpTableEntry 1 }

    cfgNetIpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP Address Disabled or Enabled"
        ::= { cfgNetIpTableEntry 3 }

    cfgNetIpAddr OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP Address

             The IPv4 address (using CIDR notation) of the interface specified
             in `cfgNetIpInterface`."
        ::= { cfgNetIpTableEntry 4 }

    cfgNetIpProto OBJECT-TYPE
        SYNTAX INTEGER {static(0), dhcp(1), dhcpForceRenew(2), dhcpForceRelease(3), linkLocal(4), carp(5)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Protocol

             This parameter defines which protocol is used to configure the IPv4
             address for this interface.

             * **static(0):** Indicates that the address is manually configured to a
               specified address given by the IPv4 address parameter of this interface
               configuration.
             * **dhcp(1):** Indicates that an IPv4 address will be obtained by
               the DHCP client. In case the DHCP client is unable to get
               a valid IPv4 address the static IP address will be used
               as a fallback.
             * **linkLocal(4):** Indicates that an IPv4 link local address
               (an address in the range of 169.254.0.1 to 169.254.255.254,
               randomly chosen by the system) will be used on this
               interface. `cfgNetIpAddr` is then not used for the interface.
               **Note:** Only one interface of the device can use a linkLocal
               protocol.
             * **carp(5):** Indicates that an IPv4 address will be set by the
               CARP instance specified in `cfgNetIpCarpId`, when the CARP
               instance has the state MASTER.

             **Note:** Only one interface of the device may use a link
                       local protocol.

             For wireless interfaces, the following additional modes are available:

             * **dhcpForceRenew(2):** Indicates that an IPv4 address will
               be obtained by the DHCP client. In case the DHCP client is
               unable to get a valid IPv4 address the static IP address
               will be used as a fallback. On a STA this mode will
               perform a DHCP RENEW after every connection to an AP.
               This is useful if the device is roaming between different
               DHCP servers.
             * **dhcpForceRelease(3):**  Indicates that an IPv4 address
               will be obtained by the DHCP client. In case the DHCP
               client is unable to get a valid IPv4 address, the static
               IP address will be used as a fallback. On a STA this mode
               will perform a DHCP RELEASE followed by a DHCP DISCOVER
               after every connection to an AP. This is useful if the
               device is roaming between different DHCP servers which
               don't send NAK to an unknown device sending RENEW."
        ::= { cfgNetIpTableEntry 6 }

    cfgNetIpInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interface Name

             The name of the network interface on which the specified IP address
             is created."
        ::= { cfgNetIpTableEntry 8 }

    cfgNetIpCarpId OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference to CARP-Instance ID

             The referenced ID is reflected by `cfgNetCarpIndex`.
             This parameter is only active when `cfgNetIpProto` is set to
             **carp(5)**. Indicates that the referenced CARP instance processes
             this IP."
        ::= { cfgNetIpTableEntry 10 }

    cfgNetIpComment OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP User Comment

             This parameter has no operational function.
             It allows to store a comment about the use of this IP address."
        ::= { cfgNetIpTableEntry 11 }

-- -----------------------------------------------------------------------------

    cfgNetCarpTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetCarpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Redundant IP Addresses with the Common Address Redundancy Protocol (CARP)"
        ::= { cfgNetwork 7 }

    cfgNetCarpTableEntry OBJECT-TYPE
        SYNTAX  CfgNetCarpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Redundant IP Addresses with the Common Address Redundancy Protocol (CARP)"
        INDEX {cfgNetCarpIndex}
        ::= { cfgNetCarpTable 1 }

    CfgNetCarpTableSeq ::=
        SEQUENCE {  cfgNetCarpIndex Integer32,
                    cfgNetCarpEnabled INTEGER,
                    cfgNetCarpVhid Integer32,
                    cfgNetCarpPassword DisplayString,
                    cfgNetCarpAdvbase Integer32,
                    cfgNetCarpAdvskew Integer32,
                    cfgNetCarpAdvdivider Integer32,
                    cfgNetCarpRatio Integer32,
                    cfgNetCarpPreempt INTEGER,
                    cfgNetCarpPreemptdemote INTEGER,
                    cfgNetCarpLocalInterfaceGroup Integer32,
                    cfgNetCarpSyncInterface DisplayString,
                    cfgNetCarpMcastIp IpAddress
                 }

    cfgNetCarpIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetCarpTableEntry 1 }

    cfgNetCarpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Interface Disabled or Enabled"
        ::= { cfgNetCarpTableEntry 3 }

    cfgNetCarpVhid OBJECT-TYPE
        SYNTAX Integer32 (1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Virtual Host ID

             This is a unique number that is used to identify the redundancy
             group to other nodes in the group, and to distinguish between
             groups on the same network.

             This must be the same on all members of the group."
        ::= { cfgNetCarpTableEntry 10 }

    cfgNetCarpPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Authentication Password

             This is the password which is used to encrypt the CARP frames
             when talking to other CARP-enabled hosts in this redundancy group.

             This must be the same on all members of the group."
        ::= { cfgNetCarpTableEntry 11 }

    cfgNetCarpAdvbase OBJECT-TYPE
        SYNTAX Integer32 (1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Advertisement Base

             This parameter has a unit of 1 Second.

             This parameter specifies how often to transmit advertisement frames
             that we're a member of the redundancy group.

             This time is divided with `cfgNetCarpAdvdivider` to decrease
             the failovertime of the redundancy group."
        ::= { cfgNetCarpTableEntry 12 }

    cfgNetCarpAdvskew OBJECT-TYPE
        SYNTAX Integer32 (0..254)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Advertisement Skew

             This parameter has a unit of 1/255th of a Second.

             This parameter specifies how much to skew the advbase when
             sending CARP advertisements.

             By manipulating advskew, the master of a CARP group can be chosen.
             The higher the number, the less often frames are transmitted and
             the less preferred the host will be when determining the master.

             This time is divided with `cfgNetCarpAdvdivider` to decrease
             the failovertime of the redundancy group."
        ::= { cfgNetCarpTableEntry 13 }

    cfgNetCarpAdvdivider OBJECT-TYPE
        SYNTAX Integer32 (1..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Divider

             The divider for `cfgNetCarpAdvbase` and `cfgNetCarpAdvskew`

             This parameter specifies how much the Advbase and Advskew are
             divided to speed the algorithm up. With a factor of 1, the
             Advbase and Advskew are unchanged.

             Increasing the Advdivider to 10 speeds the algorithm up to allow a
             minimum advertisie time of 100ms instead of 1s.

             This must be the same on all members of the group."
        ::= { cfgNetCarpTableEntry 14 }

    cfgNetCarpRatio OBJECT-TYPE
        SYNTAX Integer32 (1..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Dead Ratio

             The ratio after which an existing master is considered dead.

             A slave device will wait:

             `cfgNetCarpRatio` * (`cfgNetCarpAdvbase` + `cfgNetCarpAdvskew`)

             before considering the current master as dead and attempt to become
             the new master. Since The locally configured values for Advbase and
             Advskew are used, if there is a better suited master (lower
             Advbase/Advskew), it will start advertising before the local device."
        ::= { cfgNetCarpTableEntry 15 }

    cfgNetCarpPreempt OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Preemption

             Preempt other masters when the local device is better.

             Allow hosts within a redundancy group that have a better Advbase
             and Advskew to preempt the current master."
        ::= { cfgNetCarpTableEntry 16 }

    cfgNetCarpPreemptdemote OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Preempt Demotion

             Preemt other masters when they demote themself.

             Allow hosts within a redundancy group that have a better Advbase
             and Advskew to preempt the current master when it demotes itself
             (skew >= 240).

             Preemptdemote only works when `cfgNetCarpPreempt` is used.

             Preemptdemote also controls if a master demotes itself when another
             CARP-instance in the same `cfgNetCarpLocalInterfaceGroup` goes
             down or is demoted."
        ::= { cfgNetCarpTableEntry 17 }

    cfgNetCarpLocalInterfaceGroup OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Local Interface Group

             The local carp interface group to which the carp interface belongs.

             When `cfgNetCarpPreempt` or `cfgNetCarpPreemptdemote` is set to
             enabled, the interface will demote itself (skew = 240) when another
             interface within the same local group goes down or is demoted."
        ::= { cfgNetCarpTableEntry 18 }

    cfgNetCarpSyncInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Control Interface

             This interface is used to transmit and receive CARP advertisements.

             This interface is required to have its own unique IP address."
        ::= { cfgNetCarpTableEntry 19 }

    cfgNetCarpMcastIp OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CARP Multicast Address

             The default multicast address for CARP is 224.0.0.18.

             Use this parameter to specify a custom multicast destination."
        ::= { cfgNetCarpTableEntry 21 }

-- -----------------------------------------------------------------------------

    cfgNetMacVlanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetMacVlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "MACVLAN Network Interfaces"
        ::= { cfgNetwork 9 }

    cfgNetMacVlanTableEntry OBJECT-TYPE
        SYNTAX  CfgNetMacVlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "MACVLAN Network Interfaces"
        INDEX {cfgNetMacVlanIndex}
        ::= { cfgNetMacVlanTable 1 }

    CfgNetMacVlanTableSeq ::=
        SEQUENCE {  cfgNetMacVlanIndex Integer32,
                    cfgNetMacVlanName DisplayString,
                    cfgNetMacVlanEnabled INTEGER,
                    cfgNetMacVlanParent DisplayString,
                    cfgNetMacVlanMac DisplayString,
                    cfgNetMacVlanMtu Integer32,
                    cfgNetMacVlanComment DisplayString
                 }

    cfgNetMacVlanIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetMacVlanTableEntry 1 }

    cfgNetMacVlanName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the MACVLAN Interface"
        ::= { cfgNetMacVlanTableEntry 2 }

    cfgNetMacVlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN Interface Disabled or Enabled"
        ::= { cfgNetMacVlanTableEntry 3 }

    cfgNetMacVlanParent OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN Interface Parent

             Name of the parent interface on which the MACVLAN resides."
        ::= { cfgNetMacVlanTableEntry 8 }

    cfgNetMacVlanMac OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN MAC Address

             Set `00:00:00:00:00:00` to use a random MAC address.

             **Format:** `00:14:5a:02:10:42`"
        ::= { cfgNetMacVlanTableEntry 15 }

    cfgNetMacVlanMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..9000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN Interface MTU

             The minimum value is 68.
             The maximum value is 9000.
             The default value is -1, which means that the MTU is inherited
             from the parent interface.

             MACVLAN interfaces are virtual interfaces which reside on another
             interface as parent. Based on the MTU of the parent, these virtual
             interfaces inherit the MTU of the parent.
             Setting the MACVLAN MTU to a value higher than the MTU inherited from
             the parent, will result in an error."
        ::= { cfgNetMacVlanTableEntry 16 }

    cfgNetMacVlanComment OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN Interface User Comment

             This parameter has no operational function.
             It allows to store a comment about the use of this MacVlan."
        ::= { cfgNetMacVlanTableEntry 19 }
-- -----------------------------------------------------------------------------

    cfgNetEth802dot1xTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetEth802dot1xTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wired 802.1X

             This table allows to configure authentication of clients connecting
             to the Ethernet ports.

             The Ethernet port stays locked until the client has authenticated
             itself via 802.1X.

             Depending on the value in `cfgNetEth802dot1xEapReauthPeriod`,
             client have to reauthenticate regularly.

             A port is automatically locked when the link of the interface
             goes down (the cable is unplugged), and has to be authenticated
             again until it can be further used."
        ::= { cfgNetwork 10 }

    cfgNetEth802dot1xTableEntry OBJECT-TYPE
        SYNTAX  CfgNetEth802dot1xTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wired 802.1X Entry"
        INDEX {cfgNetEth802dot1xIndex}
        ::= { cfgNetEth802dot1xTable 1 }

    CfgNetEth802dot1xTableSeq ::=
        SEQUENCE {  cfgNetEth802dot1xIndex Integer32,
                    cfgNetEth802dot1xName DisplayString,
                    cfgNetEth802dot1xEnabled INTEGER,
                    cfgNetEth802dot1xOwnIpAddr IpAddress,
                    cfgNetEth802dot1xAuthServerParameter Integer32,
                    cfgNetEth802dot1xEapReauthPeriod Integer32
                 }

    cfgNetEth802dot1xIndex OBJECT-TYPE
        SYNTAX Integer32 (0..9)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetEth802dot1xTableEntry 1 }

    cfgNetEth802dot1xName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Ethernet Interface"
        ::= { cfgNetEth802dot1xTableEntry 2 }

    cfgNetEth802dot1xEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wired Port Security Interface Disabled or Enabled

             When this is enabled, connecting clients will not be admitted until
             they have authenticated against the configured RADIUS server."
        ::= { cfgNetEth802dot1xTableEntry 3 }


    cfgNetEth802dot1xOwnIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Own IP Address of the Authenticator

             This field is used as NAS-IP-Address RADIUS attribute.
             Set this to the IP address with which the authenticator will
             communicate with the RADIUS server."
        ::= { cfgNetEth802dot1xTableEntry 4 }

    cfgNetEth802dot1xAuthServerParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the RADIUS Auth Server Table

             Uses all auth servers in the `cfgWlan802dot1xAuthServerTable`
             which have as `cfgWlan802dot1xAuthSrvId` the value set here."
        ::= { cfgNetEth802dot1xTableEntry 5 }

    cfgNetEth802dot1xEapReauthPeriod OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "EAP Reauthentication Period in Seconds

             To disable reauthentication, set this value to `0`."
        ::= { cfgNetEth802dot1xTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgNetWwanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetWwanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Network Interfaces

             Applies to cellular products only."
        ::= { cfgNetwork 11 }

    cfgNetWwanTableEntry OBJECT-TYPE
        SYNTAX  CfgNetWwanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Network Interface

             Applies to cellular products only."
        INDEX {cfgNetWwanIndex}
        ::= { cfgNetWwanTable 1 }

    CfgNetWwanTableSeq ::=
        SEQUENCE {  cfgNetWwanIndex Integer32,
                    cfgNetWwanName DisplayString,
                    cfgNetWwanEnabled INTEGER,
                    cfgNetWwanMtu Integer32
                 }

    cfgNetWwanIndex OBJECT-TYPE
        SYNTAX Integer32 (0..7)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index

             Applies to cellular products only."
        ::= { cfgNetWwanTableEntry 1 }

    cfgNetWwanName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Network Interface

             The name of cellular network interfaces at system level is
             typically derived from the term Wireless Wide Area Network (WWAN),
             e.g. `wwan0`.

             The default carrier configuration is set in
             `cfgCellDefaultBearerTable`.

             Applies to cellular products only."
        ::= { cfgNetWwanTableEntry 2 }

    cfgNetWwanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Cellular Network Interface Disabled or Enabled

             Applies to cellular products only."
        ::= { cfgNetWwanTableEntry 3 }

    cfgNetWwanMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The MTU of the Cellular Network Interface

             The default value is -1, which means that the system default value
             (usually 1500) will be used. This value may be provided by the
             service provider and may change depending on the provider.

             It is not recommended to set a value, unless you know what you do.

             Applies to cellular products only."
        ::= { cfgNetWwanTableEntry 16 }

-- -----------------------------------------------------------------------------

    cfgNetOpenvpnTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetOpenvpnTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Table

            This table is in a one-to-one relation with the
            `cfgVpnOpenvpnTable`, where both indices match.
            "
        ::= { cfgNetwork 12 }

    cfgNetOpenvpnTableEntry OBJECT-TYPE
        SYNTAX  CfgNetOpenvpnTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Entry"
        INDEX {cfgNetOpenvpnIndex}
        ::= { cfgNetOpenvpnTable 1 }

    CfgNetOpenvpnTableSeq ::=
        SEQUENCE {  cfgNetOpenvpnIndex Integer32,
                    cfgNetOpenvpnName DisplayString,
                    cfgNetOpenvpnEnabled INTEGER,
                    cfgNetOpenvpnBridge Integer32,
                    cfgNetOpenvpnTrunk DisplayString,
                    cfgNetOpenvpnTag Integer32,
                    cfgNetOpenvpnVlanMode INTEGER,
                    cfgNetOpenvpnProtected INTEGER,
                    cfgNetOpenvpnLldpEnabled INTEGER,
                    cfgNetOpenvpnMtu Integer32
                 }

    cfgNetOpenvpnIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetOpenvpnTableEntry 1 }

    cfgNetOpenvpnName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the OpenVPN Interface"
        ::= { cfgNetOpenvpnTableEntry 2 }

    cfgNetOpenvpnEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Disabled or Enabled"
        ::= { cfgNetOpenvpnTableEntry 3 }

    cfgNetOpenvpnBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             Bridges with an index >=100 are special bridges which forward
             link local traffic.
             This can be used for tunnels which act as a cable-replacement.

             **Note:** Such a bridge may only contain 2 interfaces!

             **Example:**

             * ovpn0 and eth0 in br100, with eth1 as managment interface

             **Note:** Interfaces may only be configured in a bridge when
             `cfgVpnOpenvpnDevType` is set to 1 (tap)."
        ::= { cfgNetOpenvpnTableEntry 7 }

    cfgNetOpenvpnTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Trunk

             This entry is active when `cfgNetOpenvpnVlanMode` is set to
             **trunk(0)** or **nativeuntagged(3)**.

             It specifies which 802.1q VLANs are accepted ingress and egress on
             the respective port. All unspecified VLANs are dropped.
             Set this entry to -1 to allow all VLANs.
             Untagged traffic is considered as VLAN 0.

             The format of this entry is a space and/or comma separated list.
             To describe ranges the character '-' can be used.

             **Examples:**

             * '0,12,24,69'
             * '7 56 127'
             * '0, 84, 99, 2000'
             * '0, 12-17, 3000-4000'
             * '0-99 101-199 201-299, 301-4094'"
        ::= { cfgNetOpenvpnTableEntry 10 }

    cfgNetOpenvpnTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface Tag

             This entry is active when `cfgNetOpenvpnVlanMode` is set to:
             **access(1)** or **native-untagged(3)**.
             It specifies which 802.1q VLAN should be used for untagged
             ingress and egress traffic.
             Set this entry to -1 to disable it."
        ::= { cfgNetOpenvpnTableEntry 11 }

    cfgNetOpenvpnVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface VLAN Mode

             This entry specifies how the port should behave:

             * **trunk(0):** A trunk port carries packets on one or more specified
               VLANs specified in the cfgNetOpenvpnTrunk entry.
               A packet that ingresses on a trunk port is in the VLAN specified
               in its 802.1q header, or VLAN 0 if the packet has no 802.1q header
               (untagged frame). A packet that egresses through a trunk port will
               have an 802.1q header if it has a nonzero VLAN id.
               Frames egressing on VLAN 0 have their tag stripped (egress untagged).
               Any  packet  that ingresses on a trunk port tagged with a
               VLAN that the port does not trunk is dropped.
             * **access(1):** An access port carries packets on exactly one VLAN
               specified  in  the cfgNetOpenvpnTag. Packets egressing on an access
               port have no 802.1q header (egress untagged).
               Any packet with an 802.1q header with a nonzero VLAN id that
               ingresses  on an access port is dropped, regardless of whether
               the VLAN id in the header is the access port's VLAN id.
             * **nativeuntagged(3):** A native-untagged port resembles a trunk
               port, with the exception that a packet without an 802.1q header
               (ingress untagged) is automatically in the native-vlan specified
               in cfgNetOpenvpnTag. Frames egressing in the native-vlan are
               automatically untagged (egress untagged)."
        ::= { cfgNetOpenvpnTableEntry 12 }

    cfgNetOpenvpnProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetOpenvpnTableEntry 13 }

    cfgNetOpenvpnLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation."
        ::= { cfgNetOpenvpnTableEntry 15 }

    cfgNetOpenvpnMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Interface MTU

             The minimum allowed valid value is 68.
             The maximum allowed valid value is 65535.
             The default value is -1, which does not change what is set by the
             system (usually 1500)."
        ::= { cfgNetOpenvpnTableEntry 16 }

-- -----------------------------------------------------------------------------

    cfgNetIpsecTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNetIpsecTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IPsec Network Interfaces"
        ::= { cfgNetwork 13 }

    cfgNetIpsecTableEntry OBJECT-TYPE
        SYNTAX  CfgNetIpsecTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IPsec Network Interfaces"
        INDEX {cfgNetIpsecIndex}
        ::= { cfgNetIpsecTable 1 }

    CfgNetIpsecTableSeq ::=
        SEQUENCE {  cfgNetIpsecIndex Integer32,
                    cfgNetIpsecName DisplayString,
                    cfgNetIpsecEnabled INTEGER,
                    cfgNetIpsecMtu Integer32
                 }

    cfgNetIpsecIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetIpsecTableEntry 1 }

    cfgNetIpsecName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the IPsec Interface"
        ::= { cfgNetIpsecTableEntry 2 }

    cfgNetIpsecEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Interface Disabled or Enabled"
        ::= { cfgNetIpsecTableEntry 3 }

    cfgNetIpsecMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..65515)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Interface MTU

             When VTI is enabled (see `cfgVpnIpsecGlblVirtualTunnelInterface`),
             this allows to manually set the MTU of the IPsec tunnel."
        ::= { cfgNetIpsecTableEntry 16 }

-- -----------------------------------------------------------------------------

    cfgNetFlowControllerTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgNetFlowControllerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "FlowController Interfaces"
        ::= { cfgNetwork 14 }

    cfgNetFlowControllerTableEntry OBJECT-TYPE
        SYNTAX CfgNetFlowControllerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "FlowController Network Interfaces"
        INDEX {cfgNetFcIndex}
        ::= { cfgNetFlowControllerTable 1 }

    CfgNetFlowControllerTableSeq ::=
        SEQUENCE {  cfgNetFcIndex Integer32,
                    cfgNetFcName DisplayString,
                    cfgNetFcEnabled INTEGER,
                    cfgNetFcBridge Integer32,
                    cfgNetFcTrunk DisplayString,
                    cfgNetFcTag Integer32,
                    cfgNetFcVlanMode INTEGER,
                    cfgNetFcProtected INTEGER,
                    cfgNetFcLldpEnabled INTEGER,
                    cfgNetFcFlowMode INTEGER
                 }

    cfgNetFcIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetFlowControllerTableEntry 1 }

    cfgNetFcName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Name of the Flow Controller Bridge"
        ::= { cfgNetFlowControllerTableEntry 2 }

    cfgNetFcEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Bridge Disabled or Enabled"
        ::= { cfgNetFlowControllerTableEntry 3 }

    cfgNetFcBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             Bridges with an index >=100 are special bridges which forward
             link local traffic.
             This can be used for wireless links in 4addr mode which should act
             as a cable-replacement.

             **Note:** Such a bridge may only contain 2 interfaces!

             **Example:**

             * wlan0 and eth0 in br100, with eth1 as managment interface"
        ::= { cfgNetFlowControllerTableEntry 7 }

    cfgNetFcTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Trunk

             This entry is active when `cfgNetFcVlanMode` is set to
             **trunk(0)** or **nativeuntagged(3)**.

             It specifies which 802.1q VLANs are accepted ingress and egress on
             the respective port. All unspecified VLANs are dropped.
             Set this entry to -1 to allow all VLANs.
             Untagged traffic is considered as VLAN 0.

             The format of this entry is a space and/or comma separated list.
             To describe ranges the character '-' can be used.

             **Examples:**

             * '0,12,24,69'
             * '7 56 127'
             * '0, 84, 99, 2000'
             * '0, 12-17, 3000-4000'
             * '0-99 101-199 201-299, 301-4094'"
        ::= { cfgNetFlowControllerTableEntry 10 }

    cfgNetFcTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Tag

             This entry is active when `cfgNetFcVlanMode` is set to:
             **access(1)** or **native-untagged(3)**.

             It specifies which 802.1q VLAN should be used for untagged
             ingress and egress traffic.
             Set this entry to -1 to disable it."
        ::= { cfgNetFlowControllerTableEntry 11 }

    cfgNetFcVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller VLAN Mode

             * **trunk(0):** A trunk port carries packets on one or more specified
               VLANs specified in the `cfgNetFcTrunk` entry.
               A packet that ingresses on a trunk port is in the VLAN specified
               in its 802.1q header, or VLAN 0 if the packet has no 802.1q header
               (untagged frame). A packet that egresses through a trunk port will
               have an 802.1q header if it has a nonzero VLAN id.
               Frames egressing on VLAN 0 have their tag stripped (egress untagged).
               Any  packet  that ingresses on a trunk port tagged with a
               VLAN that the port does not trunk is dropped.
             * **access(1):** An access port carries packets on exactly one VLAN
               specified  in  the `cfgNetFcTag`. Packets egressing on an access
               port have no 802.1q header (egress untagged).
               Any packet with an 802.1q header with a nonzero VLAN id that
               ingresses  on an access port is dropped, regardless of whether
               the VLAN id in the header is the access port's VLAN id.
             * **nativeuntagged(3):** A native-untagged port resembles a trunk
               port, with the exception that a packet without an 802.1q header
               (ingress untagged) is automatically in the native-vlan specified
               in `cfgNetFcTag`. Frames egressing in the native-vlan are
               automatically untagged (egress untagged)."
        ::= { cfgNetFlowControllerTableEntry 12 }

    cfgNetFcProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetFlowControllerTableEntry 13 }

    cfgNetFcLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation."
        ::= { cfgNetFlowControllerTableEntry 15 }

    cfgNetFcFlowMode OBJECT-TYPE
        SYNTAX INTEGER { normal(0), fullduplex(1), lacpactive(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Flow Controller Mode

             * **normal(0):** Behaves like a normal bridge
             * **fullduplex(1):** Transmits frames on the bridge-master, and
               receives frames on all other members of the bridge.
               The bridge-master is the first interface which is added to a
               bride. The order in which interfaces are added is ascending in
               interface number: eth, wlan, ovpn, fc.
             * **lacpactive(2):** LACP active mode with fast time"
        ::= { cfgNetFlowControllerTableEntry 17 }

-- -----------------------------------------------------------------------------

    cfgNetTunnelEndPointTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgNetTunnelEndPointTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Interfaces"
        ::= { cfgNetwork 15 }

    cfgNetTunnelEndPointTableEntry OBJECT-TYPE
        SYNTAX CfgNetTunnelEndPointTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Interfaces"
        INDEX {cfgNetTepIndex}
        ::= { cfgNetTunnelEndPointTable 1 }

    CfgNetTunnelEndPointTableSeq ::=
        SEQUENCE {  cfgNetTepIndex Integer32,
                    cfgNetTepName DisplayString,
                    cfgNetTepEnabled INTEGER,
                    cfgNetTepBridge Integer32,
                    cfgNetTepTrunk DisplayString,
                    cfgNetTepTag Integer32,
                    cfgNetTepVlanMode INTEGER,
                    cfgNetTepProtected INTEGER,
                    cfgNetTepLldpEnabled INTEGER,
                    cfgNetTepMtu Integer32
                 }

    cfgNetTepIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetTunnelEndPointTableEntry 1 }

    cfgNetTepName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Tunnel Endpoint"
        ::= { cfgNetTunnelEndPointTableEntry 2 }

    cfgNetTepEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Disabled or Enabled"
        ::= { cfgNetTunnelEndPointTableEntry 3 }

    cfgNetTepBridge OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Interface Bridge Membership

             If value >= 0 then interface is part of bridge.

             * -1: none
             * 0: br0
             * 1: br1
             * X: brX

             Bridges with an index >=100 are special bridges which forward
             link local traffic. This can be used for wireless links in 4addr
             mode which should act as a cable-replacement.

             **Note:** Such a bridge may only contain 2 interfaces!

             **Example:**

             * tep0 and wlan0 in br100, with eth0/1 as management interface

             Not all types of tunnels configured in `cfgVpnTepTunnelType` are
             able to be bridged.
             Currently supported types to be bridged are:

             * **gretap(1)**
             * **vxlan(2)**"
        ::= { cfgNetTunnelEndPointTableEntry 7 }

    cfgNetTepTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Trunk

             This entry is active when `cfgNetTepVlanMode` is set to
             **trunk(0)** or **nativeuntagged(3)**.

             It specifies which 802.1q VLANs are accepted ingress and egress on
             the respective port. All unspecified VLANs are dropped.
             Set this entry to -1 to allow all VLANs.
             Untagged traffic is considered as VLAN 0.

             The format of this entry is a space and/or comma separated list.
             To describe ranges the character '-' can be used.

             **Examples:**

             * '0,12,24,69'
             * '7 56 127'
             * '0, 84, 99, 2000'
             * '0, 12-17, 3000-4000'
             * '0-99 101-199 201-299, 301-4094'"
        ::= { cfgNetTunnelEndPointTableEntry 10 }

    cfgNetTepTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Tag

             This entry is active when `cfgNetTepVlanMode` is set to:
             **access(1):** or **nativeuntagged(3)**.
             It specifies which 802.1q VLAN should be used for untagged
             ingress and egress traffic.
             Set this entry to -1 to disable it."
        ::= { cfgNetTunnelEndPointTableEntry 11 }

    cfgNetTepVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint VLAN Mode

             * **trunk(0):** A trunk port carries packets on one or more specified
               VLANs specified in the `cfgNetTepTrunk` entry.
               A packet that ingresses on a trunk port is in the VLAN specified
               in its 802.1q header, or VLAN 0 if the packet has no 802.1q header
               (untagged frame). A packet that egresses through a trunk port will
               have an 802.1q header if it has a nonzero VLAN id.
               Frames egressing on VLAN 0 have their tag stripped (egress untagged).
               Any  packet  that ingresses on a trunk port tagged with a
               VLAN that the port does not trunk is dropped.
             * **access(1):** An access port carries packets on exactly one VLAN
               specified  in  the `cfgNetTepTag`. Packets egressing on an access
               port have no 802.1q header (egress untagged).
               Any packet with an 802.1q header with a nonzero VLAN id that
               ingresses  on an access port is dropped, regardless of whether
               the VLAN id in the header is the access port's VLAN id.
             * **nativeuntagged(3):** A native-untagged port resembles a trunk
               port, with the exception that a packet without an 802.1q header
               (ingress untagged) is automatically in the native-vlan specified
               in `cfgNetTepTag`. Frames egressing in the native-vlan are
               automatically untagged (egress untagged)."
        ::= { cfgNetTunnelEndPointTableEntry 12 }

    cfgNetTepProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Port Protection

             This feature only applies to bridged interfaces.

             The protected port feature allows bridged ports to be designated
             as protected. Traffic between protected ports is blocked.
             Protected ports can send traffic to unprotected ports. Unprotected
             ports can send traffic to any port."
        ::= { cfgNetTunnelEndPointTableEntry 13 }

    cfgNetTepLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation."
        ::= { cfgNetTunnelEndPointTableEntry 15 }

    cfgNetTepMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..65504)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint MTU

             The minimum allowed valid value is 68.
             The maximum allowed valid value depends on the used tunnel type
             specified in `cfgVpnTepTunnelType`.
             The default value is `-1`, and sets the MTU automatically according
             to the list below. The default value depends on the tunnel type
             specified in `cfgVpnTepTunnelType`.

             | Type   | Default               | Maximum |
             |--------|-----------------------|---------|
             | gre    | 1476 (1500-20-4)      | 65504   |
             | gretap | 1462 (1500-20-4-14)   | 65490   |
             | vxlan  | 1450 (1500-20-8-8-14) | 65484   |

             The outer IP header is 20 bytes. The GRE header is 4 bytes.
             For gretap there is an additional ethernet header of 14 bytes.
             Vxlan has an UDP header of 8 bytes and the vxlan header of 8 bytes.

             When the TEP interface is bridged and the payload is VLAN tagged
             the resulting frames have another 4 byte overhead. The MTU in the
             above list has to be reduced accordingly.

             When this interface is part of a bridge, the here configured MTU
             affects the MTU of the bridge.
             The bridge will have the smallest MTU of all its bridge members.

             **Example:**

             * br0 contains the interfaces eth0, eth1 and tep0
             * eth0 is set to -1 (default 1500)
             * eth1 is set to 9000
             * tep0 is set to 1300
             * This will result in an MTU of 1300 for br0"
        ::= { cfgNetTunnelEndPointTableEntry 16 }

-- -----------------------------------------------------------------------------

    cfgNetWireguardTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgNetWireguardTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Interfaces"
        ::= { cfgNetwork 16 }

    cfgNetWireguardTableEntry OBJECT-TYPE
        SYNTAX CfgNetWireguardTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Interfaces"
        INDEX {cfgNetWgIndex}
        ::= { cfgNetWireguardTable 1 }

    CfgNetWireguardTableSeq ::=
        SEQUENCE {  cfgNetWgIndex Integer32,
                    cfgNetWgName DisplayString,
                    cfgNetWgEnabled INTEGER,
                    cfgNetWgMtu Integer32
                 }

    cfgNetWgIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNetWireguardTableEntry 1 }

    cfgNetWgName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireguard Interface"
        ::= { cfgNetWireguardTableEntry 2 }

    cfgNetWgEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Interface Disabled or Enabled"
        ::= { cfgNetWireguardTableEntry 3 }

    cfgNetWgMtu OBJECT-TYPE
        SYNTAX Integer32 (-1..65504)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Interface MTU

             The default value is -1, which does not change what is set by the
             system (usually 1420)."
        ::= { cfgNetWireguardTableEntry 16 }

-- =============================================================================

-- Wireless

    cfgWlanDeviceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Hardware Modules"
        ::= { cfgWireless 1 }

    cfgWlanDeviceTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Hardware Modules"
        INDEX {cfgWlanDevIndex}
        ::= { cfgWlanDeviceTable 1 }

    CfgWlanDeviceTableSeq ::=
        SEQUENCE {  cfgWlanDevIndex Integer32,
                    cfgWlanDevName DisplayString,
                    cfgWlanDevModulation INTEGER,
                    cfgWlanDevBandwidth INTEGER,
                    cfgWlanDevFrequency Integer32,
                    cfgWlanDevPower Integer32,
                    cfgWlanDevDistance Integer32,
                    cfgWlanDevRts Integer32,
                    cfgWlanDevFragments Integer32,
                    cfgWlanDevShortRetry Integer32,
                    cfgWlanDevLongRetry Integer32,
                    cfgWlanDevAntennaGain Integer32,
                    cfgWlanDevTxAntenna Integer32,
                    cfgWlanDevRxAntenna Integer32,
                    cfgWlanDevPhy DisplayString,
                    cfgWlanDevHtCapabilities Integer32,
                    cfgWlanDevQmrrString DisplayString,
                    cfgWlanDevAtfSchedulingAlgorithm INTEGER
                 }

    cfgWlanDevIndex OBJECT-TYPE
        SYNTAX Integer32 (0..2)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanDeviceTableEntry 1 }

    cfgWlanDevName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Device.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 2 }

    cfgWlanDevModulation OBJECT-TYPE
        SYNTAX INTEGER { g(2), bg(3), a(4), ng(10), na(12), ac(28), axg(58), axa(60), beg(122), bea(124) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Physical Wireless Device Modulation Mode

             For an AP the following modulation modes are configurable:

             * **g(2):**  This modulation mode uses OFDM data rates up
               to 54 MBit/s in the frequency band between 2.4 and 2.4835 GHz.
               It supports the 802.11g standard.
             * **bg(3):** This modulation mode uses data rates up to
               54 MBit/s in the frequency band between 2.4 and 2.4835 GHz.
               It supports the 802.11bg standard. The modulation is
               either DSSS for the slower rates or OFDM for the faster ones.
             * **a(4):** Mode supports data rates up to 54 MBit/s in the
               5GHz frequency band and only OFDM modulation.
             * **ng(10):** For 2.4GHz
             * **na(12):** For 5GHz.
             * **ac(28):** 11ac mode for 5GHz.
             * **axg(58):** 11ax mode for 2.4GHz.
             * **axa(60):** 11ax mode for 5GHz or 6GHz.
             * **beg(122):** 11be mode for 2.4GHz.
             * **bea(124):** 11be mode for 5GHz or 6GHz.

             **Note:** Some products do not support all modulations.
             Please check the data-sheet of your product.

             **Note:**:
             The STA scans both frequency bands (2.4 GHz and 5GHz)
             regardless of the modulation. The STA will adapt to the modulation
             of the Access Point during connection.

             **Note:**:
             For a STA the modulation can be used to explicitly disable n-rates
             even tough n-rates would be supported by the Access Point. The
             n-rates data rates support up to 300 MBit/s in the 2.4GHz and 5GHz
             frequency band and only OFDM modulation.

             Setting modulation to **10(ng)** or **12(na)** will
             enable n-rates if n-rates are supported by the Access Point,
             while setting modulation to **g(2)**, **bg(3)** or **a(4)** will
             disable n-rates. This feature applies to 802.11n products only.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 4 }

    cfgWlanDevBandwidth OBJECT-TYPE
        SYNTAX INTEGER { bw20(0), bw40Plus(1), bw40Minus(2), bwQuarter(3), bwHalf(4),
                         bw80(5), bw160(6), bw8080(7), bwAuto(8), bw320(9) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Bandwidth Mode specifies the Bandwidth of the Channel.

             * **bw20(0):** for 20MHz wide channel.
             * **bw40Plus(1):** for 40MHz wide channel with the side
               channel on the top.
             * **bw40Minus(2):** for 40MHz wide channel with the side
               channel on the bottom.
             * **bwQuarter(3):** for 5MHz wide channel (quarter rate).
             * **bwHalf(4):** for 10MHz wide channel (half rate).
             * **bw80(5):** 80MHz wide channel (only in 11ac/ax mode)
             * **bw160(6):** 160MHz wide channel (only in 11ac/ax mode)
             * **bw8080(7):** 80+80MHz wide channel (only in 11ac/ax mode)
             * **bwAuto(8):** automatic channel width (only in 11ac/ax mode)
             * **bw320(9):** 320MHz wide channel (only in 11be mode)

             **Note:** **bw40Plus(1)** and **bw40Minus(2)** may not be
                       usable on all channels.

             **Examples:**

             The following table shows examples of which channels may be used.
             The full list can be found in IEEE 802.11n Annex J. Depending on
             the country, not all frequencies may be available.

             | Band       | **bw40Plus(1)**         | **bw40Minus(2)**       |
             |------------|-------------------------|------------------------|
             | 2.4 GHz    | 2412 to 2452            | 2432 to 2472           |
             | 5 GHz      | 5180, 5220, 5260, etc.  | 5200, 5240, 5280, etc. |

             **Note:** Some products do not support all bandwidths.
             Please check the data-sheet of your product.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 5 }

    cfgWlanDevFrequency OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Frequency in MHz.

             In AP mode, setting the wireless frequency to zero(0) enables the
             automatic channel selection (ACS) feature. This forces the AP to choose
             the best channel for operation.

             In STA mode, this parameter defindes the single scan frequency when
             `cfgWlanIfaceScanList` is set to `-1`.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 6 }

    cfgWlanDevPower OBJECT-TYPE
        SYNTAX Integer32 (0..50)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "TX Power Limit (EIRP)

             Max. limit for wireless output power as effective isotropic radiated power
             (EIRP) in dBm including array gain and antenna gain.

             **Note:** This parameter only limits the maximum output power. The effective
             output power might be lower (regulatory limits, rate depended limits).

             EIRP (dBm) = antenna port power (dBm) + array gain (dB) + antenna gain (dBi)

             - The antenna port power in dBm defines the power transmitted per antenna port
             (chain).
             - The array gain in dB defines the gain which is achieved by the use of multiple
             antenna ports (chains). The number of active antenna ports (chains) is defined by
             `cfgWlanDevTxAntenna`. The array gain depends on number of active antenna ports
             (chains) as following:
                 - One antenna port (chain) = 0 dB
                 - Two antenna ports (chains) = 3 dB
                 - Three antenna ports (chains) = 5 dB
                 - Four antenna ports (chains) = 6 dB
             - The antenna gain in dBi defines the gain which is achieved by the antenna.
             The antenna gain is configured by `cfgWlanDevAntennaGain`.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 8 }

    cfgWlanDevDistance OBJECT-TYPE
        SYNTAX Integer32 (0..114750)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Maximum distance in meters a client can be apart from the access
             point. Even though the distance is set in meters, the slot time
             settings change in 450m steps.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanDeviceTableEntry 10 }

    cfgWlanDevRts OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RTS/CTS Threshold

             Frames equal or longer in bytes than this value require a
             RTS/CTS handshake.

             RTS/CTS is used in hidden node situations. In 11bg and b mode,
             these frames are sent in DSSS modulation at 11b data rates.
             Otherwise (pure-g and a) OFDM rates are used.

             The following settings are special:

             * **-1** disable value, RTS/CTS is disabled.
             * **0** minimum value, RTS/CTS is always used.
             * **2346** maximum value legacy-rates, RTS/CTS is enabled for
               maximum sized frames.
             * **65535** maximum value n-rates, RTS/CTS is enabled for maximal
               aggregate sized frames.

             **Note:** It is not recommended to use RTS/CTS in AP mode.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 11 }

    cfgWlanDevFragments OBJECT-TYPE
        SYNTAX Integer32 (-1..2346)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Fragmentation Threshold

             Frames longer in bytes than this threshold will be fragmented.

             Fragmentation can be used to reduce the number of retransmissions.
             The following settings are special

             * **-1** disable value, fragmentation is disabled
             * **256** minimum value, frames above 256 are fragmented.
             * **2346** maximum value, essentially the same as disabled.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 12 }

    cfgWlanDevShortRetry OBJECT-TYPE
        SYNTAX Integer32 (1..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RTS Transmission Retries

             This parameter only applies to legacy bitrates (802.11b/g/a).
             To affect the retry behaviour of 802.11n rates see `cfgWlanDevQmrrString`.

             Number of times the transmission of the RTS frame will be retried
             if there is no CTS received from the AP. This is in addition to
             the initial RTS attempt.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanDeviceTableEntry 13 }

    cfgWlanDevLongRetry OBJECT-TYPE
        SYNTAX Integer32 (1..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Data Frame Tries

             This parameter only applies to legacy bitrates (802.11b/g/a).
             To affect the retry behaviour of 802.11n rates see `cfgWlanDevQmrrString`.

             Number of times the unicast data frames will be retried if there is
             no ACK from the receiver. This value includes the initial attempt.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanDeviceTableEntry 14 }

    cfgWlanDevAntennaGain OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Antenna gain in dBi.

             If multiple antennas with different gains are connected, the value
             of the antenna with the highest gain shall be configured.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 15 }

    cfgWlanDevTxAntenna OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of Wireless Transmitter Antenna Ports

             This is a bitmask to enable/disable the chains.

             **Examples:**

             * 1(0001) = A1 (chain 0) enabled
             * 3(0011) = A1 and A2 (chain 0 and 1) enabled
             * 7(0111) = A1, A2 and A3 (chain 0, 1 and 2) enabled
             * 15(1111) = A1, A2, A3 and A4 (chain 0, 1, 2 and 3) enabled

             **Note:** Number of available antennas depends on the product.
             Please check the data-sheet of your product.

             Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 16 }

    cfgWlanDevRxAntenna OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of Wireless Receiver Antenna Ports

            This is a bitmask to enable/disable the chains.

            **Examples:**

            * 1(0001) = A1 (chain 0) enabled
            * 3(0011) = A1 and A2 chain 0 and 1) enabled
            * 7(0111) = A1, A2 and A3 (chain 0, 1 and 2) enabled
            * 15(1111) = A1, A2, A3 and A4 (chain 0, 1, 2 and 3) enabled

             **Note:** Number of available antennas depends on the product.
             Please check the data-sheet of your product.

            Applies to AP and STA."
        ::= { cfgWlanDeviceTableEntry 17 }

    cfgWlanDevPhy OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The Map Between Physical Device and Radio"
        ::= { cfgWlanDeviceTableEntry 18 }

    cfgWlanDevHtCapabilities OBJECT-TYPE
        SYNTAX Integer32 (0..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "HT capability flags:

             * [LDPC]          = 1      Enable support for LDPC coding
             * [SHORT-GI-20]   = 32     Allow short GI for 20 MHz
             * [SHORT-GI-40]   = 64     Allow short GI for 40 MHz
             * [TX-STBC]       = 128    Enable support for TX-STBC
             * [RX-STBC1]      = 256    Enable support for RX-STBC1
             * [DSSS_CCK-40]   = 4096   Enable support for DSSS/CCK Mode in 40 MHz
             * [40-INTOLERANT] = 16384  Advertise 40 MHz intolerance

             Applies to AP."
        ::= { cfgWlanDeviceTableEntry 24 }

    cfgWlanDevQmrrString OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "A list of rate controller quadruples per queue.

             Each quadruple consist of
             (mcs-rate [0-31], tries [0-15], rts_cts [0-1], sgi [0-1])
             with 4 entries per queue.

             16 values together are for a single queue.

             The values are in the form:
             rate1, try1, rts_cts1, sgi1, rate2, ..., rate4, try4, rts_cts4, sgi4.

             The order of the queues is VO, VI, BE, BK.

             QMRR override for a specific queue is disabled when its
             respective try1 value is 0.

             When QMRR override is disabled, the normal minstrel or
             other configured overrides, are used.

             Frames in the VO queue are never aggregated.

             All characters other than numbers are ignored

             **Example:**

             [(7 1 0 0) (4 2 0 0) (2 3 0 0) (0 4 1 0)] \
             [(7 1 0 0) (4 1 0 1) (2 1 0 1) (0 1 1 1)] \
             [(7 1 0 0) (4 1 0 0) (0 0 0 0) (0 0 0 0)] \
             [(7 1 0 0) (0 0 0 0) (0 0 0 0) (0 0 0 0)]

             Applies to AP and STA. 802.11n products only."

        ::= { cfgWlanDeviceTableEntry 26 }

    cfgWlanDevAtfSchedulingAlgorithm OBJECT-TYPE
        SYNTAX INTEGER { fair(0), strict(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ATF Scheduling Algorithm

             The following airtime scheduling algorithms are available:

             * **fair(0)**: try to redistribute unused airtime.
             * **strict(1)**: strictly follow the given airtime.

             Applies to 802.11ac products in AP mode."
        ::= { cfgWlanDeviceTableEntry 27 }


-- -----------------------------------------------------------------------------

    cfgWlanInterfaceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanInterfaceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Virtual Interfaces"
        ::= { cfgWireless 2 }

    cfgWlanInterfaceTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanInterfaceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Virtual Interface Entry"
        INDEX {cfgWlanIfaceIndex}
        ::= { cfgWlanInterfaceTable 1 }

    CfgWlanInterfaceTableSeq ::=
        SEQUENCE {  cfgWlanIfaceIndex Integer32,
                    cfgWlanIfaceName DisplayString,
                    cfgWlanIfaceDevice INTEGER,
                    cfgWlanIfaceMode INTEGER,
                    cfgWlanIfaceSsid DisplayString,
                    cfgWlanIfaceEncryption INTEGER,
                    cfgWlanIfacePassword DisplayString,
                    cfgWlanIfacePassiveScanning INTEGER,
                    cfgWlanIfaceBeaconMiss Integer32,
                    cfgWlanIfaceDtim Integer32,
                    cfgWlanIfaceBitrates DisplayString,
                    cfgWlanIfaceBeaconInterval Integer32,
                    cfgWlanIfaceWmeParameter Integer32,
                    cfgWlanIfaceWmeEnabled INTEGER,
                    cfgWlanIfaceScanList Integer32,
                    cfgWlanIfaceIgnoreBroadcastSsid INTEGER,
                    cfgWlanIfaceMacaddrAcl INTEGER,
                    cfgWlanIfaceMaxNumSta Integer32,
                    cfgWlanIfaceBssid DisplayString,
                    cfgWlanIfaceLegacyRates Integer32,
                    cfgWlanIface4addr INTEGER,
                    cfgWlanIfaceInactivityTimeout Integer32,
                    cfgWlanIfaceUseVendorSsid INTEGER,
                    cfgWlanIfaceIeee80211w INTEGER,
                    cfgWlanIfaceIeee80211wMaxTimeout Integer32,
                    cfgWlanIfaceIeee80211wRetryTimeout Integer32,
                    cfgWlanIfaceAcsList Integer32,
                    cfgWlanIfaceNeighbourReport INTEGER,
                    cfgWlanIfaceNeighbourParameter Integer32,
                    cfgWlanIfacePmkLifetime Integer32,
                    cfgWlanIfaceL2nat INTEGER,
                    cfgWlanIfaceL2natLearningMode INTEGER,
                    cfgWlanIfaceL2natDefaultDestination DisplayString,
                    cfgWlanIfaceTimeAdvertisement INTEGER,
                    cfgWlanIfaceApIsolate INTEGER,
                    cfgWlanIfaceLlcBroadcastVlan DisplayString,
                    cfgWlanIfaceAtfSsidEnabled INTEGER,
                    cfgWlanIfaceAtfSsidAirtime Integer32,
                    cfgWlanIfacePilotMode INTEGER,
                    cfgWlanIfacePilotInterval Integer32,
                    cfgWlanIfaceMulticastToUnicast INTEGER
                 }

    cfgWlanIfaceIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanInterfaceTableEntry 1 }

    cfgWlanIfaceName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the virtual wireless interface

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 2 }

    cfgWlanIfaceDevice OBJECT-TYPE
        SYNTAX INTEGER { radio0(0), radio1(1), radio2(2)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Maps the virtual wireless interface to the radio device

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 3 }

    cfgWlanIfaceMode OBJECT-TYPE
        SYNTAX INTEGER { ap(0), sta(1), monitor(2), mesh(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Operation Mode

             Allowed modes are:

             * **ap(0):** defines the interface as Access Point (AP)
             * **sta(1):** defines the interface as Station (STA)
             * **monitor(2):** defines the interface as Monitor (MON)
             * **mesh(3):** defines the interface as Mesh (MESH)

             **Note:** Some products do not support all modes.
             Please check the data-sheet of your product.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 4 }

    cfgWlanIfaceSsid OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..32))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The Service Set Identifier (SSID) of the wireless interface

             This is the arbitrary name of the wireless network this interface
             is part of.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 5 }

    cfgWlanIfaceEncryption OBJECT-TYPE
        SYNTAX INTEGER { open(0), psk(3), eap(6), sae(7), owe(8), saepsk(9), eap2(10), eap192(11) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Encryption Mode

             Supported encryption modes:

             * **open(0)** open network without encryption
             * **psk(3)** WPA2 Personal with PSK
             * **eap(6)** WPA2 Enterprise (TLS/TTLS/PEAP)
             * **sae(7)** WPA3 Personal with SAE
             * **owe(8)** Opportunistic Wireless Encryption (WPA3 Enhanced Open)
             * **saepsk(9)** WPA2/WPA3 Personal transition mode SAE+PSK
             * **eap2(10)** WPA3 Enterprise (TLS/TTLS/PEAP).
             * **eap192(11)** WPA3 Enterprise 192-bit (TLS/TTLS/PEAP). 802.11n products only

             **eap(6)**, **eap2(10)** and **eap192(11)** enable 802.1X support.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 6 }

    cfgWlanIfacePassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(8..63))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless password if an encryption is in use

             Each character in the pass-phrase must have an
             encoding in the range of 32 to 126 (decimal),
             inclusive. (IEEE Std. 802.11i-2004, Annex H.4.1)
             The space character is included in this range.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 7 }

    cfgWlanIfacePassiveScanning OBJECT-TYPE
        SYNTAX INTEGER { active(0), passive(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Scanning Mode

             If the scanning mode is set to active(0) the station will send
             a probe request to detect available access points if it's allowed
             by the country code. If the country code restricts active scanning
             it is automatically set to passive.

             If the scanning mode is set to passive(1) the station will always
             perform passive scanning to detect available access points.
             Since the listening time is related to the beacon period used at the AP,
             the passive scan mode `cfgWlanHoPassiveChanTime` (STA) must be at least
             as long as the maximum beacon period `cfgWlanIfaceBeaconInterval` (AP).

             Applies to STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 8 }

    cfgWlanIfaceBeaconMiss OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of consecutive beacons misses before the station disconnects

             Applies to STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 9 }

    cfgWlanIfaceDtim OBJECT-TYPE
        SYNTAX Integer32 (1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of beacons between transmission of DTIM element

             This attribute specifies the number of beacon intervals that
             shall elapse between transmission of beacons frames containing a
             TIM element whose DTIM count field is 0. This value is transmitted
             in the DTIM Period field of Beacon frames.

             The DTIM counter is used to signal to power saving sleeping clients
             how long they can sleep between wakeups to get data from the AP.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 10 }

    cfgWlanIfaceBitrates OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Fixed MCS Index For 802.11n Rates

             Set to `-1` to not force an MCS index (auto-rate).

             Allows multiple space and/or comma separated indices which are then
             used in auto rate.

             This entry is only active when `cfgWlanDevModulation` is set to
             **ng(10)** or **na(12)**

             **Examples:**

             * -1
             * 0 1 2 3 4 5 6 7
             * 0, 4, 7, 8, 12, 15

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 11 }

    cfgWlanIfaceBeaconInterval OBJECT-TYPE
        SYNTAX  Integer32 (15..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Beacon Frame Generation Interval

             Time in `kus` (TU = 1.024 ms) between the sending of beacon frames.

             **Example:**

             * 100 = 102.4ms

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 12 }

    cfgWlanIfaceWmeParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the WME parameter table

             Uses all parameters in the `cfgWlanWmeTable` which have as
             `cfgWlanWmeId` the value set here.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 13 }

    cfgWlanIfaceWmeEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enables usage of the WME parameter table

             When using legacy rates (a-rates and g-rates) this is optional.
             When using n-rates this has to be enabled at all times.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 14 }

    cfgWlanIfaceScanList OBJECT-TYPE
        SYNTAX Integer32 (-2..23)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Index to specify a frequency list to be scanned

             Is only active when `cfgWlanIfaceMode` is set to sta(1).
             Set to **-1**, to scan the frequency defined in `cfgWlanDevFrequency`.
             Set to **-2**, to scan all frequencies allowed by the country code.

             Applies to STA."
        ::= { cfgWlanInterfaceTableEntry 15 }

    cfgWlanIfaceIgnoreBroadcastSsid OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Hide SSID

             Send empty SSID in beacons and ignore probe request frames that
             do not specify the full SSID, i.e., require stations to know SSID.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 16 }

    cfgWlanIfaceMacaddrAcl OBJECT-TYPE
        SYNTAX INTEGER { acceptunlessdeny(0), denyunlessaccept(1), radius(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mode of the MAC Access Control List

             * **acceptunlessdeny(0):** Accept unless deny filter. Accept
               every MAC unless it is on the list defined in
               `cfgWlanAclBlackTable`.
             * **denyunlessaccept(1):** Deny unless accept filter. Deny
               every MAC unless it is on the list defined in
               `cfgWlanAclWhiteTable`.
             * **radius(2):** Use RADIUS to accept/deny clients. The local
               Accept and Deny list are searched first and take priority.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 17 }

    cfgWlanIfaceMaxNumSta OBJECT-TYPE
        SYNTAX Integer32 (1..2007)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Maximum Number of Clients

             802.11ac products have an upper limit of 512 clients.
             Additionally on the wave 1 card (radio1) only 60 simultaneous
             clients are supported.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 18 }

    cfgWlanIfaceBssid OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "BSSID of AP

             Set 00:00:00:00:00:00 to use the MAC address stored in the flash of
             the wireless card itself. If this is the second or more virtual AP
             on this card it will automatically set the locally assigned bit and
             add an increasing counter in the leading 0 range.

             When the device is operating in STA mode the MAC address of the
             wireless interface can be configured.

             **Format:** `00:14:5a:02:10:42`

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 19 }

    cfgWlanIfaceLegacyRates OBJECT-TYPE
        SYNTAX Integer32 (0..2048)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless legacy data rates

             * **11b:** 1, 2, 5.5, 11 Mbps
             * **11a/g:** 6, 9, 12, 18, 24, 36, 48, 54 Mbps

             The values are interpreted as flags:

             * **auto(0)**
             * **1Mbps(1)**
             * **2Mbps(2)**
             * **5.5Mbps(4)**
             * **6Mbps(8)**
             * **9Mbps(16)**
             * **11Mbps(32)**
             * **12Mbps(64)**
             * **18Mbps(128)**
             * **24Mbps(256)**
             * **36Mbps(512)**
             * **48Mbps(1024)**
             * **54Mbps(2048)

             When `cfgWlanDevBandwidth` is equal 3 (quarter rates) the rate is
             quarter i.e. 36Mbps becomes 9MBps.
             When `cfgWlanDevBandwidth` is equal 4 (half rates) the rate is
             halved i.e. 36Mbps becomes 18MBps.

             This entry only has an effect on clients which only can use g-rates
             or a-rates. For clients which support MCS-rates the entry
             `cfgWlanIfaceBitrates` can be used to allow specific rates.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 20 }

    cfgWlanIface4addr OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "This option allows to bridge the STA side

             When used on the STA, the corresponding AP has to enable this
             feature as well.
             This option may not be enabled together with `cfgWlanIfaceL2nat`.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 21 }

    cfgWlanIfaceInactivityTimeout OBJECT-TYPE
        SYNTAX Integer32 (15..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Allowed idle time before station is removed

             If a station does not send anything in ap_max_inactivity seconds,
             an empty data frame is sent to it in order to verify whether it is
             still in range. If this frame is not ACKed, the station will be
             disassociated and then deauthenticated. This feature is used to
             clear the station table of old entries when the STAs move out of
             range.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 23 }

   cfgWlanIfaceUseVendorSsid OBJECT-TYPE
        SYNTAX  INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable Vendor Element containing the SSID

             When `cfgWlanIfaceIgnoreBroadcastSsid` is enabled, a passively
             scanning STA (forced or because of DFS) has no way of detecting
             the AP it tries to find. On an AP this options adds the hidden
             SSID as vendor element. On a STA this options allows it to use the
             vendor element in the beacon.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 26 }

    cfgWlanIfaceIeee80211w OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), optional(1), required(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Controls usage of 802.11w Management Frame Protection (MFP)

             On AP, if set to **optional(1)**, MFP will be used only for
             clients which have it also enabled (either **optional(1)** or
             **required(2)**). If set to **required(2)**, only
             MFP enabled clients will be able to connect.

             On STA, if set to **optional(1)**, MFP will be used only for
             Access Points which have it also enabled (either **optional(1)** or
             **required(2)**). If set to **required(2)**, client will connect
             only to MFP enabled Access Points.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 30 }

    cfgWlanIfaceIeee80211wMaxTimeout OBJECT-TYPE
        SYNTAX  Integer32 (1..4000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "802.11w Management Frame Protection (MFP) timeout

             Association SA query maximum timeout in `kus`
             (TU = 1.024 ms; for MFP). This is the maximum time to wait for
             a SA query response.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 31 }

    cfgWlanIfaceIeee80211wRetryTimeout OBJECT-TYPE
        SYNTAX  Integer32 (1..4000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "802.11w Management Frame Protection (MFP) retry timeout

             Association SA query retry timeout in `kus`
             (TU = 1.024 ms; for MFP)
             This is the time between two subsequent SA query requests.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 32 }

    cfgWlanIfaceAcsList OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Index to specify a frequency list from `cfgWlanFreqTable`

             Used for Automated Channel Selection (ACS) and for channel switch
             on Radar event to specify a list of frequencies to be chosen from.

             To disable set to **-1**.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 40 }

    cfgWlanIfaceNeighbourReport OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable/disable neighbour reporting

             A STA can request the neighbour table from an AP and use this
             information to improve its handoff decision.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 60 }

    cfgWlanIfaceNeighbourParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the neighbour table

             Uses all neighbours in the `cfgWlanNeighbourTable` which have as
             `cfgWlanNeighbourId` the value set here.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 61 }

    cfgWlanIfacePmkLifetime OBJECT-TYPE
        SYNTAX Integer32 (-1..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Maximum Lifetime for PMKSA in Seconds

             If this parameter is set to '-1', it automatically uses a value
             depending on the encryption defined in `cfgWlanIfaceEncryption`:

             For SAE(7) or SAEPSK(9) a disabled timeout is simulated by setting
             `cfgWlanIfacePmkLifetime` to 2147483647, which gives a lifetime of
             68+ years.

             For all other encryptions, cfgWlanIfacePmkLifetime is set to 86460.

             If this parameter is set to '0', a lifetime of 68+ years is used.

             **Note:** With 802.11r, the used lifetime is the smaller value of
             `cfgWlanIfacePmkLifetime` and `cfgWlan802dot11rPmkR0Lifetime`.

             Applies to AP and STA."
        ::= { cfgWlanInterfaceTableEntry 70 }

    cfgWlanIfaceL2nat OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "This option allows to bridge the STA side

             It is intended to be used in setups where the STA is doing
             handoff between multiple APs. There is no configuration on the APs
             required. This is an alternative to `cfgWlanIface4addr`.
             This option may not be enabled together with `cfgWlanIface4addr`.

             Applies to STA."
        ::= { cfgWlanInterfaceTableEntry 80 }

    cfgWlanIfaceL2natLearningMode OBJECT-TYPE
        SYNTAX INTEGER { both(0), arp(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Type of frames from which the L2nat IP/MAC table may be learned

             When `cfgWlanIfaceL2nat` is enabled a table of the association
             between IP-addresses and MAC-addresses is kept. This options
             specifies from which type of frames this association may be learned:

             * **both(0):** MAC/IP association is learned from ARP frames and
                            from IP frames.
             * **arp(1):** MAC/IP association is learned only from ARP frames.

             Applies to STA."
        ::= { cfgWlanInterfaceTableEntry 81 }

    cfgWlanIfaceL2natDefaultDestination OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default destination for L2nat

             This option defines the default MAC address to send frames to.
             Whenever a unicast frame is received for which no learned entry
             exists, or which isn't a L3 frame (e.g a custom L2 protocol), the
             frame will be sent to the address specified here.

             This address is by default the broadcast address.

             **Format:** `ff:ff:ff:ff:ff:ff`

             When the STA is directly connected to a router, the only possible
             destination is the MAC of the attached router. However it is
             cumbersome to manually configure the MAC address for the router.
             When this field is set to `00:00:00:00:00:00`, it is in
             router-auto-learn-mode. Depending on `cfgWlanIfaceL2natLearningMode`
             it will automatically learn the default destination to the MAC of
             the attached router from the flowing frames. In this mode
             `cfgWlanIfaceL2natLearningMode` should be set to **arp(1)**.

             Applies to STA."
        ::= { cfgWlanInterfaceTableEntry 82 }

    cfgWlanIfaceTimeAdvertisement OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable AP to include local time in association response frames

             This provides a mean for APs to distribute its local system
             time to STAs in setups where devices have no RTC and start
             up with an invalid system time.

             If configured, AP embeds its current system time as IE in
             association response frames, which STAs can use to update to
             before they get access to trusted time sources like NTP.

             Note that enabling this feature increases the size of response
             frames, therefore this feature shall only be activated where
             required and defaults to disabled.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 90 }

    cfgWlanIfaceApIsolate OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable AP clients isolation

             If enabled, clients connected to this AP can't communicate
             to each other.

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 100 }

    cfgWlanIfaceLlcBroadcastVlan OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN to send broadcast LLC frame after Handoff

             A space and/or comma separated list of VLANs.
             This list defines to which VLANs the broadcast LLC frame is sent.
             The broadcast LLC frames is sent when a STA connects to an AP.
             This broadcast LLC frame is used to update the FDB of all switches
             on the backbone which are involved on the path on which data flows.

             The frames are sent in the order in which the VLANs are specified.

             The value 0 specifies that the frame is sent untagged.

             When this value is set to a value other than 0, make sure that
             the VLAN mode of the wireless interface `cfgNetWlanVlanMode` allows
             tagged frames. Also ensure that `cfgNetWlanTrunk` includes
             the specified VLAN(s).

             **Examples:**

             * 69
             * 12, 24, 69
             * 0 12 24 69

             Applies to AP."
        ::= { cfgWlanInterfaceTableEntry 120 }

    cfgWlanIfaceAtfSsidEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ATF SSID Disabled or Enabled

             When this parameter is set to **disabled(0)** no airtime is
             reserved for the SSID.

             Applies to AP. 802.11ax and 802.11be products only."
        ::= { cfgWlanInterfaceTableEntry 121 }

    cfgWlanIfaceAtfSsidAirtime OBJECT-TYPE
        SYNTAX Integer32 (0..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ATF SSID Airtime Percentage

             Specify the percentage of each second of airtime assigned to the
             SSID on this virual interface. The sum of all assigned airtime
             shares on the same physical device must not exceed 100%.

             Applies to AP. 802.11ax and 802.11be products only."
        ::= { cfgWlanInterfaceTableEntry 122 }

    cfgWlanIfacePilotMode OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1), auto(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Pilot Frame Generation Mode

             If set to **enabled(1)**, Pilot frames are always generated.
             In the **auto(2)** mode, Pilot frames are only generated when
             at least one station is connected.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 130 }

    cfgWlanIfacePilotInterval OBJECT-TYPE
        SYNTAX  Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Pilot Frame Generation Interval

             Time in `kus` (TU = 1.024 ms) between the sending of
             Pilot frames. The generation of the Pilot frames is clocked with
             a resolution of 4ms and the interval should be divisible by 4.
             The scheduler is initiated by the `cfgWlanIfaceBeaconInterval`,
             which means that the Pilot interval must be smaller than the
             Beacon interval. In the following example,
             the AP sends 4 Pilots between each Beacon.

             **Example:**

             * Beacon Interval: 150 = 153.600ms
             * Pilot Interval: 32 = 32.768ms

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 131 }

    cfgWlanIfaceMulticastToUnicast OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Multicast to Unicast Conversion

             If set to **enabled(1)**, the AP is requested to perform multicast
             to unicast conversion for ARP, IPv4 and IPv6 frames. If enabled,
             such frames are to be sent to each station separately, with the DA
             replaced by their own MAC address rather than the group address.

             **Note:** This may break certain expectations of the receiver,
                       such as the ability to drop unicast IP packets received
                       within multicast L2 frames, or the ability to not send
                       ICMP destination unreachable messages for packets
                       received in L2 multicast.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanInterfaceTableEntry 134 }


-- -----------------------------------------------------------------------------

    cfgWlanHandoffTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanHandoffTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless handoff parameters"
        ::= { cfgWireless 3 }

    cfgWlanHandoffTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanHandoffTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Handoff Parameters Entry"
        INDEX {cfgWlanHoIndex}
        ::= { cfgWlanHandoffTable 1 }

    CfgWlanHandoffTableSeq ::=
        SEQUENCE {  cfgWlanHoIndex Integer32,
                    cfgWlanHoIfaceName DisplayString,
                    cfgWlanHoProfile INTEGER,
                    cfgWlanHoScanningLevel Integer32,
                    cfgWlanHoBeacons Integer32,
                    cfgWlanHoRecovery Integer32,
                    cfgWlanHoFilterLongX Integer32,
                    cfgWlanHoFilterLongY Integer32,
                    cfgWlanHoScanRateLimitTime Integer32,
                    cfgWlanHoScanRateLimitTries Integer32,
                    cfgWlanHoPassiveChanTime Integer32,
                    cfgWlanHoLevelLow Integer32,
                    cfgWlanHoLevelHigh Integer32,
                    cfgWlanHoDistanceNear Integer32,
                    cfgWlanHoDistanceFar Integer32,
                    cfgWlanHoDistanceMeasurementPeriod Integer32,
                    cfgWlanHoDistanceFilterX Integer32,
                    cfgWlanHoDistanceFilterY Integer32
                 }

    cfgWlanHoIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanHandoffTableEntry 1 }

    cfgWlanHoIfaceName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the virtual wireless interface

            Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 2 }

    cfgWlanHoProfile OBJECT-TYPE
        SYNTAX INTEGER { t2gv2(2), t2gv2fg(3), t2gv3(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Handoff Profile

            A description of available handoff profiles in terms of
            use case, functionality and associated parameters.

            **t2gv2(2)** Train to Ground v2 (background scan)

            Performs a background scan that optimizes operation in
            ISO-frequency systems. If neighbor reporting is enabled on the AP
            `cfgWlanIfaceNeighbourReport`, the STA will scan directly.
            Intended for operation with third-party products.

            * Encryption: psk/eap/sae (WPA2/WPA3)
            * Scanning: Background
            * Neighbour reporting: Frequency
            * Associated Parameters: `cfgWlanHoScanningLevel`

            **t2gv2fg(3)** Train to Ground v2 (foreground scan)

            Performs a foreground scan that optimizes operation in
            multi-frequency systems. If neighbor reporting is enabled on the AP
            `cfgWlanIfaceNeighbourReport`, the STA will scan directly.
            Intended for operation with third-party products.

            * Encryption: psk/eap/sae (WPA2/WPA3)
            * Scanning: Foreground
            * Neighbour reporting: Frequency
            * Associated Parameters: `cfgWlanHoScanningLevel`

            **t2gv3(4)** Train to Ground v3 (RSSI low/high, Distance near/far)

            If neighbor reporting is enabled on the AP `cfgWlanIfaceNeighbourReport`,
            the STA will scan directly and set the handoff parameters according
            to the received AP values. Otherwise, or if a neighbour report is lost,
            the handoff values for RSSI and Distance defined on the STA are used as backup.
            To enable distance handoff, the measurement period must be set.

            **Note:** The RSSI handoff in t2gv3(4) is only active
                      if a `cfgWlanHoLevelLow` greater than 0 is defined.

            * Encryption: psk/eap/sae (WPA2/WPA3)
            * Scanning: Foreground
            * Neighbour reporting: Frequency, RSSI low/high, Distance near/far
            * Associated Parameters:
            `cfgWlanHoLevelLow`,
            `cfgWlanHoLevelHigh`,
            `cfgWlanHoDistanceNear`,
            `cfgWlanHoDistanceFar`,
            `cfgWlanHoDistanceMeasurementPeriod`

            Applies to STA and AP. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 3 }

    cfgWlanHoScanningLevel OBJECT-TYPE
        SYNTAX Integer32 (0..95)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scanning level in RSSI

            When the RSSI level of the currently connected access point drops
            below the value configured in this parameter, the STA will scan
            for better access points on all frequencies specified by the
            scan list configured in cfgWlanIfaceScanList and cfgWlanFreqTable.

            **Note:** This parameter is inactive when using
            `cfgWlanHoProfile` t2gv3(4). Define the thresholds in
            `cfgWlanHoLevelLow` and `cfgWlanHoLevelHigh` instead.

            Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 5 }

    cfgWlanHoBeacons OBJECT-TYPE
        SYNTAX Integer32 (4..20)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of beacons which have to be received from an AP before a
            decision about handoff is allowed. Essentially forces the STA to
            stay on a given AP for `cfgWlanHoBeacons * cfgWlanIfaceBeaconInterval`
            before doing another handoff.

            Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 6 }

    cfgWlanHoRecovery OBJECT-TYPE
        SYNTAX Integer32 (0..2000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Recovery time in milliseconds after a successful handoff

            During this time no further handoff will be executed.

            Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 7 }

    cfgWlanHoFilterLongX OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IIR Low-Pass Filter Parameter X for RSSI measurements.

             Parameter X is the weighting for previous filtered RSSI value.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 10 }

    cfgWlanHoFilterLongY OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IIR Low-Pass Filter Parameter Y for RSSI measurements.

             The parameter Y is the weighting for RSSI current value.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 11 }

    cfgWlanHoScanRateLimitTime OBJECT-TYPE
        SYNTAX Integer32(4..65535)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Scan Rate Limit Time

             This option used to be active when `cfgWlanHoProfile` was set to
             t2gv1(1). t2gv1(1) is no longer supported."
        ::= { cfgWlanHandoffTableEntry 12 }

    cfgWlanHoScanRateLimitTries OBJECT-TYPE
        SYNTAX Integer32(1..255)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Scan Rate Limit Tries

             This option used to be active when `cfgWlanHoProfile` was set to
             t2gv1(1). t2gv1(1) is no longer supported."
        ::= { cfgWlanHandoffTableEntry 13 }

    cfgWlanHoPassiveChanTime OBJECT-TYPE
        SYNTAX Integer32(1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Time in milliseconds (4ms steps) we stay on a channel during passive
             scanning and wait for beacons. Must be at least as long as
             the maximum beacon period `cfgWlanIfaceBeaconInterval` used at the AP.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 16 }

    cfgWlanHoLevelLow OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scanning level low in RSSI

             When the RSSI level to the current connected AP is below this value,
             perform a handoff to the next AP.

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.
             When configured on an AP, this value is advertised for clients to use.
             When configured on a STA, this is the default value which is used
             when the currently connected AP doesn't provide a different value.

             **Note:** On a STA, the RSSI handoff in T2Gv3 is only active
                       if a handoff level low greater than 0 is defined.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 18 }

    cfgWlanHoLevelHigh OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scanning Level High in RSSI

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             When the RSSI level to the current connected AP is higher or equal
             this value, perform a handoff to the next AP.

             When configured on an AP, this value is advertised for clients to use.
             When configured on a STA, this is the default value which is used
             when the currently connected AP doesn't provide a different value.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 19 }

    cfgWlanHoDistanceNear OBJECT-TYPE
        SYNTAX Integer32 (0..114750)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Distance Near

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             When the measured distance (units) to the current connected AP
             is lower or equal this value, perform a handoff to the next AP.

             When configured on an AP, this value is advertised for clients to use.
             When configured on a STA, this is the default value which is used
             when the currently connected AP doesn't provide a different value.

             **Note:** Distance value is not in meters.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 20 }

    cfgWlanHoDistanceFar OBJECT-TYPE
        SYNTAX Integer32 (0..114750)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Distance Far

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             When the measured distance (units) to the current connected AP is
             greater or equal this value, perform a handoff to the next AP.

             When configured on an AP, this value is advertised for clients to use.
             When configured on a STA, this is the default value which is used
             when the currently connected AP doesn't provide a different value.

             **Note:** Distance value is not in meters.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 21 }

    cfgWlanHoDistanceMeasurementPeriod OBJECT-TYPE
        SYNTAX Integer32 (0..100000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Distance Ranging Measurement Period

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             The period is defined in milliseconds.

             Setting a value of zero disables distance handoff.

             Typical ranging measurement period values are in the range from
             200 ms to 1000 ms. Values lower than 100 ms are not recommended.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 22 }

    cfgWlanHoDistanceFilterX OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IIR Low-Pass Filter Parameter X for Distance Measurements

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             Parameter X is the weighting for the previous filtered distance value.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 23 }

    cfgWlanHoDistanceFilterY OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IIR Low-Pass Filter Parameter Y for Distance Measurements

             This value is only active when `cfgWlanHoProfile` is set to T2Gv3.

             Parameter Y is the weighting for the current distance value.

             Applies to STA. 802.11n products only."
        ::= { cfgWlanHandoffTableEntry 24 }


-- -----------------------------------------------------------------------------

    cfgWlanFreqTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanFreqTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Frequency list entry"
        ::= { cfgWireless 4 }

    cfgWlanFreqTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanFreqTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Frequency list entry"
        INDEX {cfgWlanFIndex}
        ::= { cfgWlanFreqTable 1 }

    CfgWlanFreqTableSeq ::=
        SEQUENCE {  cfgWlanFIndex Integer32,
                    cfgWlanFFreq0 Integer32,
                    cfgWlanFFreq1 Integer32,
                    cfgWlanFFreq2 Integer32,
                    cfgWlanFFreq3 Integer32,
                    cfgWlanFFreq4 Integer32,
                    cfgWlanFFreq5 Integer32,
                    cfgWlanFFreq6 Integer32,
                    cfgWlanFFreq7 Integer32,
                    cfgWlanFFreq8 Integer32,
                    cfgWlanFFreq9 Integer32,
                    cfgWlanFFreq10 Integer32,
                    cfgWlanFFreq11 Integer32,
                    cfgWlanFFreq12 Integer32,
                    cfgWlanFFreq13 Integer32,
                    cfgWlanFFreq14 Integer32,
                    cfgWlanFFreq15 Integer32,
                    cfgWlanFFreq16 Integer32,
                    cfgWlanFFreq17 Integer32,
                    cfgWlanFFreq18 Integer32,
                    cfgWlanFFreq19 Integer32,
                    cfgWlanFFreq20 Integer32,
                    cfgWlanFFreq21 Integer32,
                    cfgWlanFFreq22 Integer32,
                    cfgWlanFFreq23 Integer32
                 }

    cfgWlanFIndex OBJECT-TYPE
        SYNTAX Integer32 (0..23)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanFreqTableEntry 1 }

    cfgWlanFFreq0 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 2 }

    cfgWlanFFreq1 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 3 }

    cfgWlanFFreq2 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 4 }

    cfgWlanFFreq3 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 5 }

    cfgWlanFFreq4 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 6 }

    cfgWlanFFreq5 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 7 }

    cfgWlanFFreq6 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 8 }

    cfgWlanFFreq7 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 9 }

    cfgWlanFFreq8 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 10 }

    cfgWlanFFreq9 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 11 }

    cfgWlanFFreq10 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 12 }

    cfgWlanFFreq11 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 13 }

    cfgWlanFFreq12 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 14 }

    cfgWlanFFreq13 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 15 }

    cfgWlanFFreq14 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 16 }

    cfgWlanFFreq15 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 17 }

    cfgWlanFFreq16 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 18 }

    cfgWlanFFreq17 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 19 }

    cfgWlanFFreq18 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 20 }

    cfgWlanFFreq19 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 21 }

    cfgWlanFFreq20 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 22 }

    cfgWlanFFreq21 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 23 }

    cfgWlanFFreq22 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 24 }

    cfgWlanFFreq23 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz, 0 is interpreted as empty

             Applies to AP and STA."
        ::= { cfgWlanFreqTableEntry 25 }

-- -----------------------------------------------------------------------------

    cfgWlanWmeTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanWmeTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Multimedia Extensions Table

             Wireless Multimedia Extensions (WME) based on the IEEE 802.11e
             standard. It provides basic Quality of Service (QoS) features to
             IEEE 802.11 networks.

             The levels of priority in EDCA are called access categories (ACs).
             The contention window (CW) can be set according to the traffic
             expected for each access category, with a wider window needed for
             categories with heavier traffic.

             Applies to AP. 802.11n products only."
        ::= { cfgWireless 5 }

    cfgWlanWmeTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanWmeTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "WME table entry"
        INDEX {cfgWlanWmeIndex}
        ::= { cfgWlanWmeTable 1 }


    CfgWlanWmeTableSeq ::=
        SEQUENCE {  cfgWlanWmeIndex Integer32,
                    cfgWlanWmeId Integer32,
                    cfgWlanWmeAc INTEGER,
                    cfgWlanWmeCwMin Integer32,
                    cfgWlanWmeCwMax Integer32,
                    cfgWlanWmeAifs Integer32,
                    cfgWlanWmeTxOpMax Integer32,
                    cfgWlanWmeApCwMin Integer32,
                    cfgWlanWmeApCwMax Integer32,
                    cfgWlanWmeApAifs Integer32,
                    cfgWlanWmeApBurst Integer32
                 }

    cfgWlanWmeIndex OBJECT-TYPE
        SYNTAX Integer32 (0..31)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanWmeTableEntry 1 }

    cfgWlanWmeId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the WME parameter table

             The virtual wireless interface references to this ID,
             specified by `cfgWlanIfaceWmeParameter`.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 2 }

    cfgWlanWmeAc OBJECT-TYPE
        SYNTAX INTEGER { none(0), background(1), besteffort(2), video(3), voice(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "WME Access Category

             The following categories are available:

             * **none(0)** use driver default value of queue
             * **BK - background(1)**
             * **BE - besteffort(2)**
             * **VI - video(3)**
             * **VO - voice(4)**

             Frames in the VO queue are never aggregated.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 3 }

    cfgWlanWmeCwMin OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Contention Window Minimum in Exponential Form

             Is used on STAs connected to this AP: `Real value = (2^n)-1`

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 4 }

    cfgWlanWmeCwMax OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Contention Window Maximum in Exponential Form

             Is used on STAs connected to this AP: `Real value = (2^n)-1`

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 5 }

    cfgWlanWmeAifs OBJECT-TYPE
        SYNTAX Integer32 (1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Arbitration inter-frame space (AIFS)

             Is used on STAs connected to this AP.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 6 }

    cfgWlanWmeTxOpMax OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Transmit Opportunity

             A Transmit Opportunity (TXOP) is a bound time interval during which
             a station can send as many frames as possible (as long as the
             duration of the transmissions does not exceed the maximum duration
             of the TXOP). A value of 0 indicates that a single MSDU or MMPDU in
             addition to a possible RTS/CTS or CTS to itself may be transmitted
             at any PHY rate for each TXOP. This value is in units of 32 us.

             Is used on STAs connected to this AP.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 7 }

    cfgWlanWmeApCwMin OBJECT-TYPE
        SYNTAX Integer32 (1..1023)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Contention window minimum

             Allowed values: 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023.

             Is used on the AP itself.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 8 }

    cfgWlanWmeApCwMax OBJECT-TYPE
        SYNTAX Integer32 (1..1023)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Contention window maximum

             Allowed values: 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023

             cwMax has to be greater or equal cwMin.

             Is used on the AP itself.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 9 }

    cfgWlanWmeApAifs OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Arbitration inter-frame space (AIFS)

             Is used on the AP itself.

             Applies to AP."
        ::= { cfgWlanWmeTableEntry 10 }

    cfgWlanWmeApBurst OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Maximum length for bursting (equivalent to TxOpLimit)

             This value is in units of 32us.

             Is used on the AP itself.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanWmeTableEntry 11 }

-- -----------------------------------------------------------------------------

    cfgWlanDbgTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Handoff Debug Parameters"
        ::= { cfgWireless 6 }

    cfgWlanDbgTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Handoff Debug Parameters Entry"
        INDEX {cfgWlanDbgIndex}
        ::= { cfgWlanDbgTable 1 }

    CfgWlanDbgTableSeq ::=
        SEQUENCE {  cfgWlanDbgIndex Integer32,
                    cfgWlanDbgIfaceName DisplayString,
                    cfgWlanDbgHandoff INTEGER,
                    cfgWlanDbgScan INTEGER,
                    cfgWlanDbgMlme INTEGER,
                    cfgWlanDbgEvents INTEGER,
                    cfgWlanDbgBeaconrssi INTEGER,
                    cfgWlanDbgAckrssi INTEGER,
                    cfgWlanDbgBeaconfiltered INTEGER,
                    cfgWlanDbgRatelimit INTEGER,
                    cfgWlanDbgLinkmonitor INTEGER,
                    cfgWlanDbgBeacontsf INTEGER,
                    cfgWlanDbgRange INTEGER,
                    cfgWlanDbgReports INTEGER
                 }

    cfgWlanDbgIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanDbgTableEntry 1 }

    cfgWlanDbgIfaceName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the virtual wireless interface.

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 2 }

    cfgWlanDbgHandoff OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the handoff trap.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 3 }

    cfgWlanDbgScan OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the scan messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 4 }

    cfgWlanDbgMlme OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the MLME messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 5 }

    cfgWlanDbgEvents OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the events messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 6 }

    cfgWlanDbgBeaconrssi OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the Beacon and Pilot RSSI messages
            in commissioning syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 7 }

    cfgWlanDbgAckrssi OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the ACK RSSI messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 8 }

    cfgWlanDbgBeaconfiltered OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the beacon filtered RSSI
            messages in commissioning syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 9 }

    cfgWlanDbgRatelimit OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the rate limiter
            messages in standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 10 }

    cfgWlanDbgLinkmonitor OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Periodically sends a trap containing link information of all
            connected devices on this interface.

            Applies to both AP and STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 11 }

    cfgWlanDbgBeacontsf OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the Beacon RSSI messages
            in standard syslog. The TS field contains the internal TSF (mactime)
            instead of the system uptime.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 12 }

    cfgWlanDbgRange OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the distance measurement
            messages in standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            **Note:** Distance value is not in meters.

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 13 }

    cfgWlanDbgReports OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent default value to enable/disable the periodical WLAN
            debug data reporting in standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { cfgWlanDbgTableEntry 14 }

-- -----------------------------------------------------------------------------

    cfgWlanAclWhiteTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanAclWhiteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC Access Control Whitelist"
        ::= { cfgWireless 7 }

    cfgWlanAclWhiteTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanAclWhiteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC Access Control Whitelist Entry"
        INDEX {cfgWlanAclWhiteIndex}
        ::= { cfgWlanAclWhiteTable 1 }

    CfgWlanAclWhiteTableSeq ::=
        SEQUENCE {  cfgWlanAclWhiteIndex Integer32,
                    cfgWlanAclWhiteEnabled INTEGER,
                    cfgWlanAclWhiteInterface DisplayString,
                    cfgWlanAclWhiteAddr DisplayString,
                    cfgWlanAclWhiteMask Integer32
                 }

    cfgWlanAclWhiteIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanAclWhiteTableEntry 1 }

    cfgWlanAclWhiteEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable this Entry in the ACL

             Applies to AP."
        ::= { cfgWlanAclWhiteTableEntry 2 }

    cfgWlanAclWhiteInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Interface

             The ACL entry is on this specified wireless interface active.

             Applies to AP."
        ::= { cfgWlanAclWhiteTableEntry 3 }

    cfgWlanAclWhiteAddr OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MAC Address in the ACL

             **Examples:**

             * `00:14:5a:02:10:42`
             * `00:07:7c:00:00:00`

             Applies to AP."
        ::= { cfgWlanAclWhiteTableEntry 4 }

    cfgWlanAclWhiteMask OBJECT-TYPE
        SYNTAX Integer32 (1..48)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mask of the MAC Address

             Allows the use of ranges of MAC addresses. To be used like CIDR
             notation of IP addresses.

             **Examples:**

             * To match a single MAC address, specify a mask of 48.
             * To match a vendor OUI, specify a mask of 24.

             Applies to AP."
        ::= { cfgWlanAclWhiteTableEntry 5 }

-- -----------------------------------------------------------------------------

    cfgWlanAclBlackTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanAclBlackTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC Access Control Blacklist"
        ::= { cfgWireless 8 }

    cfgWlanAclBlackTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanAclBlackTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC Access Control Blacklist Entry"
        INDEX {cfgWlanAclBlackIndex}
        ::= { cfgWlanAclBlackTable 1 }

    CfgWlanAclBlackTableSeq ::=
        SEQUENCE {  cfgWlanAclBlackIndex Integer32,
                    cfgWlanAclBlackEnabled INTEGER,
                    cfgWlanAclBlackInterface DisplayString,
                    cfgWlanAclBlackAddr DisplayString,
                    cfgWlanAclBlackMask Integer32
                 }

    cfgWlanAclBlackIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanAclBlackTableEntry 1 }

    cfgWlanAclBlackEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable This Entry in the ACL

             Applies to AP."
        ::= { cfgWlanAclBlackTableEntry 2 }

    cfgWlanAclBlackInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Interface

             The ACL entry is on this specified wireless interface active.

             Applies to AP."
        ::= { cfgWlanAclBlackTableEntry 3 }

    cfgWlanAclBlackAddr OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MAC Address in the ACL

             **Examples:**

             * `00:14:5a:02:10:42`
             * `00:07:7c:00:00:00`

             Applies to AP."
        ::= { cfgWlanAclBlackTableEntry 4 }

    cfgWlanAclBlackMask OBJECT-TYPE
        SYNTAX Integer32 (1..48)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mask of the MAC Address

             Allows the use of ranges of MAC addresses. To be used like CIDR
             notation of IP addresses.

             **Examples:**

             * To match a single MAC address, specify a mask of 48.
             * To match a vendor OUI, specify a mask of 24.

             Applies to AP."
        ::= { cfgWlanAclBlackTableEntry 5 }

-- -----------------------------------------------------------------------------

    cfgWlanGlobal     OBJECT IDENTIFIER ::= { cfgWireless 9 }

    cfgWlanGlblCountry OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless country code

             **Note:** Refer to documentation which countries are supported
             for your device.

             Applies to AP and STA."
        ::= { cfgWlanGlobal 1 }

    cfgWlanGlblLinkmonitorInterval OBJECT-TYPE
        SYNTAX Integer32 (200..60000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LinkMonitor interval in milliseconds

             A new trap is sent at each interval.

             **Note:** A short interval and/or numerous connections may affect
             system performance negatively.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanGlobal 2 }

    cfgWlanGlblLinkmonitorQmrrlogging OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LinkMonitor QMRR logging

             If enabled, the QMRR statistics collected for phy0
             are periodically printed to syslog at the interval
             set in `cfgWlanGlblLinkmonitorInterval`.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlanGlobal 3 }

    cfgWlanGlblConnectionStatusWlanInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(3..17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Persistent Default of the Volatile Setting `swDrvConStatWlanIf`

             The value set here is used to initialize `swDrvConStatWlanIf`.
             Initialisation happens on startup or configuration change.

             Specify `all` to get the connection status of all wlan interfaces.

             Applies to AP and STA."
        ::= { cfgWlanGlobal 4 }

    cfgWlanGlblAclRejectLog OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ACL reject logging

             If enabled, hostapd will log stations rejected
             based on MAC ACL.

             Applies to AP."
        ::= { cfgWlanGlobal 5 }

-- -----------------------------------------------------------------------------

    cfgWlan802dot1xTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot1xTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot1x"
        ::= { cfgWireless 10 }

    cfgWlan802dot1xTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot1xTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot1x entry"
        INDEX {cfgWlan802dot1xIndex}
        ::= { cfgWlan802dot1xTable 1 }

    CfgWlan802dot1xTableSeq ::=
        SEQUENCE {  cfgWlan802dot1xIndex Integer32,
                    cfgWlan802dot1xName DisplayString,
                    cfgWlan802dot1xOwnIpAddr IpAddress,
                    cfgWlan802dot1xAuthServerParameter Integer32,
                    cfgWlan802dot1xAcctServerParameter Integer32,
                    cfgWlan802dot1xRetryPrimaryInterval Integer32,
                    cfgWlan802dot1xInterimAccountingInterval Integer32,
                    cfgWlan802dot1xNasId DisplayString,
                    cfgWlan802dot1xEapType INTEGER,
                    cfgWlan802dot1xIdentity DisplayString,
                    cfgWlan802dot1xClientKeyPassword DisplayString,
                    cfgWlan802dot1xTlsControlParams Integer32,
                    cfgWlan802dot1xRetryMax Integer32,
                    cfgWlan802dot1xRetryTimeout Integer32,
                    cfgWlan802dot1xCiphers DisplayString,
                    cfgWlan802dot1xPrimaryTestMode INTEGER,
                    cfgWlan802dot1xCrlExpiryExtension Integer32,
                    cfgWlan802dot1xCaIds DisplayString,
                    cfgWlan802dot1xClientCertId Integer32,
                    cfgWlan802dot1xDynamicVlan INTEGER
                 }

    cfgWlan802dot1xIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot1xTableEntry 1 }

    cfgWlan802dot1xName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Virtual Wireless Interface"
        ::= { cfgWlan802dot1xTableEntry 2 }

    cfgWlan802dot1xOwnIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Own IP Address of the Authenticator

             This field is used as NAS-IP-Address RADIUS attribute.
             Set this to the IP address with which the authenticator will
             communicate with the RADIUS server.

             See also `cfgWlan802dot1xNasId`.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 3 }

    cfgWlan802dot1xAuthServerParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the RADIUS Auth Server Table

             Uses all auth servers in the `cfgWlan802dot1xAuthServerTable`
             which have as `cfgWlan802dot1xAuthSrvId` the value set here.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 4 }

    cfgWlan802dot1xAcctServerParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the RADIUS Acct Server Table

             Uses all acct servers in the `cfgWlan802dot1xAcctServerTable`
             which have as `cfgWlan802dot1xAcctSrvId` the value set here.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 5 }

    cfgWlan802dot1xRetryPrimaryInterval OBJECT-TYPE
        SYNTAX Integer32 (0..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Retry Interval to Return to the Primary RADIUS Server in Seconds

             The RADIUS client automatically tries to use the next server when
             the current server is not replying to requests. If this interval is
             set, the primary server is retried after the configured amount of
             time even if the currently used secondary server is still working.

             Set to `0` to disable.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 6 }

    cfgWlan802dot1xInterimAccountingInterval OBJECT-TYPE
        SYNTAX Integer32 (0..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interim Accounting Update Interval in Seconds

             If this is set to a value larger than 0 and at least one accounting
             server is configured in `cfgWlan802dot1xAcctServerTable`, hostapd
             will send interim accounting updates every N seconds.

             Set to `0` to disable.

             This value should not be less than `600` (10 minutes) and may not
             be less than `60` (1 minute).

             **Note:** When this value is set, this overrides possible
             Acct-Interim-Interval attribute in Access-Accept message.
             Thus, this value should not be configured when the RADIUS server is
             used to control the interim interval.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 7 }

    cfgWlan802dot1xNasId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..48))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NAS Identifier for RADIUS messages or 802.11r

             It is mandatory to configure either `cfgWlan802dot1xOwnIpAddr` or
             `cfgWlan802dot1xNasId` to be compliant with the RADIUS protocol.
             When using RADIUS accounting, it is strongly recommended that
             `cfgWlan802dot1xNasId` is set to a unique value for each AP.

             When using IEEE 802.11r (`cfgWlan802dot11rEnabled`), this value is
             mandatory and it must be unique per AP.

             When set to `autoMAC` the unique MAC address of the respective wlan
             interface will be used.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 8 }

    cfgWlan802dot1xEapType OBJECT-TYPE
        SYNTAX INTEGER { tls(0), peap(1), ttls(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "EAP Type for the RADIUS Client

             * **tls(0)**: Transport Layer Security
                           Uses the configured CA(s), Certificate and Key
                           referenced by `cfgWlan802dot1xCaIds` and
                           `cfgWlan802dot1xClientCertId`
             * **peap(1)**: Protected Extensible Authentication Protocol
                            Uses the Identity and Password specified in
                            `cfgWlan802dot1xIdentity` and `cfgWlanIfacePassword`.
                            Additionally uses the CA(s) referenced in
                            `cfgWlan802dot1xCaIds` to verify the identity of the
                            RADIUS server. When no CA is specified, a rogue 3rd
                            party AP will be able to steal your credentials.
             * **ttls(2)**: Tunneled Transport Layer Security
                            Uses the Identity and Password specified in
                            `cfgWlan802dot1xIdentity` and `cfgWlanIfacePassword`.
                            Additionally uses the CA(s) referenced in
                            `cfgWlan802dot1xCaIds` to verify the identity of the
                            RADIUS server. When no CA is specified, a rogue 3rd
                            party AP will be able to steal your credentials.

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 9 }

    cfgWlan802dot1xIdentity OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Identity for the RADIUS Client

             This is the identity that is sent to the RADIUS server (User-Name).

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 10 }

    cfgWlan802dot1xClientKeyPassword OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Password to Unlock the Private Key

             This parameter is obsolete and has been replaced with the
             Certificate Store.

             Key material on the device is always encrypted.
             The password to import the file has to be specified once during
             import via `setCrtFilePassphrase`."
        ::= { cfgWlan802dot1xTableEntry 17 }

    cfgWlan802dot1xTlsControlParams OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to Control TLS Behaviour

             * **0x0** all validity checks will be performed
             * **0x1** ignore certificate validity time
             * **0x2** ignore ca certificate
             * **0x4** ignore CRLs
             * **0x8** ignore missing CRLs

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 18 }

    cfgWlan802dot1xRetryMax OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of Tries Before a RADIUS Server is Considered Down

            Make sure that the product of `cfgWlan802dot1xRetryMax` and
            `cfgWlan802dot1xRetryTimeout` does not exceed the STA connection
            timeout of 2 seconds.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 19 }

    cfgWlan802dot1xRetryTimeout OBJECT-TYPE
        SYNTAX Integer32 (100..10000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RADIUS Connection Timeout in Milliseconds

            Make sure that the product of `cfgWlan802dot1xRetryMax` and
            `cfgWlan802dot1xRetryTimeout` does not exceed the STA connection
            timeout of 2 seconds.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 20 }

    cfgWlan802dot1xCiphers OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher String for the RADIUS Client

             This is an OpenSSL specific configuration option for configuring
             the default cipher.

             Please read the documentation for a list of all available ciphers
             and used syntax.

             Used only if `cfgWlanIfaceEncryption` is **eap(6)**, **eap2(10)**
             or **eap192(11)**.

             **Examples:**

             * ECDHE-RSA-AES128-GCM-SHA256
             * DHE-RSA-AES128-GCM-SHA256
             * ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
             * DEFAULT:!EXP:!LOW

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 21 }

    cfgWlan802dot1xPrimaryTestMode OBJECT-TYPE
        SYNTAX INTEGER { status(0), access(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Primary RADIUS Authentication Server Test Mode

             * **status(0)**: Send Status-Server messages (RADIUS message code 12)
             * **access(1)**: Send Access-Request messages (RADIUS message code 1)

             **Note:** Status-Server messages are experimental and might
             not be supported by all RADIUS authentication servers.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 22 }

    cfgWlan802dot1xCrlExpiryExtension OBJECT-TYPE
        SYNTAX Integer32 (-1..1095)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CRL Validity Period Extension in Days

             If set, the validity period of a CRL can be extended by the
             given amount of days.

             * **0**: no extension
             * **1-1095**: number of extension days
             * **-1**: extend to infinity => ignore CRL expiry

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 24 }

    cfgWlan802dot1xCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Certificate Authority (CA) IDs

             Reference to the CA which should be used.

             Multiple CAs may be referenced by writing the ids of the CAs as
             space and/or comma separated list. The order of the list is the order
             how the CAs will be concatenated.

             Setting the CA ID to `-1` disables the CA verification.

             **Examples:**

             * `-1`
             * `12`
             * `1, 3, 4`
             * `1 3 4`

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 25 }

    cfgWlan802dot1xClientCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Client Certificate ID

             Reference to the Client Certificate which should be used.

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 27 }

    cfgWlan802dot1xDynamicVlan OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), optional(1), required(2)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Dynamic VLAN

             This parameter is only active when the wlan interface is bridged
             using `cfgNetWlanBridge`. Dynamic VLAN can not be used together
             with 802.11r (`cfgWlan802dot11rEnabled`).

             Allow the RADIUS authentication server to decide which VLAN is used
             for the stations. This information is parsed from following RADIUS
             attributes based on RFC 3580 and RFC 2868:
             Tunnel-Type (value 13 = VLAN),
             Tunnel-Medium-Type (value 6 = IEEE 802)
             Tunnel-Private-Group-ID (value VLANID as a string).

             * **disabled(0)**: No dynamic VLANs are used
             * **optional(1)**: Use default interface if the RADIUS server does
                                not include a VLAN ID
             * **required(2)**: Reject authentication if the RADIUS server does
                                not include a VLAN ID

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 28 }

-- -----------------------------------------------------------------------------

    cfgWlan802dot1xAuthServerTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot1xAuthServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wired and Wireless 802dot1x AuthServer"
        ::= { cfgWireless 11 }

    cfgWlan802dot1xAuthServerTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot1xAuthServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wired and Wireless 802dot1x AuthServer Entry"
        INDEX {cfgWlan802dot1xAuthSrvIndex}
        ::= { cfgWlan802dot1xAuthServerTable 1 }

    CfgWlan802dot1xAuthServerTableSeq ::=
        SEQUENCE {  cfgWlan802dot1xAuthSrvIndex Integer32,
                    cfgWlan802dot1xAuthSrvEnabled INTEGER,
                    cfgWlan802dot1xAuthSrvId Integer32,
                    cfgWlan802dot1xAuthSrvIpAddr IpAddress,
                    cfgWlan802dot1xAuthSrvPort Integer32,
                    cfgWlan802dot1xAuthSrvSharedSecret DisplayString
                 }

    cfgWlan802dot1xAuthSrvIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot1xAuthServerTableEntry 1 }

    cfgWlan802dot1xAuthSrvEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable this Entry in the Authentication Server List"
        ::= { cfgWlan802dot1xAuthServerTableEntry 2 }

    cfgWlan802dot1xAuthSrvId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the Authentication Server Table

             The configuration item `cfgWlan802dot1xAuthServerParameter` and
             `cfgNetEth802dot1xAuthServerParameter` references to this ID."
        ::= { cfgWlan802dot1xAuthServerTableEntry 3 }

    cfgWlan802dot1xAuthSrvIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP of the RADIUS Server Against Which Will be Authenticated"
        ::= { cfgWlan802dot1xAuthServerTableEntry 4 }

    cfgWlan802dot1xAuthSrvPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Port of the RADIUS Server Against Which Will be Authenticated

             The default RADIUS autentication port is 1812."
        ::= { cfgWlan802dot1xAuthServerTableEntry 5 }

    cfgWlan802dot1xAuthSrvSharedSecret OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Password to Connect to the Specified RADIUS Server

             The shared secret is used to allow the authenticator to communicate
             with the server.

             This password is not used to authenticate clients."
        ::= { cfgWlan802dot1xAuthServerTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgWlan802dot1xAcctServerTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot1xAcctServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot1x AcctServer"
        ::= { cfgWireless 12 }

    cfgWlan802dot1xAcctServerTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot1xAcctServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot1x AcctServer entry"
        INDEX {cfgWlan802dot1xAcctSrvIndex}
        ::= { cfgWlan802dot1xAcctServerTable 1 }

    CfgWlan802dot1xAcctServerTableSeq ::=
        SEQUENCE {  cfgWlan802dot1xAcctSrvIndex Integer32,
                    cfgWlan802dot1xAcctSrvEnabled INTEGER,
                    cfgWlan802dot1xAcctSrvId Integer32,
                    cfgWlan802dot1xAcctSrvIpAddr IpAddress,
                    cfgWlan802dot1xAcctSrvPort Integer32,
                    cfgWlan802dot1xAcctSrvSharedSecret DisplayString
                 }

    cfgWlan802dot1xAcctSrvIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot1xAcctServerTableEntry 1 }

    cfgWlan802dot1xAcctSrvEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable this entry in the acct server list.

             Applies to AP."
        ::= { cfgWlan802dot1xAcctServerTableEntry 2 }

    cfgWlan802dot1xAcctSrvId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the accounting server table

             The configuration item `cfgWlan802dot1xAcctServerParameter`
             refers to this ID.

             Applies to AP."
        ::= { cfgWlan802dot1xAcctServerTableEntry 3 }

    cfgWlan802dot1xAcctSrvIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP of the RADIUS accounting server
             Set to 0.0.0.0 to disable.

             Applies to AP."
        ::= { cfgWlan802dot1xAcctServerTableEntry 4 }

    cfgWlan802dot1xAcctSrvPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Port of the RADIUS accounting server

             Applies to AP."
        ::= { cfgWlan802dot1xAcctServerTableEntry 5 }

    cfgWlan802dot1xAcctSrvSharedSecret OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Password to connect to the specified RADIUS accounting server

             Applies to AP."
        ::= { cfgWlan802dot1xAcctServerTableEntry 6 }

-- =============================================================================

    cfgWlan802dot11rTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot11rTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r"
        ::= { cfgWireless 13 }

    cfgWlan802dot11rTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot11rTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r Entry"
        INDEX {cfgWlan802dot11rIndex}
        ::= { cfgWlan802dot11rTable 1 }

    CfgWlan802dot11rTableSeq ::=
        SEQUENCE {  cfgWlan802dot11rIndex Integer32,
                    cfgWlan802dot11rName DisplayString,
                    cfgWlan802dot11rEnabled INTEGER,
                    cfgWlan802dot11rMobilityDomain DisplayString,
                    cfgWlan802dot11rPmkR0KeyHolderIdentifier DisplayString,
                    cfgWlan802dot11rPmkR0Lifetime Integer32,
                    cfgWlan802dot11rPmkR1KeyHolderIdentifier DisplayString,
                    cfgWlan802dot11rPmkR1Push INTEGER,
                    cfgWlan802dot11rR0KHParameter Integer32,
                    cfgWlan802dot11rR1KHParameter Integer32,
                    cfgWlan802dot11rExpirationEnabled INTEGER,
                    cfgWlan802dot11rExpirationTime DisplayString,
                    cfgWlan802dot11rVlan Integer32
                 }

    cfgWlan802dot11rIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot11rTableEntry 1 }

    cfgWlan802dot11rName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the virtual wireless interface

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 2 }

    cfgWlan802dot11rEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable usage of 802.11r on this device

             When **enabled(1)** on an AP, `cfgWlan802dot1xNasId` must
             also be defined.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 3 }

    cfgWlan802dot11rMobilityDomain OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mobility Domain identifier (dot11FTMobilityDomainID, MDID)

             MDID is used to indicate a group of APs (within an ESS, i.e.,
             sharing the same SSID) between which a STA can use Fast BSS
             Transition. 2-octet identifier as a hex string.

             **Examples:**

             * a1b2
             * faba
             * 5678

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 4 }

    cfgWlan802dot11rPmkR0KeyHolderIdentifier OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..48))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "PMK-R0 Key Holder identifier (dot11FTR0KeyHolderID)

             Configure this in the field `cfgWlan802dot1xNasId`.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 5 }

    cfgWlan802dot11rPmkR0Lifetime OBJECT-TYPE
        SYNTAX Integer32 (0..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "PMK-RO lifetime in seconds (dot11FTR0KeyLifetime)

             When Session-Timeout attribute is provided by RADIUS server, then
             min(Session-Timeout, `cfgWlan802dot11rPmkR0Lifetime`) is used.

             **Ranges**

             * 0 - Infinite lifetime (disabled)
             * 1..59 - Reserved, do not use
             * 60..2147483647 - Allowed lifetime in seconds

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 6 }

    cfgWlan802dot11rPmkR1KeyHolderIdentifier OBJECT-TYPE
        SYNTAX DisplayString (SIZE(12))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "PMK-R1 Key Holder identifier (dot11FTR0KeyHolderID)

             6-octet identifier as a hex string. This may be the same as the
             local MAC address. Default magic number 000000000000 means use own
             mac address (bssid).

             **Format:** `020102030405`

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 7 }

    cfgWlan802dot11rPmkR1Push OBJECT-TYPE
        SYNTAX INTEGER { donotpush(0), push(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Whether PMK-R1 push is enabled at R0KH

             * **0** do not push PMK-R1 to all configured R1KHs (default).
             * **1** push PMK-R1 to all configured R1KHs whenever a new PMK-R0 is derived.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 9 }

    cfgWlan802dot11rR0KHParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the R0KH parameter table

             Uses all parameters in the `cfgWlan802dot11rR0KHTable`
             which have as `cfgWlan802dot11rR0KHTblId` the value set here.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 10 }

    cfgWlan802dot11rR1KHParameter OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID to the R1KH parameter table

             Uses all parameters in the `cfgWlan802dot11rR1KHTable`
             which have as `cfgWlan802dot11rR1KHTblId` the value set here.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 11 }

    cfgWlan802dot11rExpirationEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable/disable PMK-R0/-R1 expiration forcing

             If set to **enabled(1)**, AP forces PMK-R0s and PMK-R1s
             expiration once a day (see `cfgWlan802dot11rExpirationTime`).

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 12 }


    cfgWlan802dot11rExpirationTime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..5))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Daily PMK-R0/-R1 expiration time

             Define time (hour:minute) at which PMK-R0s and PMK-R1s
             expiration is daily forced (if `cfgWlan802dot11rExpirationEnabled`
             is **enabled(1)**).

             The time is referenced to the local time as define in
             `cfgSysTimezone`

             **Examples:**

             * 00:00 - force expiration each day at midnight
             * 01:00 - force expiration each day at 01:00
             * 23:05 - force expiration each day at 23:05

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 13 }

    cfgWlan802dot11rVlan OBJECT-TYPE
        SYNTAX Integer32 (0..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The 802.1q VLAN tag of 802.11r backbone traffic

             Defines the VLAN tag with which all 802.11r managment frames
             (ethertype 0x88b7) are transmitted on the backbone.

             Setting a value of 0 disables the VLAN header and transmits the
             frames untagged.

             The priority of all tagged frames is set to 0x7.

             When this value is set to a value other than 0, make sure that
             the VLAN mode of the wireless interface `cfgNetWlanVlanMode` allows
             tagged frames. Also ensure that `cfgNetWlanTrunk` includes
             all VLANs or this specific VLAN.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rTableEntry 14 }

-- -----------------------------------------------------------------------------

    cfgWlan802dot11rR0KHTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot11rR0KHTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r R0KH

             List of R0KHs in the same Mobility Domain. This list is used to map
             R0KH-ID (NAS Identifier) to a destination MAC address when
             requesting PMK-R1 key from the R0KH that the STA used during the
             Initial Mobility Domain Association.

             **Format:** `<MAC address> <NAS Identifier> <128-bit key as hex string>`

             **Examples:**

             ~~~
             r0kh=02:01:02:03:04:05 r0kh-1.example.com 000102030405060708090a0b0c0d0e0f
             r0kh=02:01:02:03:04:06 r0kh-2.example.com 00112233445566778899aabbccddeeff
             ~~~

             This may also contain a wildcard entry to transmit a request to the
             broadcast address instead of a unicast. This has the advantage that
             not all potential R0KH have to be configured.
             The provided key has to match the configured wildcard key in the
             `cfgWlan802dot11rR1KHTable`

             **Wildcard entry**

             ~~~
             r1kh=ff:ff:ff:ff:ff:ff * 0123456789abcdef0123456789abcdef
             ~~~

             Applies to AP. 802.11n products only."
        ::= { cfgWireless 14 }

    cfgWlan802dot11rR0KHTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot11rR0KHTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r R0KH Entry"
        INDEX {cfgWlan802dot11rR0KHIndex}
        ::= { cfgWlan802dot11rR0KHTable 1 }

    CfgWlan802dot11rR0KHTableSeq ::=
        SEQUENCE {  cfgWlan802dot11rR0KHIndex Integer32,
                    cfgWlan802dot11rR0KHId Integer32,
                    cfgWlan802dot11rR0KHEnabled INTEGER,
                    cfgWlan802dot11rR0KHDestinationMac DisplayString,
                    cfgWlan802dot11rR0KHHID DisplayString,
                    cfgWlan802dot11rR0KHKey DisplayString
                 }

    cfgWlan802dot11rR0KHIndex OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot11rR0KHTableEntry 1 }

    cfgWlan802dot11rR0KHId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the R0KH table

             The configuration item `cfgWlan802dot11rR0KHParameter` references to
             this ID.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR0KHTableEntry 2 }

    cfgWlan802dot11rR0KHEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable this entry in the R0KH list

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR0KHTableEntry 3 }

    cfgWlan802dot11rR0KHDestinationMac OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MAC addresses of possible R0KHs from which PMK-R1 can be requested

             **Format:** `02:01:02:03:04:05`

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR0KHTableEntry 4 }

    cfgWlan802dot11rR0KHHID OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..48))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NAS Identifier of all R0KHs to map to the MAC address

             See the field: `cfgWlan802dot11rPmkR0KeyHolderIdentifier`.

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR0KHTableEntry 5 }

    cfgWlan802dot11rR0KHKey OBJECT-TYPE
        SYNTAX DisplayString (SIZE(32))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Static Key of the R0KH

             Connecting R1KHs need to have this key configured.

             **Format:** `000102030405060708090a0b0c0d0e0f`

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR0KHTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgWlan802dot11rR1KHTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot11rR1KHTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r R1KH

             List of R1KHs in the same Mobility Domain
             This list is used to map R1KH-ID to a destination MAC address when
             sending PMK-R1 key from the R0KH. This is also the list of
             authorized R1KHs in the MD that can request PMK-R1 keys.

             **Format:** `<MAC address> <R1KH-ID> <128-bit key as hex string>`

             **Examples:**

             ~~~
             r1kh=02:01:02:03:04:05 02:11:22:33:44:55 000102030405060708090a0b0c0d0e0f
             r1kh=02:01:02:03:04:06 02:11:22:33:44:66 00112233445566778899aabbccddeeff
             ~~~

             This may also contain a wildcard entry allowing everyone to request
             a PMK-R1 from this R0KH. The provided key has to match the configured
             wildcard key in the `cfgWlan802dot11rR0KHTable`

             **Wildcard entry**

             ~~~
             r1kh=00:00:00:00:00:00 00:00:00:00:00:00 0123456789abcdef0123456789abcdef
             ~~~

             Applies to AP. 802.11n products only."
        ::= { cfgWireless 15 }

    cfgWlan802dot11rR1KHTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot11rR1KHTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot11r R1KH Entry"
        INDEX {cfgWlan802dot11rR1KHIndex}
        ::= { cfgWlan802dot11rR1KHTable 1 }

    CfgWlan802dot11rR1KHTableSeq ::=
        SEQUENCE {  cfgWlan802dot11rR1KHIndex Integer32,
                    cfgWlan802dot11rR1KHId Integer32,
                    cfgWlan802dot11rR1KHEnabled INTEGER,
                    cfgWlan802dot11rR1KHDestinationMac DisplayString,
                    cfgWlan802dot11rR1KHHID DisplayString,
                    cfgWlan802dot11rR1KHKey DisplayString
                 }

    cfgWlan802dot11rR1KHIndex OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlan802dot11rR1KHTableEntry 1 }

    cfgWlan802dot11rR1KHId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the R1KH table

             The configuration item `cfgWlan802dot11rR1KHParameter` references to
             this ID.

             Applies to AP."
        ::= { cfgWlan802dot11rR1KHTableEntry 2 }

    cfgWlan802dot11rR1KHEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable this entry in the R1KH list

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR1KHTableEntry 3 }

    cfgWlan802dot11rR1KHDestinationMac OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MAC addresses of R1KHs which can reqest PMK-R1 from the local R0KH

             **Format:** `02:01:02:03:04:05`

             Applies to AP."
        ::= { cfgWlan802dot11rR1KHTableEntry 4 }

    cfgWlan802dot11rR1KHHID OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "PMK-R1 Key Holder identifier (dot11FTR1KeyHolderID)

             6-octet identifier as a hex string to map to the MAC. This may be
             the same as the destination MAC. See the field
             cfgWlan802dot11rPmkR1KeyHolderIdentifier.

             **Format:** `02:01:02:03:04:05`

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR1KHTableEntry 5 }

    cfgWlan802dot11rR1KHKey OBJECT-TYPE
        SYNTAX DisplayString (SIZE(32))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Static Key of the R0KH

             These keys are used wenn sending updates to R1KHs from the local
             R0KH. The respective key has to match the respective entry on the
             target in the field `cfgWlan802dot11rR0KHKey`.

             **Format:** `000102030405060708090a0b0c0d0e0f`

             Applies to AP. 802.11n products only."
        ::= { cfgWlan802dot11rR1KHTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgWlanNeighbourTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanNeighbourTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hostapd Neighbour Table"
        ::= { cfgWireless 16 }

    cfgWlanNeighbourTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanNeighbourTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hostapd Neighbour Table Entry"
        INDEX {cfgWlanNeighbourIndex}
        ::= { cfgWlanNeighbourTable 1 }

    CfgWlanNeighbourTableSeq ::=
        SEQUENCE {  cfgWlanNeighbourIndex Integer32,
                    cfgWlanNeighbourId Integer32,
                    cfgWlanNeighbourEnabled INTEGER,
                    cfgWlanNeighbourBSSID DisplayString,
                    cfgWlanNeighbourFrequency Integer32
                 }

    cfgWlanNeighbourIndex OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgWlanNeighbourTableEntry 1 }

    cfgWlanNeighbourId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the neighbour table

             The configuration item `cfgWlanIfaceNeighbourParameter`
             references to this ID.

             Applies to AP. 802.11n products only."
        ::= { cfgWlanNeighbourTableEntry 2 }

    cfgWlanNeighbourEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable this entry in the list

             Applies to AP. 802.11n products only."
        ::= { cfgWlanNeighbourTableEntry 3 }

    cfgWlanNeighbourBSSID OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "BSSID (MAC address) of the neighbour

             **Format:** `00:14:5a:02:10:42`

             Applies to AP."
        ::= { cfgWlanNeighbourTableEntry 4 }

    cfgWlanNeighbourFrequency OBJECT-TYPE
        SYNTAX Integer32 (1..6000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Frequency in MHz of the neighbour

             Applies to AP. 802.11n products only."
        ::= { cfgWlanNeighbourTableEntry 5 }

--------------------------------------------------------------------------------
    cfgWlanRogueApDetection       OBJECT IDENTIFIER ::= { cfgWireless 30 }

    cfgWlanRapdServiceEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Enable Rogue AP Detection (RAPD)

             This feature enables the rogue AP detection to monitor potential
             security issues. Rogue APs are defined as foreign ones which
             preted to provide one AP's own SSID.

             This is a global enable flag that activates the detection
             service, while each interface to be monitored is defined in
             cfgWlanRapdTable and can be enabled individually.

             The detection is available for 802.11ax and 802.11be APs.

             Applies to AP."
        ::= { cfgWlanRogueApDetection 1 }

    cfgWlanRapdTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanRapdTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RAPD Table"
        ::= { cfgWlanRogueApDetection 10 }

    cfgWlanRapdTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanRapdTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RAPD Table Entry"
        INDEX {cfgWlanRapdIndex}
        ::= { cfgWlanRapdTable 1 }

    CfgWlanRapdTableSeq ::=
        SEQUENCE {  cfgWlanRapdIndex Integer32,
                    cfgWlanRapdEnabled INTEGER,
                    cfgWlanRapdInterface Integer32,
                    cfgWlanRapdCheckInterval INTEGER,
                    cfgWlanRapdScanFreqList Integer32,
                    cfgWlanRapdAllowedMacParameter Integer32,
                    cfgWlanRapdSsidParameter Integer32
                 }

    cfgWlanRapdIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Index of the Table Entry"
        ::= { cfgWlanRapdTableEntry 1 }

    cfgWlanRapdEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Enable this Instance of RAPD Detection

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 2 }

    cfgWlanRapdInterface OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** WLAN Interface Index for RAPD

             An index in `cfgWlanInterfaceTable` may be referenced.

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 3 }

    cfgWlanRapdCheckInterval OBJECT-TYPE
        SYNTAX Integer32 (1..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Check Interval for RAPD Instance in Seconds

             This defines the interval of the scan processes to look for
             potential rogue APs in seconds.

             Note that scanning for RAPs comes at a cost, since the AP temporarily
             leaves its operating channel and during that time can't provide
             services to stations. Therefore, the check interval shall be chosen
             as a trade-off between a sufficient detection probability and
             an acceptable service degradation.

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 4 }

    cfgWlanRapdScanFreqList OBJECT-TYPE
        SYNTAX Integer32 (-2..23)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Scan frequency list to use for this RAPD instance

             This is the index of the `cfgWlanFreqTable` that shall be used to
             scan for rogue APs. The chosen table is to be configured with the
             frequencies that should be monitored.

             Setting the value to `-2` scans all frequencies possibly in the
             configured country code and allowed by the radio.

             Setting the value to `-1` scans only the configured frequency on
             which the currently radio operates.

             Note: scanning many frequencies increases service degradation, since
             the AP interrupts its operation for the scan process and the off-channel
             time is proportional to the amount of frequencies scanned. Therefore, a
             full scan of all available frequencies is not advised.

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 5 }

    cfgWlanRapdAllowedMacParameter OBJECT-TYPE
        SYNTAX Integer32 (-1..63)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** MAC Addresses Ignored as Rogue APs

             This is a reference ID to the `cfgWlanRapdMacTable`.
             Uses all referenced parameters which have as
             `cfgWlanRapdMacId` the value set here.

             This allows to have an installation with multiple own APs providing
             the same SSID and allowing those. When no MAC addresses are referenced,
             any AP other using the own SSID will be detected as rogue.

             A value of `-1` means standlone mode.

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 6 }

    cfgWlanRapdSsidParameter OBJECT-TYPE
        SYNTAX Integer32 (-1..63)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** SSIDs to Scan for Rogue APs

             This is a reference ID to the `cfgWlanRapdSsidTable`.
             Uses all referenced parameters which have as
             `cfgWlanRapdSsidId` the value set here.

             All referenced SSIDs are monitored for rogue APs. When this value
             is set to `-1` the SSID to scan for is the interface's AP SSID.

             Setting arbitrary SSIDs allows for one AP to do the detection work
             for a different AP. Assume an installation where a company has a
             public and a private wlan network, of which the private is not allowed
             to have service interruption. The AP providing the public network can
             be configured to scan for both SSIDs.

             Applies to AP."
        ::= { cfgWlanRapdTableEntry 7 }

-- -----------------------------------------------------------------------------

    cfgWlanRapdMacTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanRapdMacTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Rogue Access Point Detection Allowed MAC Addresses Table"
        ::= { cfgWlanRogueApDetection 11 }

    cfgWlanRapdMacTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanRapdMacTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Rogue Access Point Detection Allowed MAC Addresses Table Entry"
        INDEX {cfgWlanRapdMacIndex}
        ::= { cfgWlanRapdMacTable 1 }

    CfgWlanRapdMacTableSeq ::=
        SEQUENCE {  cfgWlanRapdMacIndex Integer32,
                    cfgWlanRapdMacId Integer32,
                    cfgWlanRapdMacEnabled INTEGER,
                    cfgWlanRapdMacAddr DisplayString
                 }

    cfgWlanRapdMacIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Index of the Table Entry"
        ::= { cfgWlanRapdMacTableEntry 1 }

    cfgWlanRapdMacId OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** ID of the RAPD MAC Address Table

             The configuration item `cfgWlanRapdAllowedMacParameter`
             references to this ID.

             Applies to AP."
        ::= { cfgWlanRapdMacTableEntry 2 }

    cfgWlanRapdMacEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Disable or Enable This Entry in the MAC List

             Applies to AP."
        ::= { cfgWlanRapdMacTableEntry 3 }

    cfgWlanRapdMacAddr OBJECT-TYPE
        SYNTAX DisplayString (SIZE(17))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** MAC Address to be Allowed in RAPD

             **Format:** `00:14:5a:09:01:23`

             Applies to AP."
        ::= { cfgWlanRapdMacTableEntry 4 }

-- -----------------------------------------------------------------------------

    cfgWlanRapdSsidTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlanRapdSsidTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Rogue Access Point Detection SSID Table"
        ::= { cfgWlanRogueApDetection 12 }

    cfgWlanRapdSsidTableEntry OBJECT-TYPE
        SYNTAX  CfgWlanRapdSsidTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Rogue Access Point Detection SSID Table Entry"
        INDEX {cfgWlanRapdSsidIndex}
        ::= { cfgWlanRapdSsidTable 1 }

    CfgWlanRapdSsidTableSeq ::=
        SEQUENCE {  cfgWlanRapdSsidIndex Integer32,
                    cfgWlanRapdSsidId Integer32,
                    cfgWlanRapdSsidEnabled INTEGER,
                    cfgWlanRapdSsidSsid DisplayString
                 }

    cfgWlanRapdSsidIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Index of the Table Entry"
        ::= { cfgWlanRapdSsidTableEntry 1 }

    cfgWlanRapdSsidId OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** ID of the RAPD SSID List

             The configuration item `cfgWlanRapdSsidParameter`
             references to this ID.

             Applies to AP."
        ::= { cfgWlanRapdSsidTableEntry 2 }

    cfgWlanRapdSsidEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Disable or Enable This Entry in the SSID List

             Applies to AP."
        ::= { cfgWlanRapdSsidTableEntry 3 }

    cfgWlanRapdSsidSsid OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..32))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Rogue SSID to Scan for

             Applies to AP."
        ::= { cfgWlanRapdSsidTableEntry 4 }

-- =============================================================================

-- Routing

    cfgRouteDefault     OBJECT IDENTIFIER ::= { cfgRouting 1 }

    cfgRouteDefGateway OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Gateway

             The default gateway defines the node on an IP network that serves
             as a router for any other network which is not defined in the
             routing table.

             The default gateway specified here is always configured on routing
             table 254 with a metric of 0."
        ::= { cfgRouteDefault 1 }

-- -----------------------------------------------------------------------------

    cfgRouteTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgRouteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Static Routes"
        ::= { cfgRouting 2 }

    cfgRouteTableEntry OBJECT-TYPE
        SYNTAX  CfgRouteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Static Route"
        INDEX {cfgRouteTableIndex}
        ::= { cfgRouteTable 1 }

    CfgRouteTableSeq ::=
        SEQUENCE {  cfgRouteTableIndex Integer32,
                    cfgRouteTableEnabled INTEGER,
                    cfgRouteTableDestinationNetwork DisplayString,
                    cfgRouteTableGateway DisplayString,
                    cfgRouteTableSource IpAddress,
                    cfgRouteTableCarpId Integer32,
                    cfgRouteTableInterface DisplayString,
                    cfgRouteTableMetric Integer32,
                    cfgRouteTableRoutingTables DisplayString,
                    cfgRouteTableMonitor Integer32,
                    cfgRouteTableComment DisplayString,
                    cfgRouteTableWeight Integer32
                 }

    cfgRouteTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..265)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgRouteTableEntry 1 }

    cfgRouteTableEnabled OBJECT-TYPE
        SYNTAX  INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Route Entry"
        ::= { cfgRouteTableEntry 2 }

    cfgRouteTableDestinationNetwork OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Network in CIDR Notation

             Set to `0.0.0.0/0` to match any destination. This is the equivalent
             to the default gateway in `cfgRouteDefGateway`."
        ::= { cfgRouteTableEntry 3 }

    cfgRouteTableGateway OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Gateway to Destination Network

             Specify the IP address of the gateway over which the destination
             specified in `cfgRouteTableDestinationNetwork` is reachable.

             Alternatively options are:

             * **`unreachable`**: Create a route that blocks traffic and
                                  responds with ICMP code 1 (Host unreachable)
             * **`prohibit`**: Create a route that blocks traffic and responds
                               with ICMP code 13 (Communication administratively
                               filtered)
             * **`blackhole`**: Create a route that silently drops all traffic
             * **`throw`**: Create a route that skips processing on the current
                            routing table. May be used for policy routing"
        ::= { cfgRouteTableEntry 5 }

    cfgRouteTableSource OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source for Traffic to Destination Network

             Optional, use only if you have multiple possible sources."
        ::= { cfgRouteTableEntry 6 }

    cfgRouteTableCarpId OBJECT-TYPE
        SYNTAX  Integer32 (-1..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The CARP Instance Which Brings the Route Up

             Has to be set to -1 when this is a normal route and should not be
             handled by a CARP instance.
             All routes which have a value 0..15 are brought up by the respective
             CARP instance when it becomes a master for an IP.
             This allows to create routes which are routed over a CARP-Address."
        ::= { cfgRouteTableEntry 8 }

    cfgRouteTableInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interface of Static Route

             The interface on which the static route is created. Usually this
             is not required, and the system determines automatically to which
             interface a route applies to.

             Leave this on `none` unless you need an explicit interface for a
             route. For example, this is required when using IPsec with VTI
             (see `cfgVpnIpsecGlblVirtualTunnelInterface`)."
        ::= { cfgRouteTableEntry 9 }

    cfgRouteTableMetric OBJECT-TYPE
        SYNTAX  Integer32 (0..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Metric of the Route

             The metric allows to create multiple routes to the same
             destination. The higher a metric, the less priority the route has."
        ::= { cfgRouteTableEntry 10 }

    cfgRouteTableRoutingTables OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Routing Tables on Which Route are Created

             This is a space and/or comma separated list of tables on which the
             route will be created.

             Specify 254 to create routes on the `main` table.

             Valid values are > 0 and < 2000000000. However in this range there
             are reserved values that may not be used:

             * 128: prelocal
             * 253: default
             * 255: local

             Use `cfgRouteRuleTable` to create policies which use the tables
             specified here.

             **Examples:**

             * 5000
             * 254, 7000
             * 100 254, 8000"
        ::= { cfgRouteTableEntry 11 }

    cfgRouteTableMonitor OBJECT-TYPE
        SYNTAX  Integer32 (-1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Handling This Route

             This is a reference to an NLM instance (`cfgNlmMonIndex`).

             The referenced monitor has to have as actions a value of `8000` or
             `8001` (see `cfgNlmMonUpAction` and `cfgNlmMonDownAction`).

             Set to `-1` to not handle this route by a monitor.

             CARP (`cfgNetCarpTable`) and NLM monitoring are exclusive."
        ::= { cfgRouteTableEntry 12 }

    cfgRouteTableComment OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "User Comment

             This parameter has no operational function.
             It allows to store a comment about the use of this route."
        ::= { cfgRouteTableEntry 13 }

    cfgRouteTableWeight OBJECT-TYPE
        SYNTAX  Integer32 (1..256)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Weight for ECMP

             When multiple gateways for the same destination exist, connections
             are distributed to the gateways according to their weight.
             Connections are distinguished on IP source and IP destination.

             **Use Case:**

             * The net 192.168.0.0/24 is reachable via 10.0.1.1 and 172.16.1.1
             * 10.0.1.1 has a weight of 1 and 172.16.1.1 has a weight of 2
             * When 3 connections are opened, 1 connection is sent via 10.0.1.1
               and 2 connections via 172.16.1.1"
        ::= { cfgRouteTableEntry 14 }

-- -----------------------------------------------------------------------------

    cfgMRouteTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgMRouteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Static Multicast Routes"
        ::= { cfgRouting 3 }

    cfgMRouteTableEntry OBJECT-TYPE
        SYNTAX  CfgMRouteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Static Multicast Routes"
        INDEX {cfgMRouteTableIndex}
        ::= { cfgMRouteTable 1 }

    CfgMRouteTableSeq ::=
        SEQUENCE {  cfgMRouteTableIndex Integer32,
                    cfgMRouteTableEnabled INTEGER,
                    cfgMRouteTableInput DisplayString,
                    cfgMRouteTableSource DisplayString,
                    cfgMRouteTableGroup IpAddress,
                    cfgMRouteTableOutput DisplayString
                 }

    cfgMRouteTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgMRouteTableEntry 1 }

    cfgMRouteTableEnabled OBJECT-TYPE
        SYNTAX  INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable this Multicast Route Entry

             Applies to AP and STA."
        ::= { cfgMRouteTableEntry 2 }

    cfgMRouteTableInput OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Input Interface

             The interface on which multicast traffic is received."
        ::= { cfgMRouteTableEntry 3 }

    cfgMRouteTableSource OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(7..18))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Unicast Source Address to Listen for

             May be set to a specific address, or to a range in CIDR notation.

             If it is set to `0.0.0.0` multicast traffic from all sources is
             forwarded.

             **Examples:**

             * 0.0.0.0
             * 192.168.1.15
             * 172.16.1.0/24"
        ::= { cfgMRouteTableEntry 4 }

    cfgMRouteTableGroup OBJECT-TYPE
        SYNTAX  IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Multicast Group to Forward

             Multicast addresses are in the range of
             '224.0.0.0' to '239.255.255.255'."
        ::= { cfgMRouteTableEntry 5 }

    cfgMRouteTableOutput OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Output Interface(s)

             This is a space and/or comma separated list of interfaces from
             which the forwarded multicast traffic is sent.

             **Examples:**

             * br0.vlan0
             * wlan0
             * eth0, eth1, wlan1"
        ::= { cfgMRouteTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgRouteRuleTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgRouteRuleTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Routing Rules

             Also called `policy routing`.

             These rules may be used to match frames based on:

             * Source (`cfgRouteRuleFrom`)
             * Destination (`cfgRouteRuleTo`)
             * Input Interface (`cfgRouteRuleInputInterface`)
             * TOS (Type of Service, QoS) value (`cfgRouteRuleTos`)
             * IP Protocol (`cfgRouteRuleIpProto`)
             * Source Port (UDP and TCP, `cfgRouteRuleSourcePort`)
             * Destination Port (UDP and TCP, `cfgRouteRuleDestinationPort`)

             These frames are then processed with the specified routing table
             in `cfgRouteRuleLookupTable`.

             Each rule should have its own unique preference set via
             `cfgRouteRulePreference`. Thus multiple overlapping rules may be
             created."
        ::= { cfgRouting 4 }

    cfgRouteRuleTableEntry OBJECT-TYPE
        SYNTAX  CfgRouteRuleTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Routing Rule"
        INDEX {cfgRouteRuleIndex}
        ::= { cfgRouteRuleTable 1 }

    CfgRouteRuleTableSeq ::=
        SEQUENCE {  cfgRouteRuleIndex Integer32,
                    cfgRouteRuleEnabled INTEGER,
                    cfgRouteRulePreference Integer32,
                    cfgRouteRuleFrom DisplayString,
                    cfgRouteRuleTo DisplayString,
                    cfgRouteRuleInputInterface DisplayString,
                    cfgRouteRuleTos DisplayString,
                    cfgRouteRuleIpProto Integer32,
                    cfgRouteRuleSourcePort DisplayString,
                    cfgRouteRuleDestinationPort DisplayString,
                    cfgRouteRuleLookupTable Integer32,
                    cfgRouteRuleMark DisplayString
                 }

    cfgRouteRuleIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgRouteRuleTableEntry 1 }

    cfgRouteRuleEnabled OBJECT-TYPE
        SYNTAX  INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable this Rule"
        ::= { cfgRouteRuleTableEntry 2 }

    cfgRouteRulePreference OBJECT-TYPE
        SYNTAX Integer32 (10000..1999999999)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Preference of the Rule

             The preference defines in what order rules are evaluated.
             This enables multiple overlapping rules. The lower the value, the
             higher the priority.

             Each match should have it's own unique preference."
        ::= { cfgRouteRuleTableEntry 3 }

    cfgRouteRuleFrom OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source Network

             This is an address or network in CIDR notation.

             Set to `0.0.0.0/0` to match any source."
        ::= { cfgRouteRuleTableEntry 4 }

    cfgRouteRuleTo OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Network

             This is an address or network in CIDR notation.

             Set to `0.0.0.0/0` to match any destination."
        ::= { cfgRouteRuleTableEntry 5 }

    cfgRouteRuleInputInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Input Interface

             Match an interface on which traffic is received.
             If the interface is the loopback `lo`, only traffic originating
             on the device itself is matched. Thus different rules for local
             traffic and forwarding traffic can be created.

             Set to `any` to match any interface."
        ::= { cfgRouteRuleTableEntry 6 }

    cfgRouteRuleTos OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..3))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Type Of Service

             Match frames based on the TOS field in their IP header according to
             RFC 791.
             ```
             |  7  |  6  |  5  |  4  |  3  |  2  |  1  |  0  |
             +-----+-----+-----+-----+-----+-----+-----+-----+
             |   PRECEDENCE    |       TOS       | Unused(0) |
             +-----+-----+-----+-----+-----+-----+-----+-----+
             ```
             Thus valid values are:

             * 0
             * 4
             * 8
             * c
             * 10
             * 14
             * 18
             * 1c

             Set to `any` to match any TOS value."
        ::= { cfgRouteRuleTableEntry 8 }

    cfgRouteRuleIpProto OBJECT-TYPE
        SYNTAX Integer32 (-1..254)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP Protocol

             Match frames based on the IP protocol in their IP header.

             Common protocols are:

             * **1**: ICMP
             * **2**: IGMP
             * **6**: TCP
             * **17**: UDP
             * **50**: ESP (IPsec)
             * **51**: AH (IPsec)
             * **112**: VRRP / CARP

             Set to -1 to ignore this field."
        ::= { cfgRouteRuleTableEntry 9 }

    cfgRouteRuleSourcePort OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source Port

             When the frames are TCP or UDP, match on their source port.

             May be a single number or a range of ports.

             **Examples:**

             * 53
             * 443
             * 1000-2000
             * 8000-8001

             Set to `any` to ignore this field."
        ::= { cfgRouteRuleTableEntry 10 }

    cfgRouteRuleDestinationPort OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Port

             When the frames are TCP or UDP, match on their destination port.

             May be a single number or a range of ports.

             **Examples:**

             * 53
             * 443
             * 1000-2000
             * 8000-8001

             Set to `any` to ignore this field."
        ::= { cfgRouteRuleTableEntry 11 }

    cfgRouteRuleLookupTable OBJECT-TYPE
        SYNTAX Integer32 (1..1999999999)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Routing Table to Lookup

             Frames which match the configured criteria are processed by the
             routing table specified here.

             The default routing table is table 254 - the main table.
             All traffic not explicitly directed to a different table is
             processed by the main table.

             Reserved routing table numbers may not be used and are:

             * 128: prelocal
             * 253: default
             * 255: local"
        ::= { cfgRouteRuleTableEntry 12 }

    cfgRouteRuleMark OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..10))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mark

             Frames may be marked with a mark in the `cfgFwMangleTable`.
             Use this parameter to match frames with the specified mark.

             Set to `-1` to disable matching on mark.

             The maximum mark value is `4294967295`."
        ::= { cfgRouteRuleTableEntry 13 }


-- -----------------------------------------------------------------------------

    cfgRouteDhcpTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgRouteDhcpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Received Routes

             This table may be used to specify the metric and table of routes
             received via DHCP. When using ECMP also the weight may be changed.
             To dynamically bring the routes up and down, a monitor may be
             specified."
        ::= { cfgRouting 5 }

    cfgRouteDhcpTableEntry OBJECT-TYPE
        SYNTAX  CfgRouteDhcpTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Received Routes"
        INDEX {cfgRouteDhcpIndex}
        ::= { cfgRouteDhcpTable 1 }

    CfgRouteDhcpTableSeq ::=
        SEQUENCE {  cfgRouteDhcpIndex Integer32,
                    cfgRouteDhcpEnabled INTEGER,
                    cfgRouteDhcpInterface DisplayString,
                    cfgRouteDhcpMetric Integer32,
                    cfgRouteDhcpRoutingTables DisplayString,
                    cfgRouteDhcpMonitor Integer32,
                    cfgRouteDhcpWeight Integer32
                 }

    cfgRouteDhcpIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgRouteDhcpTableEntry 1 }

    cfgRouteDhcpEnabled OBJECT-TYPE
        SYNTAX  INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable This Entry"
        ::= { cfgRouteDhcpTableEntry 2 }

    cfgRouteDhcpInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interface of DHCP Client

             The name of an interface on which a DHCP Client is running.

             **Examples:**

             * wlan0
             * br0.vlan7"
        ::= { cfgRouteDhcpTableEntry 3 }

    cfgRouteDhcpMetric OBJECT-TYPE
        SYNTAX Integer32 (-1..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Metric of Routes Received

             The metric allows to create multiple routes to the same
             destination. The higher a metric, the less priority the route has.

             Set to -1 to not explicitly set a metric.
             Depending on the DHCP client a different metric is implied:

             * **wwan**: 600
             * **eth**: 400
             * **wlan**: 400
             * **ovpn**: 200"
        ::= { cfgRouteDhcpTableEntry 4 }

    cfgRouteDhcpRoutingTables OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Routing Tables on Which Received Routes are Created

             This is a space and/or comma separated list of tables on which the
             route will be created.

             Specify 254 to create routes on the `main` table.

             Valid values are > 0 and < 2000000000. However in this range there
             are reserved values that may not be used:

             * 128: prelocal
             * 253: default
             * 255: local

             Use `cfgRouteRuleTable` to create policies which use the table
             specified here.

             **Examples:**

             * 5000
             * 254, 7000
             * 100 254, 8000"
        ::= { cfgRouteDhcpTableEntry 5 }

    cfgRouteDhcpMonitor OBJECT-TYPE
        SYNTAX Integer32 (-1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Handling of Routes Received

             This is a reference to an NLM instance (`cfgNlmMonIndex`).

             The referenced monitor has to be of type **route(3)** or
             **logic(5)** when the logic monitor has a route monitor in its
             dependency tree (see `cfgNlmMonType`).

             Set to `-1` to not handle this route by a monitor."
        ::= { cfgRouteDhcpTableEntry 6 }

    cfgRouteDhcpWeight OBJECT-TYPE
        SYNTAX  Integer32 (1..256)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Weight for ECMP of Routes Received

             When multiple gateways for the same destination exist, connections
             are distributed to the gateways according to their weight.
             Connections are distinguished on IP source and IP destination.

             **Use Case:**

             * The net 192.168.0.0/24 is reachable via 10.0.1.1 and 172.16.1.1
             * 10.0.1.1 has a weight of 1 and 172.16.1.1 has a weight of 2
             * When 3 connections are opened, 1 connection is sent via 10.0.1.1
               and 2 connections via 172.16.1.1"
        ::= { cfgRouteDhcpTableEntry 7 }

-- -----------------------------------------------------------------------------

    cfgRouteGlobal     OBJECT IDENTIFIER ::= { cfgRouting 6 }

    cfgRouteGlblReversePathFilter OBJECT-TYPE
        SYNTAX INTEGER {none(0), strict(1), loose(2)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reverse Path Filter

             The reverse path filter has 3 modes of operation:

             * **none(0)**: No source address validation is performed and any
                            packet is forwarded to the destination network.
             * **strict(1)**: Strict Mode as defined in RFC 3704. Each incoming
                              packet to a router is tested against the routing
                              table and if the interface that the packet is
                              received on is not the best return path for the
                              packet then the packet is dropped.
             * **loose(2)**: Loose mode as defines in RFC 3704 Loose Reverse
                             Path. Each incoming packet is tested against the
                             route table and the packet is dropped if the source
                             address is not routable through any interface. This
                             allows for asymmetric routing where the return path
                             may not be the same as the source path."
        ::= { cfgRouteGlobal 2 }

-- =============================================================================
-- Quality of Service (QoS)

    cfgQosL3PrioEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Layer 3 Prioritization

             Controls IP Precedence based priority assignments.

             Actual prioritization on the wireless link only occurs if
             `cfgQosWmeEnabled` is enabled as well.

             The L3 prioritization is only applicable to bridge interfaces
             such as `br0.vlan0` on a bridged AP or `br1.vlan0` on a routed STA.
             The IP address of the handled network must not be assigned
             to a physical wireless interface like `wlan0`.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQos 1 }

-- -----------------------------------------------------------------------------

    cfgQosDscpToTidMapTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgQosDscpToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DSCP To TID Map

             Mapping table from DSCP class selector (IP TOS) to
             wireless priority (TID).

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQos 2 }

    cfgQosDscpToTidMapTableEntry OBJECT-TYPE
        SYNTAX  CfgQosDscpToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "QoS DSCP To TID Mapping Table Entry"
        INDEX {cfgQosDscpToTidMapTableIndex}
        ::= { cfgQosDscpToTidMapTable 1 }

    CfgQosDscpToTidMapTableSeq ::=
        SEQUENCE {  cfgQosDscpToTidMapTableIndex  Integer32,
                    cfgQosDscpToTidMapValue  Integer32}

    cfgQosDscpToTidMapTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "QoS DSCP To TID Mapping Table Index"
        ::= { cfgQosDscpToTidMapTableEntry 1 }

    cfgQosDscpToTidMapValue OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Layer 2 Priorities For IP Precedence Values 0-7

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosDscpToTidMapTableEntry 2 }

-- -----------------------------------------------------------------------------

    cfgQosVlanToTidMapTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgQosVlanToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "802.1p To TID Map

             Mapping table from layer 2 priorities (802.1p)
             to wireless priority (TID)."
        ::= { cfgQos 3 }

    cfgQosVlanToTidMapTableEntry OBJECT-TYPE
        SYNTAX  CfgQosVlanToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "QoS VLAN To TID Priority Table Entry"
        INDEX {cfgQosVlanToTidMapTableIndex}
        ::= { cfgQosVlanToTidMapTable 1 }

    CfgQosVlanToTidMapTableSeq ::=
        SEQUENCE {  cfgQosVlanToTidMapTableIndex  Integer32,
                    cfgQosVlanToTidMapValue  Integer32}

    cfgQosVlanToTidMapTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgQosVlanToTidMapTableEntry 1 }

    cfgQosVlanToTidMapValue OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Layer 2 Priorities For VLAN Priorities 0-7.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosVlanToTidMapTableEntry 2 }

-- -----------------------------------------------------------------------------

    cfgQosIpToTidMapTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgQosIpToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP Header To TID Map

            Mapping table from IP header (Source, Destination, Protocol, Port),
            to wireless priority (TID)."
        ::= { cfgQos 4 }

    cfgQosIpToTidMapTableEntry OBJECT-TYPE
        SYNTAX  CfgQosIpToTidMapTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP To TID Priority Table Entry"
        INDEX {cfgQosIpToTidMapTableIndex}
        ::= { cfgQosIpToTidMapTable 1 }

    CfgQosIpToTidMapTableSeq ::=
        SEQUENCE {  cfgQosIpToTidMapTableIndex Integer32,
                    cfgQosIpToTidMapSrcNet     DisplayString,
                    cfgQosIpToTidMapDestNet    DisplayString,
                    cfgQosIpToTidMapProto      INTEGER,
                    cfgQosIpToTidMapSrcPort    Integer32,
                    cfgQosIpToTidMapDestPort   Integer32,
                    cfgQosIpToTidMapPrecedence Integer32,
                    cfgQosIpToTidMapEnabled    INTEGER,
                    cfgQosIpToTidMapProtoFull  Integer32}

    cfgQosIpToTidMapTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Priority of IP To TID Rule

             A higher value represents a higher priority.
             This is important when multiple rules have overlapping matches.

             **Example:**

             * Rule 0: Match 0.0.0.0/0 as source and 0.0.0.0/0 as destination
             * Rule 1: Match 172.16.0.0/12 as source and 0.0.0.0/0 as destination

             Since Rule 1 has a higher index, the match on 172.16.0.0/12 takes
             precedence over Rule 0 with a lower index."
        ::= { cfgQosIpToTidMapTableEntry 1 }

    cfgQosIpToTidMapSrcNet OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source Network For IP Prioritization Rule

             In CIDR format.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 2 }

    cfgQosIpToTidMapDestNet OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(5..50))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Network For IP Prioritization Rule

             In CIDR format.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 3 }

    cfgQosIpToTidMapProto OBJECT-TYPE
        SYNTAX INTEGER { any(0), udp(1), tcp(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Deprecated. Use `cfgQosIpToTidMapProtoFull`"
        ::= { cfgQosIpToTidMapTableEntry 4 }

    cfgQosIpToTidMapSrcPort OBJECT-TYPE
        SYNTAX  Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source Port For IP Prioritization Rule

             Use port `-1` to match any port.
             This setting can only be used if the IP protocol
             `cfgQosIpToTidMapProtoFull` is set to **6(tcp))** or **17(udp)**.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 5 }

    cfgQosIpToTidMapDestPort OBJECT-TYPE
        SYNTAX  Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Port For IP Prioritization Rule

             Use port `-1` to match any port.
             This setting can only be used if the IP protocol
             `cfgQosIpToTidMapProtoFull` is set to **6(tcp))** or **17(udp)**.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 6 }

    cfgQosIpToTidMapPrecedence OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Precedence To Set For IP Prioritization Rule

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 7 }

    cfgQosIpToTidMapEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable Or Enable IP Prioritisation Rule

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 8 }

    cfgQosIpToTidMapProtoFull OBJECT-TYPE
        SYNTAX Integer32 (-2..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Protocol for IP Prioritization Rule

             When set to `-2` uses the deprecated `cfgQosIpToTidMapProto`.

             Set to `-1` to match any protocol.
             Otherwise matches the specified IP protocol.

             **Examples:**

             * **-1**: any protocol
             * **1**: ICMP
             * **2**: IGMP
             * **6**: TCP
             * **17**: UDP
             * **50**: ESP (IPsec)
             * **51**: AH (IPsec)
             * **112**: VRRP / CARP

             For a full list of available protocols see
             https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 9 }

-- -----------------------------------------------------------------------------

    cfgQosDefaultTid OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default TID For Frames That Do Not Match Any Other Rule

             The default TID is set to to frames to be transmitted that do not
             match the mode to which `cfgQosL3PrioEnabled` is set and there is
             no matching entry in `cfgQosEthertypeToL2Table`.
             This means when `cfgQosL3PrioEnabled` is set to **disabled(0)**,
             that the frame is not a VLAN frame. And when `cfgQosL3PrioEnabled`
             is set to **enabled(1)**, that the frame is not an IP frame.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQos 5 }

-- -----------------------------------------------------------------------------

    cfgQosEthertypeToL2Table OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgQosEthertypeToL2TableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Set TID For Specific Ethertype

             The ethertype rules are applied, when the frame to be transmitted
             does not match the mode to which `cfgQosL3PrioEnabled` is set.
             This means when `cfgQosL3PrioEnabled` is set to **disabled(0)**,
             that the frame is not a VLAN frame. And when `cfgQosL3PrioEnabled`
             is set to **enabled(1)**, that the frame is not an IP frame.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQos 6 }

    cfgQosEthertypeToL2TableEntry OBJECT-TYPE
        SYNTAX  CfgQosEthertypeToL2TableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Ethertype To TID Table Entry"
        INDEX {cfgQosEthertypeToL2TableIndex}
        ::= { cfgQosEthertypeToL2Table 1 }

    CfgQosEthertypeToL2TableSeq ::=
        SEQUENCE {  cfgQosEthertypeToL2TableIndex Integer32,
                    cfgQosEthertypeToL2Enabled INTEGER,
                    cfgQosEthertypeToL2Ethertype DisplayString,
                    cfgQosEthertypeToL2Tid Integer32
                 }

    cfgQosEthertypeToL2TableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP To TID Priority Table Index"
        ::= { cfgQosEthertypeToL2TableEntry 1 }

    cfgQosEthertypeToL2Enabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable Or Enable Ethertype Rule

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosEthertypeToL2TableEntry 2 }

    cfgQosEthertypeToL2Ethertype OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(4..4))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethertype To Match

             Some popular Ethertypes:

             * 0800: IPv4
             * 0806: ARP
             * 0835: RARP
             * 8100: VLAN
             * 86DD: IPv6
             * 8847: MPLS unicast
             * 8848: MPLS multicast
             * 8892: Profinet
             * 9100: stacked VLAN

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosEthertypeToL2TableEntry 3 }

    cfgQosEthertypeToL2Tid OBJECT-TYPE
        SYNTAX  Integer32 (0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "TID To Set For Ethertype

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosEthertypeToL2TableEntry 4 }


-- =============================================================================

-- Logging

-- -----------------------------------------------------------------------------

    cfgLogRemote     OBJECT IDENTIFIER ::= { cfgLogging 2 }

    cfgLogRemoteTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgLogRemoteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "List of Syslog Destinations"
        ::= { cfgLogRemote 1 }

    cfgLogRemoteTableEntry OBJECT-TYPE
        SYNTAX  CfgLogRemoteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "List of Syslog Destinations"
        INDEX {cfgLogRemoteIndex}
        ::= { cfgLogRemoteTable 1 }

    CfgLogRemoteTableSeq ::=
        SEQUENCE {  cfgLogRemoteIndex Integer32,
                    cfgLogRemoteEnabled INTEGER,
                    cfgLogRemoteLevel INTEGER,
                    cfgLogRemoteProtocol INTEGER,
                    cfgLogRemoteIp IpAddress,
                    cfgLogRemotePort Integer32,
                    cfgLogRemoteType Integer32,
                    cfgLogRemoteCaIds DisplayString,
                    cfgLogRemoteCertId Integer32,
                    cfgLogRemoteCrlExpiryExtension Integer32,
                    cfgLogRemoteTlsControlParams Integer32,
                    cfgLogRemoteCiphers DisplayString
                 }

    cfgLogRemoteIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..3)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgLogRemoteTableEntry 1 }

    cfgLogRemoteEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Syslog Instance Enabled or Disabled"
        ::= { cfgLogRemoteTableEntry 2 }

    cfgLogRemoteLevel OBJECT-TYPE
        SYNTAX INTEGER { emergency(0), alert(1), critical(2), error(3), warning(4), notice(5), info(6), debug(7) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Log only messages with equal or higher priority than prio N (0-7).

             This parameter is intentionally fixed to 7."
        ::= { cfgLogRemoteTableEntry 3 }

    cfgLogRemoteProtocol OBJECT-TYPE
        SYNTAX INTEGER { udp(0), tcp(1), tcptls(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Protocol to Send Log Messages

             The udp(0) protocol complies with the syslog protocol
             according to RFC5424.

             The tcptls(2) protocol complies with the secure syslog protocol
             according to RFC5425."
        ::= { cfgLogRemoteTableEntry 4 }

    cfgLogRemoteIp OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote IP Address

             The IP Address to which syslog messages are sent to."
        ::= { cfgLogRemoteTableEntry 5 }

    cfgLogRemotePort OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote Port

             The remote port to which syslog messages are sent.

             When set to `-1` uses the assigned port according to the protocol
             that is selected in `cfgLogRemoteProtocol`:

             **udp(0)** Port 514
             **tcp(1)** Port 514
             **tcptls(2)** Port 6514"
        ::= { cfgLogRemoteTableEntry 6 }

    cfgLogRemoteType OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to Control Remote Syslog Type

             * **0x00** - no remote syslog
             * **0x01** - standard syslog
             * **0x02** - security syslog
             * **0x04** - commissioning syslog"
        ::= { cfgLogRemoteTableEntry 7 }

    cfgLogRemoteCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CA IDs

             Reference to the CA IDs to be used."
        ::= { cfgLogRemoteTableEntry 8 }

    cfgLogRemoteCertId OBJECT-TYPE
        SYNTAX Integer32 (-1..1000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Certificate ID

             Reference to the Certificate ID to be used."
        ::= { cfgLogRemoteTableEntry 9 }

    cfgLogRemoteCrlExpiryExtension OBJECT-TYPE
        SYNTAX Integer32 (-1..1095)
        MAX-ACCESS read-write
        STATUS     current
                DESCRIPTION
            "CRL Validity Period Extension in Days

             If set, the validity period of a CRL can be extended by the
             given amount of days.

             * **0** no extension
             * **1-1095** extension days
             * **-1** extend to infinity => ignore CRL expiry"
        ::= { cfgLogRemoteTableEntry 10 }

    cfgLogRemoteTlsControlParams OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to Control TLS Behavior

             When the upload server is to be accessed via certificates, this
             setting is used to control the TLS behaviour.

             Supported bits:

             * 0x0 all validity checks will be performed
             * 0x1 ignore certificate validity time
             * 0x2 ignore ca certificate
             * 0x4 ignore CRLs
             * 0x8 ignore missing CRLs"
        ::= { cfgLogRemoteTableEntry 11 }

    cfgLogRemoteCiphers OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher String for Remote Syslog

             This is an OpenSSL specific configuration option for configuring
             the default cipher.

             Please read the user manual and the OpenSSL documentation
             for a list of available ciphers and used syntax.

             Used only if `cfgSyslogRemoteProtocol` is **tcptls(2)**.

             **Example:**

             * ECDHE-RSA-AES128-GCM-SHA256
             * DHE-RSA-AES128-GCM-SHA256
             * ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
             * DEFAULT:!EXP:!LOW"
        ::= { cfgLogRemoteTableEntry 12 }

-- =============================================================================

-- Snmp

    cfgSnmpd             OBJECT IDENTIFIER ::= { cfgSnmp 1 }

    cfgSnmpdLocation OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP System Location

             A string to describe the location of the device.

             This value may be read via `RFC1213-MIB::sysLocation.0`"
        ::= { cfgSnmpd 1 }

    cfgSnmpdContact OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Contact

             A string to describe the responsible person of the device.

             This value may be read via `RFC1213-MIB::sysContact.0`"
        ::= { cfgSnmpd 2 }

    cfgSnmpdVersion OBJECT-TYPE
        SYNTAX INTEGER { v2c(0), v3usm(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Version

             Set to **v2c(0)** to use SNMP v2 with the simple community-based
             security scheme.

             Set to **v3usm(1)** to use the User-based Security Model (USM).
             USM is the default security module for SNMPv3, with the
             authentication type specified in `cfgSnmpdAuthType` and the privacy
             protocol defined in `cfgSnmpdPrivType`.

             Setting **v3usm(1)** disables access to the device via SNMPv2.

             Please refer to the user guide for more information about the
             access rights of the predefined users.

             When using **v3usm(1)**, the unique Engine ID used by the SNMP
             Agent for SNMPv3 is built from the MAC address of `eth0` and has
             the following format:

             `0x80001F8803<MAC(6 octets)>`

             **Example:**

             * Engine ID: `0x80001F880300145A035042`"
        ::= { cfgSnmpd 3 }

    cfgSnmpdName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Name

             An administratively-assigned name for this managed node. By
             convention, this is the node's FQDN (Fully Qualified Domain Name).

             This value may be read via `RFC1213-MIB::sysName.0`"
        ::= { cfgSnmpd 4 }

    cfgSnmpdEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable the SNMP Agent

             Disabling the SNMP Agent does not disable SNMP traps. See
             `cfgSnmpTrapEnabled` to disable SNMP traps."
        ::= { cfgSnmpd 5 }

    cfgSnmpdAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Address to Which the SNMP Agent Binds

             The default is `udp:0.0.0.0:161`.
             When defining a configuration, default arguments may be ommited.
             Multiple space and/or comma separated tuples are allowed.

             Supported tranport protocols are:

             * UDP

             **Examples:**

             * udp:192.168.1.20:161
             * 192.168.1.20, 10.0.0.1:10161, udp:172.16.32.32:30161
             * 192.168.1.20 10.0.0.1:10161 udp:172.16.32.32:30161

             For more information see
             http://www.net-snmp.org/docs/man/snmpd.examples.html#lbAE"
        ::= { cfgSnmpd 6 }

    cfgSnmpdAuthType OBJECT-TYPE
        SYNTAX INTEGER { sha1(2), sha384(5), sha512(6) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Authentication Type for SNMPv3

             This parameter is used when `cfgSnmpdVersion` is set to
             **v3usm(1)**."
        ::= { cfgSnmpd 7 }

    cfgSnmpdPrivType OBJECT-TYPE
        SYNTAX INTEGER { aes128(2), aes256(4)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Encryption Type for SNMPv3

             This parameter is used when `cfgSnmpdVersion` is set to
             **v3usm(1)**."
        ::= { cfgSnmpd 8 }

-- -----------------------------------------------------------------------------

    cfgSnmpdCommunity     OBJECT IDENTIFIER ::= { cfgSnmpd 100 }

    cfgSnmpdComAdmin OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Password for the administrator.

             This is the community or the passphrase for the user administrator
             depending on the cfgSnmpdVersion:

             * **v2c:** community string for administrator
             * **v3usm:** passphrase for authentication and privacy for user admin

             Applies to AP and STA."
        ::= { cfgSnmpdCommunity 1 }

    cfgSnmpdComMaintainer OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Password for the maintainer.

             Applies to AP and STA."
        ::= { cfgSnmpdCommunity 2 }

    cfgSnmpdComMonitor OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Password for the monitor.

             This is the community or the passphrase for the user monitor
             depending on the cfgSnmpdVersion:

             * **v2c:** community string for monitor
             * **v3usm:** passphrase for authentication and privacy for user
               monitor

             Applies to AP and STA."
        ::= { cfgSnmpdCommunity 3 }

-- -----------------------------------------------------------------------------

    cfgSnmpTrap     OBJECT IDENTIFIER ::= { cfgSnmp 10 }

    cfgSnmpTrapEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable SNMP Notifications

             This parameter does not configure operation of the SNMP Agent which
             may be enabled or disabled via `cfgSnmpdEnabled`."
        ::= { cfgSnmpTrap 1 }

    cfgSnmpTrapVersion OBJECT-TYPE
        SYNTAX INTEGER { v1(0), v2c(1), v3usm(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Version

             SNMP notifications can be sent in the following versions:

             * **v1(0):** This version is obsolete and defaults to **v2c(1)**
             * **v2c(1):** Version 2c
             * **v3usm(2):** Version 3 USM"
        ::= { cfgSnmpTrap 2 }

    cfgSnmpTrapCommunity OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Community

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v2c(1)**."
        ::= { cfgSnmpTrap 3 }

    cfgSnmpTrapDest OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP Address of the Notification Receiver

             This is an IPv4 address."
        ::= { cfgSnmpTrap 4 }

    cfgSnmpTrapType OBJECT-TYPE
        SYNTAX INTEGER { trap(1), inform(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Notification Type

             * **trap(1):** Send all SNMP notifications as TRAP
             * **inform(2):** Send all SNMP notifications as INFORM"
        ::= { cfgSnmpTrap 5 }

    cfgSnmpTrapEngineId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..66))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Authoritative Engine ID

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             This parameter may be set to 'auto' (recommended). In 'auto' mode
             the behaviour is as follows:

             * If `cfgSnmpTrapType` is **trap(1)** then the engine ID of the
               SNMP Agent is used in the notification (see `cfgSnmpdVersion`).
             * If `cfgSnmpTrapType` is **inform(1)** then the SNMPv3 discovery
               process is used to retrieve authoritative engine ID from the
               receiver.

             Otherwise, this parameter may be used to define the engine ID
             used as the authoritative engine ID for SNMPv3 notifications. The
             engine ID must be given as a hexadecimal string (optionally
             prefixed by '0x'). The value must be between 5 and 32 octets long.
             The string has to follow the engine ID definition in RFC 3411.

             In this mode the behaviour is as follows:

             * If `cfgSnmpTrapType` is **trap(1)** then this engine ID is used
               as authoritative engine ID in the notification.
             * If `cfgSnmpTrapType` is **inform(1)** then this engine ID is
               enforce to be used as authoritative engine ID in the SNMPv3
               discovery process. If the receiver has a different engine ID,
               sending notifications will fail.

             **Examples:**

             * auto
             * 0x80001F8801C0A80014
             * 0x80001F880300145A035042
             * 0x80001F880441424344454647484950"
        ::= { cfgSnmpTrap 6 }

    cfgSnmpTrapUser OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP User / Security Name

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             Set the user name used for authenticated SNMPv3 notifications."
        ::= { cfgSnmpTrap 9 }

    cfgSnmpTrapAuthProtocol OBJECT-TYPE
        SYNTAX INTEGER { none(0), sha1(2), sha384(5), sha512(6) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Authentication Protocol

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             Set the authentication protocol used for authenticated SNMPv3
             notifications."
        ::= { cfgSnmpTrap 10 }

    cfgSnmpTrapAuthPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Authentication Password

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             Set the authentication password used for authenticated SNMPv3
             notifications."
        ::= { cfgSnmpTrap 11 }

    cfgSnmpTrapPrivProtocol OBJECT-TYPE
        SYNTAX INTEGER { none(0), aes128(2), aes256(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP Privacy Protocol

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             Set the privacy protocol used for authenticated SNMPv3
             notifications."
        ::= { cfgSnmpTrap 12 }

    cfgSnmpTrapPrivPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Privacy Password

             This parameter is active when `cfgSnmpTrapVersion` is set to
             **v3usm(2)**.

             Set the privacy password used for encrypted SNMPv3 notifications."
        ::= { cfgSnmpTrap 13 }

    cfgSnmpTrapTimeout OBJECT-TYPE
        SYNTAX  Integer32 (1..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP INFORM Timeout

             This parameter is active when `cfgSnmpTrapType` is set to
             **inform(2)**.

             Specifies the timeout in seconds between retries."
        ::= { cfgSnmpTrap 14 }

    cfgSnmpTrapRetries OBJECT-TYPE
        SYNTAX  Integer32 (0..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SNMP INFORM Retries

             This parameter is active when `cfgSnmpTrapType` is set to
             **inform(2)**.

             Specifies the number of retries."
        ::= { cfgSnmpTrap 15 }

-- =============================================================================

-- DHCP

    cfgDhcpGlobal     OBJECT IDENTIFIER ::= { cfgDhcp 1 }

    cfgDhcpGlobalEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable DNS/DHCP Server Functionality"
        ::= { cfgDhcpGlobal 1 }

-- -----------------------------------------------------------------------------

    cfgDhcpDnsmasqTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpDnsmasqTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS/DHCP Server Instances

             Dnsmasq is used as DNS and DHCP server.
             A single instance may serve multiple interfaces and scopes.
             It may run as DNS server only, or as DHCP server only."
        ::= { cfgDhcp 2 }

    cfgDhcpDnsmasqTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpDnsmasqTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS/DHCP Server Instances

             Dnsmasq is used as DNS and DHCP server.
             A single instance may serve multiple interfaces and scopes.
             It may run as DNS server only, or as DHCP server only."
        INDEX {cfgDhcpDnsmasqIndex}
        ::= { cfgDhcpDnsmasqTable 1 }

    CfgDhcpDnsmasqTableSeq ::=
        SEQUENCE {  cfgDhcpDnsmasqIndex Integer32,
                    cfgDhcpDnsmasqScopeParameter Integer32,
                    cfgDhcpDnsmasqDnsPort Integer32,
                    cfgDhcpDnsmasqDnsListenAddress DisplayString,
                    cfgDhcpDnsmasqDnsResolveOrder INTEGER,
                    cfgDhcpDnsmasqDnsEnabled INTEGER,
                    cfgDhcpDnsmasqDhcpEnabled INTEGER,
                    cfgDhcpDnsmasqDnsStopDnsRebind INTEGER,
                    cfgDhcpDnsmasqDnsRebindDomainOk DisplayString,
                    cfgDhcpDnsmasqDnsDomainOverrideParameter Integer32,
                    cfgDhcpDnsmasqDnsHostOverrideParameter Integer32,
                    cfgDhcpDnsmasqCustomOptions DisplayString
                 }

    cfgDhcpDnsmasqIndex OBJECT-TYPE
        SYNTAX Integer32 (0..9)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpDnsmasqTableEntry 1 }

    cfgDhcpDnsmasqScopeParameter OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Parameter to Set Which Scope ID to use for the DHCP Server

             This is used in conjunction with the scope ID
             parameter `cfgDhcpScopeId`."
        ::= { cfgDhcpDnsmasqTableEntry 2 }

    cfgDhcpDnsmasqDnsPort OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DNS Server Port

             The UDP and TCP port on which the DNS service is running."
        ::= { cfgDhcpDnsmasqTableEntry 3 }

    cfgDhcpDnsmasqDnsListenAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DNS Server Listen Address

             Multiple space and/or comma separated addresses are allowed.

             When set to `auto`, this instance binds to all addresses on
             interfaces specified by `cfgDhcpScopeInterface` in the
             referenced `cfgDhcpDnsmasqScopeParameter`. When no interfaces are
             referenced, this instance binds to any address in the system except
             localhost (127.0.0.1).

             When set to `wildcard`, this instance binds to `0.0.0.0:<port>`.

             A DHCP server may not run on the same interface as a DHCP Relay
             specified in `cfgDhcpRelayInterface`.

             **Examples:**

             * auto
             * wildcard
             * 127.0.0.1, 192.168.1.20
             * 127.0.0.1 192.168.1.20
             * 192.168.1.20,10.0.88.1,10.0.99.1

             **Note:** When a dnsmasq instance binds a port to wildcard, no
                       other instance may bind the same port."
        ::= { cfgDhcpDnsmasqTableEntry 4 }

    cfgDhcpDnsmasqDnsResolveOrder OBJECT-TYPE
        SYNTAX INTEGER { any(0), strictorder(1), all(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "Upstream DNS Server Resolve Order

              Defines in what order the upstream DNS servers shall be querried.

              * **any(0):** Send queries to any of the upstream servers and try
                            to favour servers that are known to be up.
              * **strictorder(1):** Try each query with each server strictly in
                                    the order they are configured in the
                                    `cfgSysNameserverTable`.
              * **all(2):** Send all queries to all available servers. The reply
                            from the server which answers first will be returned
                            to the original requester."
        ::= { cfgDhcpDnsmasqTableEntry 5 }

    cfgDhcpDnsmasqDnsEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DNS Server Disabled or Enabled

              Enable the DNS Server functionality of this instance."
        ::= { cfgDhcpDnsmasqTableEntry 6 }

    cfgDhcpDnsmasqDhcpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DHCP Server Disabled or Enabled

              Enable the DHCP Server functionality of this instance."
        ::= { cfgDhcpDnsmasqTableEntry 7 }

    cfgDhcpDnsmasqDnsStopDnsRebind OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DNS Rebind Protection

              Reject and log to syslog addresses from upstream nameservers which
              are in the private ranges (RFC1918). This blocks an attack where a
              browser behind a firewall is used to probe machines on the local
              network.

              When using split-DNS, use `cfgDhcpDnsmasqDnsRebindDomainOk` to
              specify domains that are allowed to resolve to private addresses."
        ::= { cfgDhcpDnsmasqTableEntry 8 }

    cfgDhcpDnsmasqDnsRebindDomainOk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "Allowed Domains for DNS Rebind Protection

              This entry is active when `cfgDhcpDnsmasqDnsStopDnsRebind` is
              enabled.

              Enter a space and/or comma separated list of domains which are
              allowed to resolve to private addresses (RFC1918).

              No Domains are excepted when set to `none`.

              **Examples:**

              * example.com, example.net, example.org
              * yourdomain.com anotherdomain.com

              **Note:** Subdomains are included when excepting domains.
                        e.g when domain.net is set, then subdomain1.domain.net
                        and subdomain2.domain.net are excepted as well."
        ::= { cfgDhcpDnsmasqTableEntry 9 }

    cfgDhcpDnsmasqDnsDomainOverrideParameter OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference to Domain Override ID

             All entries in the `cfgDhcpDomainOverrideTable` with a
             `cfgDhcpDmnOvrId` that matches the value set here will be used for
             this DNS server instance."
        ::= { cfgDhcpDnsmasqTableEntry 10 }

    cfgDhcpDnsmasqDnsHostOverrideParameter OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference to Host Override ID

             All entries in the `cfgDhcpHostOverrideTable` with a
             `cfgDhcpHstOvrId` that matches the value set here will be used for
             this DNS server instance."
        ::= { cfgDhcpDnsmasqTableEntry 11 }

    cfgDhcpDnsmasqCustomOptions OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..4095))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Custom Dnsmasq Options

             These options are appended to the dnsmasq configuration.
             This allows to set options not available via other configuration
             items.
             Set to `none` when no additional options shall be added.

             When setting multiple options, separate them with a space.

             The full list of all available options is at:
             https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html

             Prohibited options are:

             * addn-hosts
             * hostsdir
             * keep-in-foreground
             * no-daemon
             * pid-file
             * user
             * group
             * version
             * resolv-file
             * dumpfile
             * dumpmask
             * dnssec-timestamp
             * dhcp-hostsfile
             * dhcp-optsfile
             * dhcp-hostsdir
             * dhcp-optsdir
             * dhcp-leasefile
             * dhcp-script
             * dhcp-luascript
             * dhcp-scriptuser
             * script-arp
             * script-on-renewal
             * enable-tftp
             * tftp-root
             * conf-file
             * conf-dir
             * servers-file
             * conf-script

             Essentially everything which calls a script, changes files, or
             otherwise allows to adjust sensitive setting on the system.

             When a custom option is set which is configurable via an existing
             parameter, the custom option will take precedence.

             **Examples:**

             * none
             * log-queries
             * log-dhcp; domain=example.org"
        ::= { cfgDhcpDnsmasqTableEntry 12 }

-- -----------------------------------------------------------------------------

    cfgDhcpScopeTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpScopeTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Instance Configs"
        ::= { cfgDhcp 3 }

    cfgDhcpScopeTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpScopeTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Instance Configs"
        INDEX {cfgDhcpScopeIndex}
        ::= { cfgDhcpScopeTable 1 }

    CfgDhcpScopeTableSeq ::=
        SEQUENCE {  cfgDhcpScopeIndex Integer32,
                    cfgDhcpScopeId Integer32,
                    cfgDhcpScopeInterface DisplayString,
                    cfgDhcpScopeStart Integer32,
                    cfgDhcpScopeLimit Integer32,
                    cfgDhcpScopeLeasetime DisplayString,
                    cfgDhcpScopeGateway IpAddress,
                    cfgDhcpScopeDnsServer1 IpAddress,
                    cfgDhcpScopeDnsServer2 IpAddress,
                    cfgDhcpScopeDhcpOptions DisplayString,
                    cfgDhcpScopeAutoGateway INTEGER,
                    cfgDhcpScopeAutoDns INTEGER,
                    cfgDhcpScopeTag DisplayString
                 }

    cfgDhcpScopeIndex OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpScopeTableEntry 1 }

    cfgDhcpScopeId OBJECT-TYPE
        SYNTAX Integer32 (0..511)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scope ID

             This is used in conjunction with the DHCP parameter
             `cfgDhcpDnsmasqScopeParameter`."
        ::= { cfgDhcpScopeTableEntry 2 }

    cfgDhcpScopeInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Server Listening Interface

             Network interface on which the DHCP server listen for DHCP
             requests. The interface on which the server runs must have an
             address configured. The DHCP server offers lease addresses based
             on the assigned address, the `cfgDhcpScopeStart` offset and the
             `cfgDhcpScopeLimit`.
             If an interface has multiple addresses, then the first address in
             the order specified in the `cfgNetIpTable` is used.

             **Examples:**

             * eth1
             * br0.vlan0
             * macvlan0"
        ::= { cfgDhcpScopeTableEntry 3 }

    cfgDhcpScopeStart OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Start Offset

             Specifies the first address of the scope as an offset from the
             network address and can be calculated as:

             network address + `cfgDhcpScopeStart`

             The network address is derived from the first configured IP address
             on the interface specified by `cfgDhcpScopeInterface`.

             **Examples:**

             * br0.vlan0 has 192.168.1.20/24. The network address of this CIDR
               block is 192.168.1.0. With `cfgDhcpScopeStart` set to 100, the
               lowest address which will be assigned is 192.168.1.100.
             * br0.vlan99 has 172.29.101.7/23. The network address of this CIDR
               block is 172.29.100.0. With `cfgDhcpScopeStart` set to 306, the
               lowest address which will be assigned is 172.29.101.50.
             * br0.vlan1000 has 10.0.8.140/26. The network address of this CIDR
               block is 10.0.8.128. With `cfgDhcpScopeStart` set to 22, the
               lowest address which will be assigned is 10.0.8.150."
        ::= { cfgDhcpScopeTableEntry 4 }

    cfgDhcpScopeLimit OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Limit

             Limits the number of addresses which are assigned to clients. Thus
             this parameter defines how many addresses are in the scope.
             The highest address assigned to a client can be calculated as:

             network address + `cfgDhcpScopeStart` + `cfgDhcpScopeLimit` - 1

             **Examples:**

             * br0.vlan0 has 192.168.1.20/24. The network address of this CIDR
               block is 192.168.1.0. With `cfgDhcpScopeStart` set to 100 and
               `cfgDhcpScopeLimit` set to 150, the highest address which will be
               assigned is 192.168.1.249.
             * br0.vlan99 has 172.29.101.7/23. The network address of this CIDR
               block is 172.29.100.0. With `cfgDhcpScopeStart` set to 306 and
               `cfgDhcpScopeLimit` set to 100, the highest address which will be
               assigned is 172.29.101.149.
             * br0.vlan1000 has 10.0.8.140/26. The network address of this CIDR
               block is 10.0.8.128. With `cfgDhcpScopeStart` set to 22 and
               `cfgDhcpScopeLimit` set to 30 the highest address which will be
               assigned is 10.0.8.179.

             **Note:** When `cfgDhcpScopeLimit` is set to a value greater than
                       the remaining size of the CIDR block, the highest address
                       is set to the last address in the block. Essentially the
                       size of the scope is reduced until it fits the block."
        ::= { cfgDhcpScopeTableEntry 5 }

    cfgDhcpScopeLeasetime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Lease Time

             Specifies the lease time of addresses handed out to clients.

             **Examples:**

             * 12h
             * 30m
             * 180s"
        ::= { cfgDhcpScopeTableEntry 6 }

    cfgDhcpScopeGateway OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Default Gateway (DHCP Option 3)

             Specifies the default gateway address handed out to clients.
             A value of `0.0.0.0` means not used. IPv4 only."
        ::= { cfgDhcpScopeTableEntry 7 }

    cfgDhcpScopeDnsServer1 OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Primary DNS Server (DHCP Option 6)

             Specifies the primary DNS server address handed out to clients.
             A value of `0.0.0.0` means not used. IPv4 only."
        ::= { cfgDhcpScopeTableEntry 8 }

    cfgDhcpScopeDnsServer2 OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Scope Secondary DNS Server (DHCP Option 6)

             Specifies the secondary DNS server address handed out to clients.
             If the primary DNS server is not configured, this entry will also
             be ignored.
             A value of `0.0.0.0` means not used. IPv4 only."
        ::= { cfgDhcpScopeTableEntry 9 }

    cfgDhcpScopeDhcpOptions OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..1024))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DHCP Scope Custom Options

              This config option allows to specify arbitrary DHCP options which
              will be sent to DHCP clients.
              Set to `none` when no additional options are required.
              Enter the DHCP option number followed by a comma followed by the
              arguments of the DHCP option.

              Multiple DHCP options may be specified, separated by a space.

              **Examples:**

              * 15,domain.example.com
              * 119,search-domain.example.com,another-search.example.com
              * 121,10.0.32.0/24,10.0.8.6,10.0.33.0/24,10.0.8.7
              * 15,domain.example.com 119,search-domain.example.com
              * 26,1420

              For a full list of available DHCP options see:
              https://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xhtml

              **Note:** To be able to set DHCP Option 3 and 6 via this
                        configuration item, you first need to disable the
                        respective direct configuration item.
                        Set 0.0.0.0 to `cfgDhcpScopeGateway` for option 3.
                        Set 0.0.0.0 to `cfgDhcpScopeDnsServer1` for option 6."
        ::= { cfgDhcpScopeTableEntry 14 }

    cfgDhcpScopeAutoGateway OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DHCP Scope Auto Gateway

              When no default gateway is configured in `cfgDhcpScopeGateway` or
              `cfgDhcpScopeDhcpOptions`, then this options will automatically
              assign the IP address of this DHCP server as default gateway."
        ::= { cfgDhcpScopeTableEntry 15 }

    cfgDhcpScopeAutoDns OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DHCP Scope Auto DNS

              When no DNS servers are configured in `cfgDhcpScopeDnsServer1`,
              `cfgDhcpScopeDnsServer2` and `cfgDhcpScopeDhcpOptions`, then this
              options will automatically assign the IP address of this DHCP
              server as DNS server.

              This option has no effect, when `cfgDhcpDnsmasqDnsEnabled` of the
              dnsmasq instance referencing this scope is disabled."
        ::= { cfgDhcpScopeTableEntry 16 }

    cfgDhcpScopeTag OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
             "DHCP Scope Tag

              The tag for which this scope is active.
              Use the `cfgDhcpTagTable` to specify a tag that is matched here.
              Allowed are alpha-numeric characters.

              Set to `none` to disable this field."
        ::= { cfgDhcpScopeTableEntry 20 }

-- -----------------------------------------------------------------------------

    cfgDhcpDomainOverrideTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpDomainOverrideTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS Server Host Override Table"
        ::= { cfgDhcp 4 }

    cfgDhcpDomainOverrideTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpDomainOverrideTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS Server Domain Override Table"
        INDEX {cfgDhcpDmnOvrIndex}
        ::= { cfgDhcpDomainOverrideTable 1 }

    CfgDhcpDomainOverrideTableSeq ::=
        SEQUENCE {  cfgDhcpDmnOvrIndex Integer32,
                    cfgDhcpDmnOvrId Integer32,
                    cfgDhcpDmnOvrEnabled INTEGER,
                    cfgDhcpDmnOvrDomain DisplayString,
                    cfgDhcpDmnOvrServer DisplayString
                 }

    cfgDhcpDmnOvrIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpDomainOverrideTableEntry 1 }

    cfgDhcpDmnOvrId OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Domain Override Entry ID

             This is used in conjunction with
             `cfgDhcpDnsmasqDnsDomainOverrideParameter`.

             All entries set to the value referenced are used by the DNS server."
        ::= { cfgDhcpDomainOverrideTableEntry 2 }

    cfgDhcpDmnOvrEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Domain Override Entry Disabled or Enabled"
        ::= { cfgDhcpDomainOverrideTableEntry 3 }

    cfgDhcpDmnOvrDomain OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Domain Override Entry Domain

             Domain to match. Queries for the matched domain are sent to the
             server specified in `cfgDhcpHstOvrServer`.
             This entry is considered disabled when set to `none`.

             All subdomains of a specified domain are included. Multiple servers
             may be specified for the same domain. These servers are querried
             in the order defined in `cfgDhcpDnsmasqDnsResolveOrder`.

             When set to `*`, this server is queried for all domains, and the
             servers specified in `cfgSysNameserverTable` are ignored. Multiple
             servers may be specified for the same domain. These servers are
             querried in the order defined in `cfgDhcpDnsmasqDnsResolveOrder`.

             **Examples:**

             * none
             * example.com
             * mydomain.net
             * `*`

             To exclude a subdomain from another override, set the corresponding
             `cfgDhcpDmnOvrServer` to `#`.

             **Example:**

             * specify example.com via 192.168.1.20
             * specify blocked.example.com via #
             * example.com is querried via 192.168.1.20
             * subdomain.example.com is querried via 192.168.1.20
             * blocked.example.com is querried via `cfgSysNameserverTable`"
        ::= { cfgDhcpDomainOverrideTableEntry 4 }

    cfgDhcpDmnOvrServer OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Domain Override Entry Server

             The server which is querried for the domain and its subdomains
             specified in `cfgDhcpDmnOvrDomain`.

             The format of the server is:
             `IPv4-Address[#Destination-Port][@Source-Address|@Source-Interface][#Source-Port]`

             * The IPv4-Address is the destination to which requests are sent.
             * The Destination-Port specifies on which port the server is
               running.
               When omitted, the default port 53 is used.
             * The Source-Address specifies from which address the requests
               are sent.
               Instead of a Source-Address, a Source-Interface may be
               specified. This is used in combination with dynamic addresses,
               for example CARP.
               When omitted, the routing table provides the source to be used.
             * The Source-Port may be used to specify from which port requests
               are send.
               When ommited, a random port is used.

             This entry is considered disabled when set to `none`.

             Set to `#` to exempt a subdomain, (see `cfgDhcpDmnOvrDomain`).

             **Examples:**

             * none
             * `#`
             * 192.168.1.20
             * 192.168.1.20#10053
             * 192.168.1.20@192.168.1.2
             * 192.168.1.20#10053@192.168.1.2
             * 192.168.1.20@192.168.1.2#12345
             * 192.168.1.20#10053@192.168.1.2#12345
             * 192.168.1.20@br0.vlan0
             * 192.168.1.20@br0.vlan0#12345
             * 192.168.1.20#10053@br0.vlan0#12345"
        ::= { cfgDhcpDomainOverrideTableEntry 5 }

-- -----------------------------------------------------------------------------

    cfgDhcpHostOverrideTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpHostOverrideTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS Server Host Override Table"
        ::= { cfgDhcp 5 }

    cfgDhcpHostOverrideTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpHostOverrideTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DNS Server Host Override Table"
        INDEX {cfgDhcpHstOvrIndex}
        ::= { cfgDhcpHostOverrideTable 1 }

    CfgDhcpHostOverrideTableSeq ::=
        SEQUENCE {  cfgDhcpHstOvrIndex Integer32,
                    cfgDhcpHstOvrId Integer32,
                    cfgDhcpHstOvrEnabled INTEGER,
                    cfgDhcpHstOvrHost DisplayString,
                    cfgDhcpHstOvrAddress IpAddress
                 }

    cfgDhcpHstOvrIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpHostOverrideTableEntry 1 }

    cfgDhcpHstOvrId OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Host Override Entry ID

             This is used in conjunction with
             `cfgDhcpDnsmasqDnsHostOverrideParameter`.

             All entries set to the value referenced are used by the DNS server."
        ::= { cfgDhcpHostOverrideTableEntry 2 }

    cfgDhcpHstOvrEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Host Override Entry Disabled or Enabled"
        ::= { cfgDhcpHostOverrideTableEntry 3 }

    cfgDhcpHstOvrHost OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Host Override Entry Host

             FQDN or name to match. Is considered disabled when set to `none`.

             **Examples:**

             * none
             * host.example.com
             * somenamewithouttld"
        ::= { cfgDhcpHostOverrideTableEntry 4 }

    cfgDhcpHstOvrAddress OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Host Override Entry Address

             IP Address to return.

             This is the address which is returned when a query is received for
             the FQDN or name configured in `cfgDhcpHstOvrDomain`."
        ::= { cfgDhcpHostOverrideTableEntry 5 }

-- -----------------------------------------------------------------------------

    cfgDhcpRelayTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpRelayTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Relay Table

            A DHCP Relay allows to forward DHCP requests to a remote DHCP server."
        ::= { cfgDhcp 6 }

    cfgDhcpRelayTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpRelayTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Relay Table"
        INDEX {cfgDhcpRelayIndex}
        ::= { cfgDhcpRelayTable 1 }

    CfgDhcpRelayTableSeq ::=
        SEQUENCE {  cfgDhcpRelayIndex Integer32,
                    cfgDhcpRelayEnabled INTEGER,
                    cfgDhcpRelayInterface DisplayString,
                    cfgDhcpRelayLocalAddress DisplayString,
                    cfgDhcpRelayServerAddress DisplayString,
                    cfgDhcpRelayInterfaceToServer DisplayString
                 }

    cfgDhcpRelayIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpRelayTableEntry 1 }

    cfgDhcpRelayEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Relay Disabled or Enabled"
        ::= { cfgDhcpRelayTableEntry 2 }

    cfgDhcpRelayInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Relay Listening Interface

             The interface on which the DHCP Relay listens for requests to
             forward.

             A relay may not run on the same interface as a DHCP Server
             specified in `cfgDhcpScopeInterface`.

             **Examples:**

             * br1.vlan0
             * wlan0"
        ::= { cfgDhcpRelayTableEntry 3 }

    cfgDhcpRelayLocalAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Local Address to Use as Source to Server

             The local address is an IP address residing on the interface
             specified in `cfgDhcpRelayInterface`.
             This address is used as Gateway IP Address (giaddr) for the relayed
             requests.

             When set to `auto` the first address on the interface is used.

             **Examples:**

             * auto
             * 192.168.100.1"
        ::= { cfgDhcpRelayTableEntry 4 }

    cfgDhcpRelayServerAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(7..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Server Address

             This is the address to which all DHCP requests arriving on the
             interface specified in `cfgDhcpRelayInterface` are relayed to.

             Multiple servers may be specified as a space and/or comma separated
             list.

             When multiple servers are specified, the requests are concurrently
             forwarded to all of them.

             **Examples:**

             * 10.0.0.1
             * 10.0.0.1, 10.0.0.2
             * 10.0.0.1 10.0.0.2 10.0.0.3
             * 10.0.0.1 10.0.0.2, 10.0.0.3 10.0.0.4"
        ::= { cfgDhcpRelayTableEntry 5 }

    cfgDhcpRelayInterfaceToServer OBJECT-TYPE
        SYNTAX DisplayString (SIZE(3..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interface towards DHCP Server

             This parameter defines on which interface DHCP replies from the
             server will be accepted. This is intended for configurations which
             have three or more interfaces: one being relayed from, a second
             connecting the DHCP server, and a third untrusted network,
             typically the internet. It avoids the possibility of spoof replies
             arriving via this third interface.

             Set to `any` to accept replies from any interface.

             **Examples:**

             * any
             * br0.vlan0
             * eth0"
        ::= { cfgDhcpRelayTableEntry 6 }

-- -----------------------------------------------------------------------------

    cfgDhcpTagTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgDhcpTagTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Tag Table

            A Tag allows to match a DHCP request and assign it to a specific
            DHCP scope with `cfgDhcpScopeTag`."
        ::= { cfgDhcp 7 }

    cfgDhcpTagTableEntry OBJECT-TYPE
        SYNTAX  CfgDhcpTagTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DHCP Tag Table"
        INDEX {cfgDhcpTagIndex}
        ::= { cfgDhcpTagTable 1 }

    CfgDhcpTagTableSeq ::=
        SEQUENCE {  cfgDhcpTagIndex Integer32,
                    cfgDhcpTagType INTEGER,
                    cfgDhcpTagMatch DisplayString,
                    cfgDhcpTagTag DisplayString
                 }

    cfgDhcpTagIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgDhcpTagTableEntry 1 }

    cfgDhcpTagType OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), mac(1), clientid(2), hostname(3), circuitid(4), remoteid(5) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Tag Type

             Selects what `cfgDhcpTagMatch` is matching on:

             **disabled(0)**: Ignore this entry
             **mac(1)**: The MAC-address of the requesting client
             **clientid(2)**: The client id of the requesting client
             **hostname(3)**: The hostname of the requesting client
             **circuitid(4)**: The circuit-id (opt 82.1) of the request
             **remoteid(5)**: The remote-id (opt 82.2) of the request
             "
        ::= { cfgDhcpTagTableEntry 2 }

    cfgDhcpTagMatch OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Tag Match

             Depending on the type of `cfgDhcpTagType` this is another format.

             * **mac(1)**:
               The mac address in hex-colon, e.g `00:14:5a:01:23:45`.

             * **clientid(2)**:
               The clientid in hex-colon or as string. e.g `98:76:54` or `test`.

             * **hostname(3)**:
               The hostname as a string. Validity of a hostname applies.

             * **circuitid(4)** and **remoteid(5)**:
               The circuit-id or remote-id is normally given as colon-separated
               hex, but is also allowed to be a simple string. e.g:
               `30:30:30:37:37:63:33:30:35:66:62:35:3a:61:74:73:31:37:2d:6d:6d:61`
               which is the equivalent of `00077c305fb5:ats17-mma`."
        ::= { cfgDhcpTagTableEntry 3 }

    cfgDhcpTagTag OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DHCP Tag Match

             The tag that is assigned to a request when `cfgDhcpTagMatch`
             matches.

             Allowed are alpha-numeric characters.

             This tag is used in a scope with `cfgDhcpScopeTag`."
        ::= { cfgDhcpTagTableEntry 4 }


-- =============================================================================

-- NTP

    cfgNtpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Synchronisation via NTP

             The received time is in UTC.
             See `cfgSysTimezone` to specify the timezone."
        ::= { cfgNtp 1 }

    cfgNtpServer1 OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**DEPRECATED:** NTP Server 1

             Please use `cfgNtpClientTable`."
        ::= { cfgNtp 2 }

    cfgNtpServer2 OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**DEPRECATED:** NTP Server 2

             Please use `cfgNtpClientTable`."
        ::= { cfgNtp 3 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    cfgNtpClient      OBJECT IDENTIFIER ::= { cfgNtp 10 }

    cfgNtpClientTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNtpClientTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NTP Server Table"
        ::= { cfgNtpClient 1 }

    cfgNtpClientTableEntry OBJECT-TYPE
        SYNTAX  CfgNtpClientTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NTP Server Table"
        INDEX {cfgNtpClientIndex}
        ::= { cfgNtpClientTable 1 }

    CfgNtpClientTableSeq ::=
        SEQUENCE {  cfgNtpClientIndex Integer32,
                    cfgNtpClientEnabled INTEGER,
                    cfgNtpClientHost DisplayString
                 }

    cfgNtpClientIndex OBJECT-TYPE
        SYNTAX Integer32 (0..31)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNtpClientTableEntry 1 }

    cfgNtpClientEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NTP Server Disabled or Enabled"
        ::= { cfgNtpClientTableEntry 2 }

    cfgNtpClientHost OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NTP Server Host

             This entry is an IPv4 address or an FQDN (Fully Qualified Domain
             Name). An FQDN can only be resolved when a nameserver is configured
             in `cfgSysNameserverTable` or a nameserver is received via DHCP.

             An FQDN may resolve to a pool of IPs. When an FQDN is configured,
             the client will attempt to re-resolve it multiple times until 4
             different responses are received.

             When set to `0.0.0.0` this entry will be ignored.

             **Examples:**

             * pool.ntp.org
             * 192.168.1.2
             * 0.0.0.0"
        ::= { cfgNtpClientTableEntry 3 }

    cfgNtpClientNmeaEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Synchronisation via NMEA from a GNSS Receiver

             This feature requires `cfgGnssGpsdEnabled` to be set to enabled(1).

             Applies to cellular products only."
        ::= { cfgNtpClient 2 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    cfgNtpServer      OBJECT IDENTIFIER ::= { cfgNtp 20 }

    cfgNtpServerEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NTP Server Disabled or Enabled

             When enabled an NTP server will start on UDP port 123."
        ::= { cfgNtpServer 1 }

    cfgNtpServerLocalReference OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Local Reference

             The local directive enables a local reference mode, which allows
             the NTP server to appear synchronised to real time (from the
             viewpoint of clients polling it), even when it was never
             synchronised or the last update of the clock happened a long time
             ago.

             When enabled, will announce itself as stratum 10 while not
             synchronised to a better stratum server."
        ::= { cfgNtpServer 2 }

-- =============================================================================

-- HTTP

    cfgHttpUser OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Web Administrator Username

             This parameter is obsolete and has no replacement.

             There are two local users `admin` and `monitor`, that have the
             respective 'admin' and 'monitor' role.

             Additional users with the 'admin' and 'monitor' role may be defined
             via LDAP. See `cfgLdapEnabled`."
        ::= { cfgHttp 1 }

    cfgHttpPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Web Administrator Password

             This parameter is obsolete and has been replaced with
             `cfgHttpAdminPasswordHash` and `cfgHttpMonitorPasswordHash`.

             Additional users with their own password and role may be defined
             via LDAP. See `cfgLdapEnabled`."
        ::= { cfgHttp 2 }

    cfgHttpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Configure if the webserver shall be started.

             When disabling the webserver, make sure you still have another way
             to access the device, e.g by CLI or via SNMP."
        ::= { cfgHttp 3 }

    cfgHttpRedirectEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "If enabled, all access to `cfgHttpHttpAddress`
             shall be redirected to `cfgHttpHttpsAddress`.
             This does not disable http."
        ::= { cfgHttp 4 }

    cfgHttpHttpAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Address to which the http server binds.

             The default is '0.0.0.0:80'.
             Multiple space and/or comma separated tuples are allowed.

             **Examples:**

             * 192.168.1.20:80
             * 192.168.1.20:80, 192.168.2.20:8080, 172.16.32.32:10080
             * 192.168.1.20:80 192.168.2.20:8080 172.16.32.32:10080"
        ::= { cfgHttp 5 }

    cfgHttpHttpsAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Address to which the https server binds.

             The default is '0.0.0.0:443'.
             Multiple space and/or comma separated tuples are allowed.

             **Examples:**

             * 192.168.1.20:443
             * 192.168.1.20:443, 192.168.2.20:8443, 172.16.32.32:10443
             * 192.168.1.20:443 192.168.2.20:8443 172.16.32.32:10443"
        ::= { cfgHttp 6 }

    cfgHttpTlsServerCertId OBJECT-TYPE
        SYNTAX Integer32 (-1..1000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "TLS Server Certificate ID

             Reference ID of certificate in Cert-Store to be used
             as TLS Server Certificate.

             Set to `-1` to use the default self signed server certificate."
        ::= { cfgHttp 7 }

    cfgHttpAdminPasswordHash OBJECT-TYPE
        SYNTAX DisplayString (SIZE(10..126))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Admin Password Hash

             Used for configuration import/export only.

             Use WebAPI or Web Interface to change the
             Password.

             To generate a hash offline, use the command
             `openssl passwd -6 -salt admin <password>`."
        ::= { cfgHttp 9 }

    cfgHttpMonitorPasswordHash OBJECT-TYPE
        SYNTAX DisplayString (SIZE(10..126))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitor Password Hash

             Used for configuration import/export only.

             Use WebAPI or Web Interface to change the
             Password.

             To generate a hash offline, use the command
             `openssl passwd -6 -salt monitor <password>`."
        ::= { cfgHttp 11 }

    cfgHttpSessionLimit OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "HTTP Access Session Limit

             To restrict the maximum number of connected users.
             Set value <= 0 to disable session limitation."
        ::= { cfgHttp 12 }

    cfgHttpSessionTimeout OBJECT-TYPE
        SYNTAX Integer32 (10..18000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "HTTP Session Timeout

             Timeout in seconds after a session is closed when there is no
             activity."
        ::= { cfgHttp 13 }

    cfgHttpTlsCiphers OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher and Ciphersuites String for HTTPS server

             Specify which OpenSSL ciphers and ciphersuites to use for
             HTTPS connections.

             Please read the user manual and the OpenSSL documentation
             for a list of available ciphers, ciphersuites and used syntax.

             Up to TLSv1.2, OpenSSL uses ciphers, while with TLSv1.3
             ciphersuites are used. The format for this parameter is as
             follows: <ciphers>[|<ciphersuites>], i.e. the pipe ('|')
             sign is used to separate the ciphers from the ciphersuites.

             If ciphers or ciphersuites is left empty, no restrictions
             are applied and all of the related built-ins are available.
             If ciphers is set with the special string 'disable', the
             support for TLSv1.2 and below is disabled, while 'disable'
             given as cyphersuites disables TLSv1.3.

             Set to 'none' to disable restriction.

             **Examples:**

             * **ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384**

               limit TLSv1.2 to the selected two ciphers, leave
               TLSv1.3 ciphersuites all enabled

             * **DHE-RSA-AES256-GCM-SHA384|TLS_AES_256_GCM_SHA384**

               limit TLSv1.2 to one cipher and TLSv1.3 to one ciphersuite

             * **DHE-RSA-AES256-GCM-SHA384|disable**

               limit TLSv1.2 to one cipher and disable TLSv1.3 support

             * **disable|TLS_AES_256_GCM_SHA384**

               disable TLSv1.2 support and limit TLSv1.3 to one ciphersuite

             * **|TLS_AES_256_GCM_SHA384**

               leave all TLSv1.2 enabled, limit TLSv1.3 to one ciphersuite

             * **|disable**

               leave all TLSv1.2 ciphers enabled, disable TLSv1.3 support

             * **disable|**

               disable TLSv1.2 support, leave all TLSv1.3 ciphersuites enabled

             * **none**

               no restrictions for TLSv1.2 and TLSv1.3"
        ::= { cfgHttp 14 }

-- =============================================================================

-- LLDP

    cfgLldpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable LLDP.

             Applies to AP and STA."
        ::= { cfgLldp 1 }

    cfgLldpDescription OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LLDP Description

             Applies to AP and STA."
        ::= { cfgLldp 2 }

-- =============================================================================

-- mDNS

    cfgMdnsEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable mDNS"
        ::= { cfgMdns 1 }

    cfgMdnsNetwork OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "mDNS Aware Network Interfaces

             When set to the keywork `all` it will bind to all valid interfaces.

             Multiple interfaces may be specified as a space and/or comma
             separated list.

             **Examples:**

             * br0.vlan0
             * br0.vlan0, br0.vlan7, br0.vlan99
             * br0.vlan0 br0.vlan66"
        ::= { cfgMdns 2 }

-- =============================================================================

-- SSDP

    cfgSsdpEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS       current
        DESCRIPTION
           "Disable or Enable SSDP"
        ::= { cfgSsdp 1 }

-- =============================================================================

-- NLM

    cfgNlmGlobal     OBJECT IDENTIFIER ::= { cfgNlm 1 }

    cfgNlmGlblEnabled  OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable the Network Link Monitor"
        ::= { cfgNlmGlobal 1 }

-- -----------------------------------------------------------------------------

    cfgNlmMonitorTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgNlmMonTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NLM Monitor Table"
        ::= { cfgNlm 2 }

    cfgNlmMonitorTableEntry OBJECT-TYPE
        SYNTAX  CfgNlmMonTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NLM Monitor Table Entry"
        INDEX {cfgNlmMonIndex}
        ::= { cfgNlmMonitorTable 1 }

    CfgNlmMonTableSeq ::=
        SEQUENCE {  cfgNlmMonIndex Integer32,
                    cfgNlmMonEnabled INTEGER,
                    cfgNlmMonInterval Integer32,
                    cfgNlmMonCount Integer32,
                    cfgNlmMonType INTEGER,
                    cfgNlmMonInterfaces DisplayString,
                    cfgNlmMonDestination IpAddress,
                    cfgNlmMonUpAction Integer32,
                    cfgNlmMonDownAction Integer32,
                    cfgNlmMonScanLoopInterval Integer32,
                    cfgNlmMonCountUp Integer32,
                    cfgNlmMonRssi Integer32,
                    cfgNlmMonLogic INTEGER,
                    cfgNlmMonLogicInput DisplayString,
                    cfgNlmMonTrap INTEGER,
                    cfgNlmMonRouter IpAddress
                 }

    cfgNlmMonIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgNlmMonitorTableEntry 1 }

    cfgNlmMonEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable this Entry in the Monitor List"
        ::= { cfgNlmMonitorTableEntry 2 }

    cfgNlmMonInterval OBJECT-TYPE
        SYNTAX Integer32 (0..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Execution Interval Of This Monitor In Milliseconds

             The minimum interval is 100ms.

             Polling based monitors check their condition at each interval.

             Event based monitors have a different meaning depending on the
             value of `cfgNlmMonType`:

             * **wlan(2)**: defines the long handoff timeout.
             * **logic(5)** defines the retry-interval when the action fails."
        ::= { cfgNlmMonitorTableEntry 3 }

    cfgNlmMonCount OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Count for DOWN Transition

             The number of times the measured criteria has to be down, until
             the monitor is reported as down.

             This parameter is used for polling based monitor types only (see
             `cfgNlmMonType` )."
        ::= { cfgNlmMonitorTableEntry 4 }

    cfgNlmMonType OBJECT-TYPE
        SYNTAX INTEGER { phy(0), icmp(1), wlan(2), route(3), rssi(4), logic(5) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Objects That Can Be Monitored

             * **phy(0)** monitor checks periodically the link status of the
               ethernet interfaces defined by `cfgNlmMonInterfaces`. If at least
               one interface in the list specified is up the monitor is
               considered up. This is a polling based monitor.
             * **icmp(1)** monitor pings periodically the destination defined by
               `cfgNlmMonDestination`. If the destination does reply to the ECHO
               request within the `cfgNlmMonInterval` the monitor is considered
               up. This is a polling based monitor.
             * **wlan(2)** monitor listens to link status events of the wireless
               interface defined by `cfgNlmMonInterfaces`. This is an event
               based monitor.

               The wlan monitor consists of 3 components:

               **Long Handoff Detector** - Triggers when after disassociation no
                 authorization event is detected within the configured time in
                 `cfgNlmMonInterval`.

               **Scan Loop Detector** - Triggers immediately on trap 415. This
                 happens if there is no AP or only a single AP which stays
                 below/above the Handoff thresholds. This trap is only generated
                 when `cfgWlanHoProfile` is set to 2 or higher.

               **Handoff Loop Detector** - Triggers if there have been
                 `cfgNlmMonCount` number of Handoff events within
                 `cfgNlmMonCount` * (`cfgNlmMonInterval` + `cfgNlmMonScanLoopInterval`).

               The wlan monitor recovers:

               **Long Handoff Detector** - Immediately after the next successful
                 authorization.

               **Scan Loop Detector** - After the time of the last 415 trap
                 event + the configured `cfgNlmMonScanLoopInterval`. When down,
                 this is checked regularly in `cfgNlmMonScanLoopInterval`
                 intervals.

               **Handoff Loop Detector** - When there are less than
                 `cfgNlmMonCount` Handoff events within the time-window
                 `cfgNlmMonCount` * (`cfgNlmMonInterval` + `cfgNlmMonScanLoopInterval`).
                 When down, this is checked regularly in
                 `cfgNlmMonScanLoopInterval` intervals.

             * **route(3)** monitor is the same as **icmp(1)**, but it binds the
                            source interface statically, which is provided by a
                            DHCP client, or configured manually with
                            `cfgNlmMonInterfaces`, `cfgNlmMonDestination` and
                            `cfgNlmMonRouter`.
                            When supplied by a DHCP client this is set by
                            referencing a monitor with `cfgRouteDhcpMonitor`.
                            When used to control routes it must be used with
                            actions `8000` and `8001` to bring up and tear down
                            routes dynamically. The action may be set to `0` if
                            it is referenced by a logic monitor in
                            `cfgNlmMonLogicInput` that sets up the routes. When
                            `cfgNlmMonDestination` is configured to `0.0.0.0`,
                            this monitor is dynamically set to the default
                            gateway received by the DHCP client. When a specific
                            IP is set, this IP will be checked instead. This is
                            only necessary when the gateway does not respond to
                            ICMP requests.
                            This is a polling based monitor.

             * **rssi(4)** monitors the RSSI value of the wlan interface defined
                           in `cfgNlmMonInterfaces`. A value below the threshold
                           defined in `cfgNlmMonRssi` indicates a DOWN status.
                           This is a polling based monitor.

             * **logic(5)** monitors reference existing monitors and allow
                            logical combinations of those. This type of monitor
                            requires `cfgNlmMonLogic` to select the logical
                            operation, along with `cfgNlmMonLogicInput` to
                            define the monitors as input. A logic monitor may
                            reference only a single monitor of type **route(3)**
                            if that monitor is referenced by a DHCP client.
                            This is an event based monitor.


             **Note:** wlan(2) monitor is supported for 802.11n products only."
        ::= { cfgNlmMonitorTableEntry 5 }

    cfgNlmMonInterfaces OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Interface(s)

             This parameter is active when `cfgNlmMonType` is set to **phy(0)**,
             **wlan(2)**, **route(3)** or **rssi(4)**.

             This parameter specifies the name of the interface(s) that are
             monitored.

             Depending on the content of `cfgNlmMonType`:

             * **phy(0):** List of space and/or comma separated interfaces
             * **wlan(2):** A single wlan interface (802.11n products only)
             * **route(3):** A single interface. When this monitor is referenced
                             by an entry in `cfgRouteDhcpTable`, this
                             field will be overwritten by the DHCP client
                             supplied interface. When the monitor is referenced
                             by an entry in `cfgRouteTable`, the interface must
                             have an IP address assigned.
             * **rssi(4):** A single wlan interface (802.11n products only)

             **Examples:**

             * eth0, eth1
             * br0.vlan0, br1.vlan200
             * wlan0"
        ::= { cfgNlmMonitorTableEntry 6 }

    cfgNlmMonDestination OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Destination

             This parameter is active when `cfgNlmMonType` is set to
             **icmp(1)** or **route(3)**.

             This parameter specifies the IPv4 address that is monitored."
        ::= { cfgNlmMonitorTableEntry 7 }

    cfgNlmMonUpAction OBJECT-TYPE
        SYNTAX Integer32 (0..9999)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM 'UP' State Monitor Action

             The action is executed on a monitor-state transition to 'up'.

             Set to `0` to disable (i.e. no action).

             Supported actions are:

             * **1xxx**: Offset: 1000, x: CARP group from 0 to 255.
                         Un-demote CARP group defined by `cfgNetCarpLocalInterfaceGroup`.
             * **20xx**: Offset: 2000, x: WLAN interface from 0 to 63.
                         Enable Access Point operation on the wlan interface.
                         Note: On 802.11n products all wlan interfaces on radio0
                         are enabled, regardless of the specified WLAN interface.
             * **4xxx**: Offset: 4000, x: Wireguard Peer Index from 0 to 255.
                         Re-resolve the specified FQDN of the referenced peer.
             * **8000**: Bring up all routes which reference to this NLM instance.
                         References are defined via `cfgRouteTableMonitor` and
                         `cfgRouteDhcpMonitor`.
             * **8001**: Bring down all routes which reference to this NLM
                         instance. References are defined via
                         `cfgRouteTableMonitor` and `cfgRouteDhcpMonitor`."
        ::= { cfgNlmMonitorTableEntry 10 }

    cfgNlmMonDownAction OBJECT-TYPE
        SYNTAX Integer32 (0..9999)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM 'DOWN' State Monitor Action

             The action is executed on a monitor-state transition to 'down'.

             Set to `0` to disable (i.e. no action).

             Supported actions are:

             * **1xxx**: Offset: 1000, x: CARP group from 0 to 255.
                         Demote CARP group defined by `cfgNetCarpLocalInterfaceGroup`.
             * **20xx**: Offset: 2000, x: wlan interface from 0 to 63.
                         Disable Access Point operation on the wlan interface.
                         Note: On 802.11n products all wireless interfaces on radio0
                         are disabled, regardless of the specified WLAN interface.
             * **4xxx**: Offset: 4000, x: Wireguard Peer Index from 0 to 255.
                         Re-resolve the specified FQDN of the referenced peer.
             * **8000**: Bring down all routes which reference to this NLM
                         instance. References are defined via
                         `cfgRouteTableMonitor` and `cfgRouteDhcpMonitor`.
             * **8001**: Bring up all routes which reference to this NLM instance.
                         References are defined via `cfgRouteTableMonitor` and
                         `cfgRouteDhcpMonitor`."
        ::= { cfgNlmMonitorTableEntry 11 }

    cfgNlmMonScanLoopInterval OBJECT-TYPE
        SYNTAX Integer32 (100..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scan Loop Debounce Interval In Milliseconds

             This parameter is active when `cfgNlmMonType` is set to **wlan(2)**.

             If set to non-zero it will mark interface 'down' after
             receiving scan loop trap 415 and mark it 'up' after
             scan loop interval if no other 415 events have been
             received.

             Applies to STA. 802.11n products only."
        ::= { cfgNlmMonitorTableEntry 12 }

    cfgNlmMonCountUp OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Count for UP Transition

             The number of times the measured criteria has to be up, until
             the monitor is reported as up.

             This parameter is used for polling based monitor types only (see
             `cfgNlmMonType` )."
        ::= { cfgNlmMonitorTableEntry 13 }

    cfgNlmMonRssi OBJECT-TYPE
        SYNTAX Integer32 (0..127)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor RSSI Threshold

             This parameter is active when `cfgNlmMonType` is set to **rssi(4)**.

             This defines the threshold where an RSSI monitor indicates
             a down condition if the current rssi value is below this
             number and up otherwise."
        ::= { cfgNlmMonitorTableEntry 14 }

    cfgNlmMonLogic OBJECT-TYPE
        SYNTAX INTEGER { none(0), equal(1), not(2), or(3), and(4), nor(5), nand(6) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Logic Monitor Subtype

             This parameter is active when `cfgNlmMonType` is set to **logic(5)**.

             This parameter defines the logical operation on the input(s)
             defined in `cfgNlmMonLogicInput`.

             When the executed action fails, the action is retried at the
             interval specified in `cfgNlmMonInterval`.

             Supported operations are:

             * **none(0)**:  Monitor is ignored
             * **equal(1)**: The input defined is selected as is,
                             this is essentially an alias to an existing monitor,
                             allowing to define additional up/down actions
             * **not(2)**: This is the inversion of equal(1), i.e. it references
                           the configured monitor input, but with inverted state
             * **or(3)**:  The state is the OR combined state of referenced
                           inputs, i.e. if one of them is UP, this monitor is UP
             * **and(4)**: This is the AND equivalent for or(3), i.e. if one of
                           the referenced inputs is DOWN, this monitor is DOWN
             * **nor(5)**:  The state is the NOR combined state of referenced
                           inputs, i.e. if one of them is UP, this monitor is DOWN
             * **nand(6)**: This is the NAND equivalent for nor(5), i.e. if one of
                            the referenced inputs is DOWN, this monitor is UP"

        ::= { cfgNlmMonitorTableEntry 15 }

    cfgNlmMonLogicInput OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Input(s) for Logic Monitor

             This parameter is active when `cfgNlmMonType` is set to **logic(5)**.

             Specifies the monitor input(s) as space and/or comma-separated
             indices.

             **Examples:**

             * 1
             * 2 3,4"
        ::= { cfgNlmMonitorTableEntry 16 }

    cfgNlmMonTrap OBJECT-TYPE
        SYNTAX INTEGER { none(0), down(1), up(2), both(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Trap Sending

             This allows monitors to issue traps on state changes.

             Supported operations are:

             * **none(0)**: No traps are sent out
             * **up(1)**:   Trap 340 is sent out when monitor state gets UP
             * **down(2)**: Trap 341 is sent out when monitor state gets DOWN
             * **both(3)**: Both traps 340 and 341 are sent out"

        ::= { cfgNlmMonitorTableEntry 17 }

    cfgNlmMonRouter OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Router

             This parameter is active when `cfgNlmMonType` is set to
             **route(3)**.

             It specifies an IPv4 gateway on the interface defined in
             `cfgNlmMonInterfaces` over which the destination in
             `cfgNlmMonDestination` is reachable.

             The content of this field may be dynamically supplied by a DHCP
             client in `cfgRouteDhcpTable` that references this monitor. When
             referenced as such, then the specified interface will be
             overwritten by the DHCP client supplied interface."
        ::= { cfgNlmMonitorTableEntry 18 }

-- =============================================================================

-- CLI

    cfgCliEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable or Disable CLI

             The CLI is available via Telnet or SSH."
        ::= { cfgCli 1 }

    cfgCliUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..31))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI Username

             The username with which the CLI may be accessed.

             The username can not be set to one of the following system users:

             * root
             * daemon
             * ftp
             * network
             * nobody
             * user
             * openvpn
             * ntp
             * chrony
             * dnymasq
             * lldp
             * logd
             * ssdp
             * ubus"
        ::= { cfgCli 2 }

    cfgCliPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..126))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Deprecated. Use `cfgCliPasswordHash`"
        ::= { cfgCli 3 }

    cfgCliTelnetEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable or Disable Telnet for CLI

             This parameter enables the telnet server on the specified address
             and port (see `cfgCliTelnetAddress`)."
        ::= { cfgCli 4 }

    cfgCliSshEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable or Disable SSH for CLI

             This parameter enables the SSH server on the specified address
             and port (see `cfgCliSshAddress`)."
        ::= { cfgCli 6 }

    cfgCliTelnetAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Telnet Server Address and Port

             The default is '0.0.0.0:23'.
             Multiple space and/or comma separated tuples are allowed.

             **Examples:**

             * 192.168.1.20:23
             * 192.168.1.20:23, 192.168.2.20:8023, 172.16.32.32:10023
             * 192.168.1.20:23 192.168.2.20:8023 172.16.32.32:10023"
        ::= { cfgCli 8 }

    cfgCliSshAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SSH Server Address and Port

             The default is '0.0.0.0:22'.
             Multiple space and/or comma separated tuples are allowed.

             **Examples:**

             * 192.168.1.20:22
             * 192.168.1.20:22, 192.168.2.20:8022, 172.16.32.32:10022
             * 192.168.1.20:22 192.168.2.20:8022 172.16.32.32:10022"
        ::= { cfgCli 9 }

    cfgCliSshSessionTimeout OBJECT-TYPE
        SYNTAX Integer32 (0..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SSH Session Timeout

             Disconnect the SSH session if no traffic is transmitted or received
             for 'session timeout' seconds.

             Setting this parameter to `0` disables the session timeout."
        ::= { cfgCli 10 }

    cfgCliPasswordHash OBJECT-TYPE
        SYNTAX DisplayString (SIZE(10..126))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI Password Hash

             The password hash for CLI access.

             To set a new password, a hash of a password or a clear-text
             password may be written to this parameter.
             Reading the password always returns the hashed version.

             To generate a hash offline, use the command `openssl passwd -6`."
        ::= { cfgCli 11 }


-- =============================================================================

-- Cellular

-- -----------------------------------------------------------------------------

    cfgCellSimTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellSimTableSeq
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Parameter Table

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellular 1 }

    cfgCellSimTableEntry OBJECT-TYPE
        SYNTAX  CfgCellSimTableSeq
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Parameter Table Entry

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        INDEX {cfgCellSimIndex}
        ::= { cfgCellSimTable 1 }

    CfgCellSimTableSeq ::=
        SEQUENCE {  cfgCellSimIndex Integer32,
                    cfgCellSimSlot1 Integer32,
                    cfgCellSimSlot2 Integer32,
                    cfgCellSimPrimarySlot INTEGER,
                    cfgCellSimUnlockTimeout Integer32
                 }

    cfgCellSimIndex OBJECT-TYPE
        SYNTAX Integer32 (0)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Table Entry Index

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimTableEntry 1 }

    cfgCellSimSlot1 OBJECT-TYPE
        SYNTAX Integer32 (-1)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Slot 1

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimTableEntry 2 }

    cfgCellSimSlot2 OBJECT-TYPE
        SYNTAX Integer32 (-1)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Slot 2

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimTableEntry 3 }

    cfgCellSimPrimarySlot OBJECT-TYPE
        SYNTAX INTEGER { obsolete(-1) }
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Primary SIM Slot

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimTableEntry 4 }

    cfgCellSimUnlockTimeout OBJECT-TYPE
        SYNTAX Integer32 (-1)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Unlock Timeout

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimTableEntry 5 }

    cfgCellSimProfileTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellSimProfileTableSeq
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Profiles

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellular 2 }

    cfgCellSimProfileTableEntry OBJECT-TYPE
        SYNTAX  CfgCellSimProfileTableSeq
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** SIM Profile

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        INDEX {cfgCellSimProfileIndex}
        ::= { cfgCellSimProfileTable 1 }

    CfgCellSimProfileTableSeq ::=
        SEQUENCE {  cfgCellSimProfileIndex Integer32,
                    cfgCellSimProfileApn DisplayString,
                    cfgCellSimProfileUsername DisplayString,
                    cfgCellSimProfilePassword DisplayString,
                    cfgCellSimProfilePinEnabled INTEGER,
                    cfgCellSimProfilePin DisplayString,
                    cfgCellSimProfileAuthType INTEGER,
                    cfgCellSimProfileRoaming INTEGER
                 }

    cfgCellSimProfileIndex OBJECT-TYPE
        SYNTAX Integer32 (0..9)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Table Entry Index

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 1 }

    cfgCellSimProfileApn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Access Point Name

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 2 }

    cfgCellSimProfileUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Username

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 3 }

    cfgCellSimProfilePassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Password

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 4 }

    cfgCellSimProfilePinEnabled OBJECT-TYPE
        SYNTAX INTEGER { obsolete(-1) }
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** PIN Authentication Disabled or Enabled

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 5 }

    cfgCellSimProfilePin OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** PIN of the SIM Card

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 6 }

    cfgCellSimProfileAuthType OBJECT-TYPE
        SYNTAX INTEGER { obsolete(-1) }
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Authentication Type

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 7 }

    cfgCellSimProfileRoaming OBJECT-TYPE
        SYNTAX INTEGER { obsolete(-1) }
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Roaming Disabled or Enabled

             This parameter is obsolete and has been replaced with
             `cfgCellSimSlotTable` and `cfgCellDefaultBearerTable`."
        ::= { cfgCellSimProfileTableEntry 8 }

-- -----------------------------------------------------------------------------

    cfgCellConnectionManagement     OBJECT IDENTIFIER ::= { cfgCellular 3 }

    cfgCellConnMgmtSimRotationEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SIM Rotation Disabled or Enabled

             Set to **enabled(1)** to switch between primary and secondary
             SIM slot when a loss of connection is detected in use of
             the monitoring functionality `cfgCellConnMgmtMonMode`.

             Only enabled SIM slots `cfgCellSimSlotEnabled`
             are taken into account.

             Applies to cellular products only."
        ::= { cfgCellConnectionManagement 1 }

    cfgCellConnMgmtMonMode OBJECT-TYPE
        SYNTAX INTEGER { signal(0), remoteHosts(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitor Mode

             The monitor mode defines which algorithm the connection management
             is using to evaluate whether a cellular connection is up. The
             following monitor modes are supported:

             * **signal(0):** Monitor the cellular signal (e.g. RSSI level)
             * **remoteHosts(1):** Monitor the cellular network (e.g. the
               availability of remote network hosts).

             Adjusting the monitor algorithm can be achieved by setting the
             `cfgCellConnMgmtMonPeriod` and `cfgCellConnMgmtMonPeriod`.

             Using the **remoteHosts(1)** mode requires at least one active remote
             host in the `cfgCellConnMgmtMonRemoteTable`.

             **Note:** If `cfgCellConnMgmtSimRotationEnabled` and two SIM slots
             are enabled, the monitor event will trigger a SIM rotation between the
             two slots.
             If only one SIM slot is enabled or `cfgCellConnMgmtSimRotationEnabled`
             is disabled, the monitor event will trigger a re-connection with
             the same SIM slot.

             Applies to cellular products only."
        ::= { cfgCellConnectionManagement 2 }

    cfgCellConnMgmtMonPeriod OBJECT-TYPE
        SYNTAX Integer32 (1..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitor Period

             The monitor period defines the time in seconds between two
             consecutive evaluations of the cellular connection with regard
             to the `cfgCellConnMgmtMonMode`.

             Applies to cellular products only."
        ::= { cfgCellConnectionManagement 3 }

    cfgCellConnMgmtMonCount OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitor Count

             The monitor count defines the needed amount of consecutive failed
             connection tests, with regard to the `cfgCellConnMgmtMonMode`,
             before a connection is considered down.

             Applies to cellular products only."
        ::= { cfgCellConnectionManagement 4 }

    cfgCellConnMgmtMonRemoteTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellConnMgmtMonRemoteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Monitored Remotes

             All hosts listed in this table are used by the **network(1)** mode,
             defined in `cfgCellConnMgmtMonMode`. If the connection managmement
             uses this algorithm to evaluate the status of the connection, it
             tests all hosts one after the other. As soon as one host is
             available the cellular connection is considered up.

             Applies to cellular products only."
        ::= { cfgCellConnectionManagement 5 }

    cfgCellConnMgmtMonRemoteTableEntry OBJECT-TYPE
        SYNTAX  CfgCellConnMgmtMonRemoteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Monitored Remote

             Applies to cellular products only."
        INDEX { cfgCellConnMgmtMonRemoteIndex }
        ::= { cfgCellConnMgmtMonRemoteTable 1 }

    CfgCellConnMgmtMonRemoteTableSeq ::=
        SEQUENCE {  cfgCellConnMgmtMonRemoteIndex Integer32,
                    cfgCellConnMgmtMonRemoteType INTEGER,
                    cfgCellConnMgmtMonRemoteAddress DisplayString
                 }

    cfgCellConnMgmtMonRemoteIndex OBJECT-TYPE
        SYNTAX Integer32 (0..3)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index

             Applies to cellular products only."
        ::= { cfgCellConnMgmtMonRemoteTableEntry 1 }

    cfgCellConnMgmtMonRemoteType OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), icmp(1), tcp(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitoring Type

             The following methods are provided to check the availability of a
             remote host via the cellular network:

             * **disabled(0)**: Ignore this host.
             * **icmp(1)**: Use ICMP to ping the host.
             * **tcp(2)**: Probe a TCP/IP port of the host.

             Applies to cellular products only."
        ::= { cfgCellConnMgmtMonRemoteTableEntry 2 }

    cfgCellConnMgmtMonRemoteAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote Address

             The address of a remote host can either be defined by an IP address
             or a host name. If `cfgCellConnMgmtMonRemoteType` is set to
             **tcp(2)**, an additional port number must be specifed. The format
             of a valid remote address is:

             `<IP address|host name>[:port]`

             **Examples:**

             * **icmp(1)**: 8.8.8.8
             * **tcp(2)**: www.example.com:80

             Applies to cellular products only."
        ::= { cfgCellConnMgmtMonRemoteTableEntry 3 }

-- -----------------------------------------------------------------------------

    cfgCellDbgTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Debug Parameters"
        ::= { cfgCellular 4 }

    cfgCellDbgTableEntry OBJECT-TYPE
        SYNTAX  CfgCellDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Debug Parameters Entry"
        INDEX {cfgCellDbgIndex}
        ::= { cfgCellDbgTable 1 }

    CfgCellDbgTableSeq ::=
        SEQUENCE {  cfgCellDbgIndex Integer32,
                    cfgCellDbgSignal INTEGER,
                    cfgCellDbgConnection INTEGER
                 }

    cfgCellDbgIndex OBJECT-TYPE
        SYNTAX Integer32 (0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellDbgTableEntry 1 }

    cfgCellDbgSignal OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Signal Level Trap

            Persistent default value to disable or enable the signal level trap
            820.

            Applies to cellular products only."
        ::= { cfgCellDbgTableEntry 2 }

    cfgCellDbgConnection OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Connection State Trap

            Persistent default value to disable or enable the connection state
            trap 821.

            Applies to cellular products only."
        ::= { cfgCellDbgTableEntry 3 }

-- -----------------------------------------------------------------------------

    cfgCellSimSlotTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellSimSlotTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Slot Table

             Applies to cellular products only."
        ::= { cfgCellular 5 }

    cfgCellSimSlotTableEntry OBJECT-TYPE
        SYNTAX  CfgCellSimSlotTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Slot Entry

             Applies to cellular products only."
        INDEX {cfgCellSimSlotIndex}
        ::= { cfgCellSimSlotTable 1 }

    CfgCellSimSlotTableSeq ::=
        SEQUENCE {  cfgCellSimSlotIndex Integer32,
                    cfgCellSimSlotName DisplayString,
                    cfgCellSimSlotEnabled INTEGER,
                    cfgCellSimSlotPinEnabled INTEGER,
                    cfgCellSimSlotPin DisplayString,
                    cfgCellSimSlotPriority Integer32,
                    cfgCellSimSlotUnlockTimeout Integer32
                 }

    cfgCellSimSlotIndex OBJECT-TYPE
        SYNTAX Integer32 (0..1)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellSimSlotTableEntry 1 }


    cfgCellSimSlotName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the SIM Slot

             The name of the pysical SIM slot. At least one SIM slot
             must be assigned to the default bearer configuration
             `cfgCellDefaultBearerSimSlots`.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 2 }

    cfgCellSimSlotEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable SIM Slot

             Enable the physical SIM slot if a SIM card is inserted.
             SIM slots without SIM card should be disabled when
             SIM rotation `cfgCellConnMgmtSimRotationEnabled` is enabled.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 3 }

    cfgCellSimSlotPinEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "PIN Authentication Disabled or Enabled

             Set to **enabled(1)** if PIN authentication is required
             for the SIM card in the corresponding slot.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 4 }

    cfgCellSimSlotPin OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "PIN of the SIM Card

             The PIN is ignored, when PIN authentication is disabled, see
             `cfgCellSimSlotPinEnabled`.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 5 }

    cfgCellSimSlotPriority OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SIM Slot Priority

             A lower value means a higher priority.

             If two SIM slots have the same priority,
             the SIM slot with the lower index is preferred.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 6 }

    cfgCellSimSlotUnlockTimeout OBJECT-TYPE
        SYNTAX Integer32 (300..30000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SIM Unlock Timeout

             The time in milliseconds how long the unlocking process
             waits until the SIM card is ready to be unlocked.
             Increase the timeout if older SIM cards cannot be unlocked.
             A high timeout affects the performance of SIM rotation.

             **Note:** Changes become effective after restarting the device.

             Applies to cellular products only."
        ::= { cfgCellSimSlotTableEntry 7 }

-- -----------------------------------------------------------------------------

    cfgCellDefaultBearerTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellDefaultBearerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Default Bearer Table

             Each cellular interface defined in `cfgNetWwanTable` enables
             a default bearer configuration.

             Applies to cellular products only."
        ::= { cfgCellular 6 }

    cfgCellDefaultBearerTableEntry OBJECT-TYPE
        SYNTAX  CfgCellDefaultBearerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Default Bearer Entry

             Applies to cellular products only."
        INDEX {cfgCellDefaultBearerIndex}
        ::= { cfgCellDefaultBearerTable 1 }

    CfgCellDefaultBearerTableSeq ::=
        SEQUENCE {  cfgCellDefaultBearerIndex Integer32,
                    cfgCellDefaultBearerSimSlots DisplayString,
                    cfgCellDefaultBearerApn DisplayString,
                    cfgCellDefaultBearerUsername DisplayString,
                    cfgCellDefaultBearerPassword DisplayString,
                    cfgCellDefaultBearerAuthType INTEGER,
                    cfgCellDefaultBearerRoaming INTEGER
                 }

    cfgCellDefaultBearerIndex OBJECT-TYPE
        SYNTAX Integer32 (0..7)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellDefaultBearerTableEntry 1 }

    cfgCellDefaultBearerSimSlots OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer SIM Slot Selection

             A default bearer must refer to at least one physical SIM slot.
             The name of the SIM slot `cfgCellSimSlotName` is entered as a
             comma and/or space separated list.

             **Examples:**

             * slot1
             * slot2
             * slot1, slot2

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 2 }

    cfgCellDefaultBearerApn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer Access Point Name

             **auto** No dedicated APN defined

             If the APN is unknown, `auto` will establish a connection with
             the preferred default bearer of the cellular provider.
             This functionality must be supported by the cellular provider,
             who can also enforce a dedicated APN.
             Only one default bearer can be set to `auto` per SIM slot.
             If more than one WWAN interfaces are enabled,
             explicit APN's must be defined.
             FOTA selects the cellular provider default APN to
             access the update server.

             **<APN Name>** Dedicated APN defined

             If the APN name is known or if more than one default bearer
             shall be defined per SIM slot, a dedicated APN must be entered.
             Multi default bearer functionality must be supported
             by the cellular provider.
             FOTA selects the APN of the first WWAN interface `wwan0` to
             access the update server.

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 3 }

    cfgCellDefaultBearerUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer Username

             If the service provider requries authentication for the selected
             default bearer, the username shall be specified by this entry. If no
             authentication type is selected, see `cfgCellDefaultBearerAuthType`,
             this entry is ignored.

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 4 }

    cfgCellDefaultBearerPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer Password

             Set the password for the user defined in
             `cfgCellDefaultBearerUsername`.

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 5 }

    cfgCellDefaultBearerAuthType OBJECT-TYPE
        SYNTAX INTEGER { none(0), pap(1), chap(2), both(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer Authentication Type

             Select the authentication type for the selected default bearer. If
             no authentication is required, set this entry to its
             default value **none(0)**, otherwise choose one of the supported
             authentication types:

             * **pap(1)**,
             * **chap(2)**, or
             * **both(3)**.

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 6 }

    cfgCellDefaultBearerRoaming OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Default Bearer Roaming Disabled or Enabled

             Set to **enabled(1)** to roam to other available
             cellular networks outside the range of the home network.
             The SIM card and network provider must support roaming.

             **Note:** Activated roaming may incur additional costs!

             Applies to cellular products only."
        ::= { cfgCellDefaultBearerTableEntry 7 }

-- -----------------------------------------------------------------------------

    cfgCellDeviceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Device Table

             Applies to cellular products only."
        ::= { cfgCellular 7 }

    cfgCellDeviceTableEntry OBJECT-TYPE
        SYNTAX  CfgCellDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Device Table Entry

             Applies to cellular products only."
        INDEX {cfgCellDeviceIndex}
        ::= { cfgCellDeviceTable 1 }

    CfgCellDeviceTableSeq ::=
        SEQUENCE {  cfgCellDeviceIndex Integer32,
                    cfgCellDeviceName DisplayString,
                    cfgCellDeviceSearchMode Integer32,
                    cfgCellDeviceOperatorMode INTEGER,
                    cfgCellDeviceOperatorSpn DisplayString,
                    cfgCellDeviceBandsWcdma DisplayString,
                    cfgCellDeviceBandsLte DisplayString,
                    cfgCellDeviceBands5gnsa DisplayString,
                    cfgCellDeviceBands5gsa DisplayString,
                    cfgCellDevice5gMode INTEGER
                 }

    cfgCellDeviceIndex OBJECT-TYPE
        SYNTAX Integer32 (0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellDeviceTableEntry 1 }

    cfgCellDeviceName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Device

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 2 }

    cfgCellDeviceSearchMode OBJECT-TYPE
        SYNTAX Integer32(0..7)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Network Search Mode

             Bitmask of enabled scan modes. The search order is prioritised according
             to the latest technology, 5G (if available), LTE and then WCDMA.

             * 0x00 (0) = AUTO (all enabled)
             * 0x01 (1) = WCDMA
             * 0x02 (2) = LTE
             * 0x04 (4) = 5G

             **Example:**

             * Limit to LTE and 5G: 2 + 4 = 6

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 3 }

    cfgCellDeviceOperatorMode OBJECT-TYPE
        SYNTAX INTEGER { auto(0), fix(1), fixWithFallbackAuto(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Operator Selection Mode

             Configuration of operator selection with reference to the
             Service Provider Name (SPN) `cfgCellDeviceOperatorSpn`.

             * **auto(0)**: Automatic mode, `cfgCellDeviceOperatorSpn`
                            is ignored.
             * **fix(1)**: Manual operator selection according to
                           `cfgCellDeviceOperatorSpn`.
             * **fixWithFallbackAuto(2)**: Manual operator selection according to
                           `cfgCellDeviceOperatorSpn` with fallback to **auto**
                           if operator is not found.

             **Note:** In **fix(1)** mode, only one service provider
             is supported. If multiple SIM cards are used, the same
             service provider must be available for all active SIM cards.
             If the service provider name is not defined or is incorrect,
             the modem cannot connect to the mobile network and
             remote access is lost.

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 4 }

    cfgCellDeviceOperatorSpn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..16))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Operator Selection Service Provider Name (SPN)

             Name of the operator if the selection mode
             `cfgCellDeviceOperatorMode` is set to **fix(1)**
             or **fixWithFallbackAuto(2)**.

             Long format alphanumeric up to 16 characters.
             The string of the currently connected provider can be read from
             `swCellServiceName`.

             **Note:** If the service provider name is not defined
             or is incorrect, the modem cannot connect to the
             mobile network and remote access is lost.

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 5 }

    cfgCellDeviceBandsWcdma OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "WCDMA Band Configuration

             A conclusive space and/or comma separated list of all
             WCDMA bands to be used.
             The value `-1` disables the band restriction,
             all available bands are enabled.

             The available bands depend on the cellular module,
             please ask support for more information.

             * **B1 WCDMA 2100**: 1
             * **B2 WCDMA 1900**: 2
             * **B3 WCDMA 1800**: 3
             * **B4 WCDMA 1700**: 4
             * **...**
             * **B9 WCDMA Japan 1700**: 9
             * **B19 WCDMA Japan 850**: 19

             **Example**:

             * 1,2,5,6

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 6 }

    cfgCellDeviceBandsLte OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LTE Band Configuration

             A conclusive space and/or comma separated list of all
             LTE bands to be used.
             The value `-1` disables the band restriction,
             all available bands are enabled.

             The available bands depend on the cellular module,
             please ask support for more information.

             * **B1 LTE**: 1
             * **B2 LTE**: 2
             * **B3 LTE**: 3
             * **B4 LTE**: 4
             * **B5 LTE**: 5
             * **...**
             * **B71 LTE**: 71

             **Example**:

             * 3,7,20,26

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 7 }

    cfgCellDeviceBands5gnsa OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "5G-NSA Band Configuration

             A conclusive space and/or comma separated list of all
             5G-NSA bands to be used.
             The value `-1` disables the band restriction,
             all available bands are enabled.

             The available bands depend on the cellular module,
             please ask support for more information.

             * **n1 5G-NSA**: 1
             * **n2 5G-NSA**: 2
             * **n3 5G-NSA**: 3
             * **n5 5G-NSA**: 5
             * **n8 5G-NSA**: 8
             * **...**
             * **n261 5G-NSA**: 261

             **Example**:

             * 1,12,48,66

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 8 }

    cfgCellDeviceBands5gsa OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "5G-SA Band Configuration

             A conclusive space and/or comma separated list of all
             5G-SA bands to be used.
             The value `-1` disables the band restriction,
             all available bands are enabled.

             The available bands depend on the cellular module,
             please ask support for more information.

             * **n1 5G-SA**: 1
             * **n2 5G-SA**: 2
             * **n3 5G-SA**: 3
             * **...**
             * **n77 5G-SA**: 77
             * **n78 5G-SA**: 78
             * **n79 5G-SA**: 79

             **Example**:

             * 78

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 9 }

    cfgCellDevice5gMode OBJECT-TYPE
        SYNTAX INTEGER { auto(0), nsa5g(1), sa5g(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "5G Mode Selection

             Limitation to one of the supported
             5G modes.

             * **auto(0)**: 5G-SA and 5G-NSA
             * **nsa5g(1)**: 5G-NSA only
             * **sa5g(2)**: 5G-SA only

             Applies to cellular products only."
        ::= { cfgCellDeviceTableEntry 10 }

-- =============================================================================

-- Certificate

    cfgCrtCrlTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Revocation List configuration table."
        ::= { cfgCertificate 1 }

    cfgCrtCrlTableEntry OBJECT-TYPE
        SYNTAX  CfgCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Revocation List configuration table entry."
        INDEX {cfgCrtCrlIndex}
        ::= { cfgCrtCrlTable 1 }

    CfgCrtCrlTableSeq ::=
        SEQUENCE {  cfgCrtCrlIndex Integer32,
                    cfgCrtCrlCaId Integer32,
                    cfgCrtCrlEnabled INTEGER,
                    cfgCrtCrlUrl DisplayString,
                    cfgCrtCrlTimeBeforeExpire Integer32,
                    cfgCrtCrlRetryPeriod Integer32
                  }

    cfgCrtCrlIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCrtCrlTableEntry 1 }

    cfgCrtCrlCaId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference to the CA ID in the certificate store.

            The received CRL will be stored to the CRL ID of the CRL associated
            to the configured CA ID.

            Applies to AP and STA."
        ::= { cfgCrtCrlTableEntry 2 }

    cfgCrtCrlEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable automatic download of the CRL

            The CRL must be in the DER format.

            Applies to AP and STA."
        ::= { cfgCrtCrlTableEntry 3 }

    cfgCrtCrlUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CRL URL

            This URL is used to download the new CRL. The CRL must be in
            the DER format.

            **Example:**

            * http://192.168.1.2/certs/example.crl

            Applies to AP and STA."
        ::= { cfgCrtCrlTableEntry 4 }

    cfgCrtCrlTimeBeforeExpire OBJECT-TYPE
        SYNTAX Integer32 (0..365)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Time before the current CRL expire

            The new CRL will be downloaded this number of days before
            the CRL expire.

            Applies to AP and STA."
        ::= { cfgCrtCrlTableEntry 5 }

    cfgCrtCrlRetryPeriod OBJECT-TYPE
        SYNTAX Integer32 (1..1440)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Retry period in minutes

            If the download of a CRL failed the device will retry to download
            after this period.

            Applies to AP and STA."
        ::= { cfgCrtCrlTableEntry 6 }


    cfgCrtMonitoringTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgCrtMonitoringTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Monitoring configuration table."
        ::= { cfgCertificate 2 }

    cfgCrtMonitoringTableEntry OBJECT-TYPE
        SYNTAX  CfgCrtMonitoringTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Monitoring configuration table entry."
        INDEX {cfgCrtMonIndex}
        ::= { cfgCrtMonitoringTable 1 }

    CfgCrtMonitoringTableSeq ::=
        SEQUENCE {  cfgCrtMonIndex Integer32,
                    cfgCrtMonEnabled INTEGER,
                    cfgCrtMonType INTEGER,
                    cfgCrtMonId Integer32,
                    cfgCrtMonTimeBeforeExpire Integer32,
                    cfgCrtMonRepeatPeriod Integer32
                 }

    cfgCrtMonIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCrtMonitoringTableEntry 1 }

    cfgCrtMonEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable certificate/CRL expiry monitor

            The monitor observes if a certificate/CRL is about to expire and
            informs via Trap/Syslog if this is the case.

            Applies to AP and STA."
        ::= { cfgCrtMonitoringTableEntry 2 }

    cfgCrtMonType OBJECT-TYPE
        SYNTAX INTEGER { crl(1), cert(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Monitor type

            Define the type to be monitored.

            * **1**: CRL
            * **2**: Certificate

            Applies to AP and STA."
        ::= { cfgCrtMonitoringTableEntry 3 }

    cfgCrtMonId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the certificate to be monitored

            Reference to the certificate ID in the certificate store.

            In order to monitor CA and Client/Server certificates the
            corresponding ID needs to be specified and the `cfgCrtMonType` needs
            to set to **cert(2)**.

            In order to monitor CRL the ID of the associated CA ID needs to be
            specified and the `cfgCrtMonType` needs to set to **crl(1)**.

            Applies to AP and STA."
        ::= { cfgCrtMonitoringTableEntry 4 }

    cfgCrtMonTimeBeforeExpire OBJECT-TYPE
        SYNTAX Integer32 (0..365)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Start alert this time before the current CA certificate expire

            This value is in days before the CA certificate expire.

            Applies to STA."
        ::= { cfgCrtMonitoringTableEntry 5 }

    cfgCrtMonRepeatPeriod OBJECT-TYPE
        SYNTAX Integer32 (1..24)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Repeat period for CA certificate expiration alert

            Repeat the alert every X hours.

            Applies to STA."
        ::= { cfgCrtMonitoringTableEntry 6 }


    cfgCrtGlobal      OBJECT IDENTIFIER ::= { cfgCertificate 3 }

    cfgCrtGlblDailyRefreshEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable Daily Certificate Refresh

            Applies to AP and STA."
        ::= { cfgCrtGlobal 1 }

    cfgCrtGlblDailyRefreshTime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..5))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Daily Automatic Refresh time.

             Define time (hour:minute) at which a certificate refresh
             is called (if `cfgCrtGlblDailyRefreshEnabled`
             is **enabled(1)**).

             The time is referenced to the local time as define in
             `cfgSysTimezone`

             **Examples:**

             * 00:00 - force refresh each day at midnight
             * 01:00 - force refresh each day at 01:00
             * 23:05 - force refresh each day at 23:05

             Applies to AP and STA."
        ::= { cfgCrtGlobal 2 }


-- =============================================================================

-- SCEP

    cfgScepTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgScepTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SCEP Table

             Applies to STA."
        ::= { cfgScep 2 }

    cfgScepTableEntry OBJECT-TYPE
        SYNTAX  CfgScepTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SCEP Table Entry

             Applies to STA."
        INDEX {cfgScepIndex}
        ::= { cfgScepTable 1 }

    CfgScepTableSeq ::=
        SEQUENCE {  cfgScepIndex Integer32,
                    cfgScepCaIdentifier DisplayString,
                    cfgScepChallengePassword DisplayString,
                    cfgScepPollingInterval Integer32,
                    cfgScepPollingMaxTries Integer32,
                    cfgScepAutoRenewEnabled INTEGER,
                    cfgScepAutoRenewTimeBeforeExpire Integer32,
                    cfgScepAutoRenewRetryPeriod Integer32,
                    cfgScepCsrCN DisplayString,
                    cfgScepServerUrl DisplayString,
                    cfgScepCsrC DisplayString,
                    cfgScepCsrST DisplayString,
                    cfgScepCsrL DisplayString,
                    cfgScepCsrO DisplayString,
                    cfgScepCsrOU DisplayString,
                    cfgScepCaId Integer32,
                    cfgScepCertId Integer32,
                    cfgScepRaId Integer32
                 }

    cfgScepIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Index of the Table Entry

             Applies to STA."
        ::= { cfgScepTableEntry 1 }

    cfgScepCaIdentifier OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CA Identifier

             Certification authority (CA) issuer identifier (if your SCEP server
             requires it). A CA Identifier is any string that is understood by
             the SCEP server (e.g. a domain name).

             If set to 'none', CA Identifier is not used.

             Applies to STA."
        ::= { cfgScepTableEntry 3 }

    cfgScepChallengePassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SCEP Challenge Password

             If set to 'none', Challenge Password is not used.

             Applies to STA."
        ::= { cfgScepTableEntry 5 }

    cfgScepPollingInterval OBJECT-TYPE
        SYNTAX Integer32 (1..86400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SCEP Polling Interval in seconds

             Applies to STA."
        ::= { cfgScepTableEntry 6 }

    cfgScepPollingMaxTries OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Max number of SCEP GetCertInitial requests

             Applies to STA."
        ::= { cfgScepTableEntry 7 }

    cfgScepAutoRenewEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable/disable SCEP automatic re-enrollment

             Applies to STA."
        ::= { cfgScepTableEntry 8 }

    cfgScepAutoRenewTimeBeforeExpire OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SCEP Certificate Renew Days

             Number of days before certificate expiration (i.e. automatic
             re-enrollment shall start these number of days before certificate
             expiration)

             Applies to STA."
        ::= { cfgScepTableEntry 9 }

    cfgScepAutoRenewRetryPeriod OBJECT-TYPE
        SYNTAX Integer32 (5..1440)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SCEP Certificate Renew Period

             SCEP re-enrollment retry interval in minutes.

             Applies to STA."
        ::= { cfgScepTableEntry 10 }

    cfgScepCsrCN OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CN (Common Name) field for CSR

             **Example:**

             * example.com

             Applies to STA."
        ::= { cfgScepTableEntry 11 }

    cfgScepServerUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "URL of SCEP server

             **Example:**

             * http://192.168.1.2:8080/scep


             Applies to STA."
        ::= { cfgScepTableEntry 12 }

    cfgScepCsrC OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..4))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "C (Country) field for CSR

             If set to 'none', C is not used for CSR.

             **Example:**

             * CH

             Applies to STA."
        ::= { cfgScepTableEntry 13 }

    cfgScepCsrST OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..63))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ST (State) field for CSR

             If set to 'none', ST is not used for CSR.

             **Example:**

             * Zurich

             Applies to STA."
        ::= { cfgScepTableEntry 14 }

    cfgScepCsrL OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..63))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "L (Locality) field for CSR

             If set to 'none', L is not used for CSR.

             **Example:**

             * Bubikon

             Applies to STA."
        ::= { cfgScepTableEntry 15 }

    cfgScepCsrO OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "O (Organization) field for CSR

             If set to 'none', O is not used for CSR.

             Applies to STA."
        ::= { cfgScepTableEntry 16 }

    cfgScepCsrOU OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OU (Organizational Unit) field for CSR

             If set to 'none', OU is not used for CSR.

             Applies to STA."
        ::= { cfgScepTableEntry 17 }

    cfgScepCaId OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID for CA Certificate

             This certificate is used for the signing and optionally
             also for the encryption. If the SCEP server requires
             two separate certificates, the RA encryption certificate
             must be selected with the `cfgScepRaId` parameter.

             Set to -1 if not using a CA certificate.

             Applies to STA."
        ::= { cfgScepTableEntry 18 }

    cfgScepCertId OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID for Client Certificate

             Set to -1 if not using a client certificate.

             Applies to STA."
        ::= { cfgScepTableEntry 19 }

    cfgScepRaId OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reference ID for the RA Certificate

             This is an optional RA encryption certificate.
             It is needed when the encryption is done
             with a separate certificate.

             Set to -1 if not using a RA certificate.

             Applies to STA."
        ::= { cfgScepTableEntry 20 }

-- =============================================================================

-- OpenVPN

    cfgVpnOpenvpn OBJECT IDENTIFIER ::= { cfgVpn 1 }

    cfgVpnOpenvpnTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgVpnOpenvpnTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "OpenVPN Instance Table

             Each entry in this table represents one instance of the OpenVPN
             service and is in a one-to-one relation with the OpenVPN Interface
             whose index is identical. Also see `cfgNetOpenvpnTable`."
        ::= { cfgVpnOpenvpn 1 }

    cfgVpnOpenvpnTableEntry OBJECT-TYPE
        SYNTAX  CfgVpnOpenvpnTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "OpenVPN Instance Table Entry"
        INDEX {cfgVpnOpenvpnIndex}
        ::= { cfgVpnOpenvpnTable 1 }

    CfgVpnOpenvpnTableSeq ::=
        SEQUENCE {  cfgVpnOpenvpnIndex Integer32,
                    cfgVpnOpenvpnMode INTEGER,
                    cfgVpnOpenvpnLocal IpAddress,
                    cfgVpnOpenvpnLPort Integer32,
                    cfgVpnOpenvpnRemote DisplayString,
                    cfgVpnOpenvpnRPort Integer32,
                    cfgVpnOpenvpnProto INTEGER,
                    cfgVpnOpenvpnAuth DisplayString,
                    cfgVpnOpenvpnCipher DisplayString,
                    cfgVpnOpenvpnDevType INTEGER,
                    cfgVpnOpenvpnKeepaliveInterval Integer32,
                    cfgVpnOpenvpnKeepaliveTimeout Integer32,
                    cfgVpnOpenvpnConnectRetry Integer32,
                    cfgVpnOpenvpnConnectRetryLimit Integer32,
                    cfgVpnOpenvpnCompress INTEGER,
                    cfgVpnOpenvpnVerb Integer32,
                    cfgVpnOpenvpnKeyPassword DisplayString,
                    cfgVpnOpenvpnKeyType INTEGER,
                    cfgVpnOpenvpnKeyDirection INTEGER,
                    cfgVpnOpenvpnRemoteCertTls INTEGER,
                    cfgVpnOpenvpnVerifyX509Name INTEGER,
                    cfgVpnOpenvpnVerifyX509String DisplayString,
                    cfgVpnOpenvpnUsername DisplayString,
                    cfgVpnOpenvpnPassword DisplayString,
                    cfgVpnOpenvpnCaIds DisplayString,
                    cfgVpnOpenvpnCertId Integer32,
                    cfgVpnOpenvpnStaticKeyId Integer32,
                    cfgVpnOpenvpnCustomOptions DisplayString
                 }

    cfgVpnOpenvpnIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgVpnOpenvpnTableEntry 1 }

    cfgVpnOpenvpnMode OBJECT-TYPE
        SYNTAX INTEGER { client(0), server(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mode

             * **client(0):** OpenVPN instance is a client and connects to a
                              server
             * **server(1):** **NOT IMPLEMENTED YET**"
        ::= { cfgVpnOpenvpnTableEntry 2 }

    cfgVpnOpenvpnLocal OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Local IP Address

             The OpenVPN instance binds to the given IP address only. Address
             0.0.0.0 binds the OpenVPN instance to all interfaces."
        ::= { cfgVpnOpenvpnTableEntry 3 }

    cfgVpnOpenvpnLPort OBJECT-TYPE
        SYNTAX Integer32 (0..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Local TCP/UDP Port

             Specifies the TCP/UDP port number for bind. If the local port
             number is set to 0, OpenVPN uses a random port number."
        ::= { cfgVpnOpenvpnTableEntry 4 }

    cfgVpnOpenvpnRemote OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote Host Name or IP Address

             The OpenVPN client tries to connect to a server at the given remote
             host name or IP address.

             The remote option will be omitted from the OpenVPN config file when
             set to 'none'. This allows to specify your own remote entries via
             the custom options (see `cfgVpnOpenvpnCustomOptions`)."
        ::= { cfgVpnOpenvpnTableEntry 5 }

    cfgVpnOpenvpnRPort OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote TCP/UDP Port

             Specifies the TCP/UDP port to which the connection is created.
             This is the port on which the OpenVPN server is listening."
        ::= { cfgVpnOpenvpnTableEntry 6 }

    cfgVpnOpenvpnProto OBJECT-TYPE
        SYNTAX INTEGER { udp(0), tcp(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Transport Protocol

             The following transport protocols are available:

             * **UDP(0)**: User Datagram Protocol
             * **TCP(1)**: Transmission Control Protocol"
        ::= { cfgVpnOpenvpnTableEntry 7 }

    cfgVpnOpenvpnAuth OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Packet Authentication

             Authenticate packets with a Hash-based Message Authentication Code
             HMAC using the given message digest algorithm.

             In static-key encryption mode, the HMAC key is included in the key
             file. In TLS mode, the HMAC key is dynamically generated and shared
             between peers via the TLS control channel.

             **Examples:**

             * **SHA256**
             * **SHA3-512**
             * **SHA1**: according to blank `auth` entry in ovpn config file
             * **none**: to disable HMAC packet authentication

             For a full list of supported algorithms please consult the user
             manual or execute **openvpn --show-digests** on a device."
        ::= { cfgVpnOpenvpnTableEntry 8 }

    cfgVpnOpenvpnCipher OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Data-Channel Encryption Cipher List

             Colon separated list of ciphers to allow for the OpenVPN
             data-channel encryption.

             Set to 'none' to disable packet encryption.

             **Examples:**

             * **AES-256-GCM:AES-128-GCM**
             * **AES-256-CBC**
             * **AES-256-GCM**
             * **none**: to disable packet encryption

             For a full list of supported algorithms please consult the user
             manual."
        ::= { cfgVpnOpenvpnTableEntry 9 }

    cfgVpnOpenvpnDevType OBJECT-TYPE
        SYNTAX INTEGER { tun(0), tap(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Interface Type

             OpenVPN is designed to work with virtual network interface either
             of type tunnel or tap. The interface types on both sides of an
             OpenVPN connection must match.

             Interface types are:

             * **tun(0)**: to encapsulate IPv4 or IPv6 (OSI Layer 3), or
             * **tap(1)**: to encapsulate Ethernet 802.3 (OSI Layer 2).

             To be able to bridge an OpenVPN interface with
             `cfgNetOpenvpnBridge` its type must be **tap(1)**."
        ::= { cfgVpnOpenvpnTableEntry 10 }

    cfgVpnOpenvpnKeepaliveInterval OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Keep-Alive Interval

             Send keep-alive packets to the remote OpenVPN instance if no
             packets have been sent for at least the given number of seconds.

             This parameter has two intended uses:

             * Compatibility with stateful firewalls
             * To provide a basis for the remote OpenVPN instance to detect the
               existance of its peer

             **Note:** If OpenVPN is in client mode, this parameter may be
             overridden by the server."
        ::= { cfgVpnOpenvpnTableEntry 11 }

    cfgVpnOpenvpnKeepaliveTimeout OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Keep-Alive Timeout

             This parameter specifies the number of seconds that trigger a
             restart of the OpenVPN instance if no keep-alive or other packet
             has been received from the remote side, see
             `cfgVpnOpenvpnKeepaliveInterval`.

             **Note:** If OpenVPN is in client mode, this parameter may be
             overridden by the server."
        ::= { cfgVpnOpenvpnTableEntry 12 }

    cfgVpnOpenvpnConnectRetry OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Connect Retry Interval

             Number of seconds to wait between connection attempts. Repeated
             reconnection attempts are slowed down after 5 retries per remote by
             doubling the wait time after each unsuccessful attempt.

             The parameter `cfgVpnOpenvpnConnectRetryLimit` specifies the
             maximum value of wait time in seconds at which it gets capped."
        ::= { cfgVpnOpenvpnTableEntry 13 }

    cfgVpnOpenvpnConnectRetryLimit OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Connect Retry Interval Limit

             The maximum value of wait time in seconds
             (see `cfgVpnOpenvpnConnectRetry`) at which it gets capped."
        ::= { cfgVpnOpenvpnTableEntry 14 }


    cfgVpnOpenvpnCompress OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), allowPush(1), lzo(2), lz4(3), lz4v2(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Compression Algorithm

             Specify a compression algorithm:

             * **disabled(0)**: Data compression is turned off.
             * **allowPush(1)**: Data compression is turned off, but may be
                                 enabled by the server later.
             * **lzo(2)**: Lempel-Ziv-Oberhumer (LZO) algorithm
             * **lz4(3)**: LZ4 algorithm (faster than LZO)
             * **lz4v2(4)** OpenVPN optimised version of the LZ4 algorithm

             The LZO algorithm provides a slightly better compression ratio than
             the LZ4 compression. However, it is considerably slower and should
             not be used unless for backward compatibility."
        ::= { cfgVpnOpenvpnTableEntry 15 }

    cfgVpnOpenvpnVerb OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Log Verbosity

             Each log verbosity level shows all messages from the previous
             levels. Level 3 is recommended for a good summary of what is
             happening.

             * **0**: No output except fatal errors
             * **1** - **4**: Normal usage range
             * **5**: Output R and W characters to the console for each packet
                      read and write operation, uppercase is used for TCP/UDP
                      packets and lowercase is used for TUN/TAP packets.
             * **6** - **11**: Levels for debugging purposes"
        ::= { cfgVpnOpenvpnTableEntry 16 }

    cfgVpnOpenvpnKeyPassword OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Password to Unlock Private Key

             This parameter is obsolete and has been replaced with the
             Certificate Store.

             Key material on the device is always encrypted.
             The password to import the file has to be specified once during
             import via `setCrtFilePassphrase`"
        ::= { cfgVpnOpenvpnTableEntry 17 }

    cfgVpnOpenvpnKeyType OBJECT-TYPE
        SYNTAX INTEGER { asymmectric(0), symmetric(1), combinedAuth(2), combinedCrypt(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Key Type

             * **asymmetric(0)**: Use an asymmetric encryption with certificate,
                                  private and public keys (TLS).
             * **symmetric(1)**: Use encryption with a static key.
             * **combinedAuth(2)**: Use asymmetric encryption and sign the
                                    control channel with a static key (tls-auth).
             * **combinedCrypt(3)**: Use asymmetric encryption and encrypt the
                                     control channel with a static key (tls-crypt).

             **Note:** The key material for the asymmectric encryption is
             managed by the Certificate Store."
        ::= { cfgVpnOpenvpnTableEntry 18 }

    cfgVpnOpenvpnKeyDirection OBJECT-TYPE
        SYNTAX INTEGER { omitted(-1), zero(0), one(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Key Direction

             This option is active when `cfgVpnOpenvpnKeyType` is set to either
             **symmetric(1)** or **combined(2)**.

             * **omitted(-1)**: No direction is defined
             * **zero(0)**: Use direction 0
             * **one(1)**: Use direction 1

             When the direction parameter is omitted, 2 keys are used
             bidirectionally: One for HMAC and the other for encryption/decryption.

             With a direction specified, 4 keys are used:
             One per direction for HMAC and encryption.

             **Note:** The direction parameter should always be complementary on
                       either side of the connection, i.e. one side should use
                       '0' and the other should use '1', or both sides should
                       omit it altogether."
        ::= { cfgVpnOpenvpnTableEntry 19 }

    cfgVpnOpenvpnRemoteCertTls OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), client(1), server(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote Certificate Verification

             Verify if the Extended Key Usage field in the certificate of the
             remote host has the correct type.

             * **disabled(0)**: Do not verify the remote certificate.
             * **client(1)**: Check for client type.
             * **server(2)**: Check for server type."
        ::= { cfgVpnOpenvpnTableEntry 20 }

    cfgVpnOpenvpnVerifyX509Name OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), name(1), prefix(2), subject(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "X.509 Certificate Verification Method

             The following verification methods are available:

             * **disabled(0)**: No verification is done
             * **name(1)**: Match the exact CN (Common Name)
             * **prefix(2)**: Match the prefix of the CN
             * **subject(3)**: Match the complete subject DN

             The `cfgVpnOpenvpnVerifyX509String` parameter defines the string
             to be matched."
        ::= { cfgVpnOpenvpnTableEntry 21 }

    cfgVpnOpenvpnVerifyX509String OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "X.509 Certificate Verification String

             If a X.509 certificate verification method is enabled (see
             `cfgVpnOpenvpnVerifyX509Name`), this parameter defines the string
             to be compared by the verification method."
        ::= { cfgVpnOpenvpnTableEntry 22 }

    cfgVpnOpenvpnUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Username

             Authenticate with the server using the given username.

             It is disabled when set to **none**."
        ::= { cfgVpnOpenvpnTableEntry 23 }

    cfgVpnOpenvpnPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Password

             Authenticate with the server using the given password.

             It is disabled when set to **none**."
        ::= { cfgVpnOpenvpnTableEntry 24 }

    cfgVpnOpenvpnCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN CA ID(s)

            This value contain the id(s) to reference the ca
            certificate in the certificate store."
        ::= { cfgVpnOpenvpnTableEntry 25 }

    cfgVpnOpenvpnCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Certificate ID

            This value contain the id to reference a certificate in the
            certificate store."
        ::= { cfgVpnOpenvpnTableEntry 26 }

    cfgVpnOpenvpnStaticKeyId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenVPN Static Key ID

            This value contain the id to reference the static key in the
            certificate store."
        ::= { cfgVpnOpenvpnTableEntry 27 }

    cfgVpnOpenvpnCustomOptions OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..4095))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Custom OpenVPN Options

             These options are appended to the OpenVPN configuration.
             This allows to set options not available via other configuration
             items.
             Set to `none` when no additional options shall be added.

             When setting multiple options, separate them with a semicolon `;`.

             The full list of all available options is at:
             https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/

             Prohibited options are:

             * ipchange
             * route-up
             * route-pre-down
             * up
             * down
             * script-security
             * cd
             * chroot
             * log
             * client-connect
             * client-disconnect
             * learn-address
             * auth-user-pass-verify
             * auth-user-pass
             * tls-verify
             * ca
             * cert
             * key
             * secret
             * askpass
             * tls-auth

             Essentially everything which calls a script, changes files, or
             otherwise allows to adjust sensitive setting on the system.

             When a custom option is set which is configurable via an existing
             parameter, the custom option will take precedence. A message is
             shown in syslog/TRAP notifing about the duplicate entry."
        ::= { cfgVpnOpenvpnTableEntry 1000 }

-- =============================================================================

-- IPsec

    cfgVpnIpsec OBJECT IDENTIFIER ::= { cfgVpn 2 }

    cfgVpnIpsecTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgVpnIpsecTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IPsec Table

             The used IPsec implementation is strongSwan.
             For more detailed configuration explanations and examples see
             https://wiki.strongswan.org/projects/strongswan/wiki/IpsecConf"
        ::= { cfgVpnIpsec 1 }

    cfgVpnIpsecTableEntry OBJECT-TYPE
        SYNTAX  CfgVpnIpsecTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IPsec Table Entry"
        INDEX {cfgVpnIpsecIndex}
        ::= { cfgVpnIpsecTable 1 }

    CfgVpnIpsecTableSeq ::=
        SEQUENCE {  cfgVpnIpsecIndex Integer32,
                    cfgVpnIpsecLeft DisplayString,
                    cfgVpnIpsecRight DisplayString,
                    cfgVpnIpsecLeftSubnet DisplayString,
                    cfgVpnIpsecRightSubnet DisplayString,
                    cfgVpnIpsecLeftId DisplayString,
                    cfgVpnIpsecRightId DisplayString,
                    cfgVpnIpsecLeftAuth DisplayString,
                    cfgVpnIpsecRightAuth DisplayString,
                    cfgVpnIpsecType INTEGER,
                    cfgVpnIpsecAuto INTEGER,
                    cfgVpnIpsecKeyExchange INTEGER,
                    cfgVpnIpsecMobIke INTEGER,
                    cfgVpnIpsecIke DisplayString,
                    cfgVpnIpsecEsp DisplayString,
                    cfgVpnIpsecIkeLifetime Integer32,
                    cfgVpnIpsecLifetime Integer32,
                    cfgVpnIpsecKeyingTries Integer32,
                    cfgVpnIpsecDpdAction INTEGER,
                    cfgVpnIpsecDpdDelay Integer32,
                    cfgVpnIpsecDpdTimeout Integer32,
                    cfgVpnIpsecKeyPassword DisplayString,
                    cfgVpnIpsecPassword DisplayString,
                    cfgVpnIpsecCloseAction INTEGER,
                    cfgVpnIpsecReauth INTEGER,
                    cfgVpnIpsecCaIds DisplayString,
                    cfgVpnIpsecLeftCertId Integer32,
                    cfgVpnIpsecRightCertId Integer32,
                    cfgVpnIpsecLeftSigkeyId Integer32,
                    cfgVpnIpsecRightSigkeyId Integer32,
                    cfgVpnIpsecLeftKeyId Integer32,
                    cfgVpnIpsecCustomOptions DisplayString
                 }

    cfgVpnIpsecIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgVpnIpsecTableEntry 1 }

    cfgVpnIpsecLeft OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Left or Local

             left = ip address | fqdn | %any | %any4 | %any6 | range | subnet

             The IP address of the participant's public-network interface or one
             of several magic values. The value %any for the local endpoint
             signifies an address to be filled in (by automatic keying) during
             negotiation. If the local peer initiates the connection setup the
             routing table will be queried to determine the correct local
             IP address. In case the local peer is responding to a connection
             setup then any IP address that is assigned to a local interface
             will be accepted. The value %any4 restricts address selection to
             IPv4 addresses, the value %any6 reistricts address selection to
             IPv6 addresses.

             The prefix % in front of a fully-qualified domain name or an IP
             address will implicitly set leftallowany=yes.

             leftallowany is  a modifier for left, making it behave as %any
             although a concrete IP address has been assigned. Recommended for
             dynamic IP addresses that can be resolved by DynDNS at IPsec
             startup or update time.

             If %any is used for the remote endpoint it literally means any
             IP address.

             If an FQDN is assigned it is resolved every time a configuration
             lookup is done. If DNS resolution times out, the lookup is delayed
             for that time.

             Connections can be limited to a specific range of hosts. To do so a
             range (10.1.0.0-10.2.255.255) or a subnet (10.1.0.0/16) can be
             specified, and multiple addresses, ranges and subnets can be
             separated by commas. While one can freely combine these items, to
             initiate the connection at least one non-range/subnet is required.

             Please note that with the usage of wildcards multiple connection
             descriptions might match a given incoming connection attempt. The
             most specific description is used in that case."
        ::= { cfgVpnIpsecTableEntry 2 }

    cfgVpnIpsecRight OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Right or Remote

             right = ip address | fqdn | %any | %any4 | %any6 | range | subnet

             The IP address of the participant's public-network interface or one
             of several magic values. The value %any for the local endpoint
             signifies an address to be filled in (by automatic keying) during
             negotiation. If the local peer initiates the connection setup the
             routing table will be queried to determine the correct local
             IP address. In case the local peer is responding to a connection
             setup then any IP address that is assigned to a local interface
             will be accepted. The value %any4 restricts address selection to
             IPv4 addresses, the value %any6 reistricts address selection to
             IPv6 addresses.

             The prefix % in front of a fully-qualified domain name or an IP
             address will implicitly set rightallowany=yes.

             rightallowany is  a modifier for right, making it behave as %any
             although a concrete IP address has been assigned. Recommended for
             dynamic IP addresses that can be resolved by DynDNS at IPsec
             startup or update time.

             If %any is used for the remote endpoint it literally means any
             IP address.

             If an FQDN is assigned it is resolved every time a configuration
             lookup is done. If DNS resolution times out, the lookup is delayed
             for that time.

             Connections can be limited to a specific range of hosts. To do so a
             range (10.1.0.0-10.2.255.255) or a subnet (10.1.0.0/16) can be
             specified, and multiple addresses, ranges and subnets can be
             separated by commas. While one can freely combine these items, to
             initiate the connection at least one non-range/subnet is required.

             Please note that with the usage of wildcards multiple connection
             descriptions might match a given incoming connection attempt. The
             most specific description is used in that case."
        ::= { cfgVpnIpsecTableEntry 3 }

    cfgVpnIpsecLeftSubnet OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left Subnet

             leftsubnet = ip subnet[[proto/port]][,...]

             Private subnet behind the left/local participant, expressed as
             network/netmask. The configured subnets of the peers may differ,
             the protocol narrows it to the greatest common subnet.

             This is also done for IKEv1, but as this may lead to problems
             with other implementations, make sure to configure identical
             subnets in such configurations.
             IKEv2 supports multiple subnets separated by commas, IKEv1 only
             interprets the first subnet of such a definition. This is due
             to a limitation of the IKEv1 protocol, which only allows a single
             pair of subnets per CHILD_SA. So to tunnel several subnets,
             a conn entry has to be defined and brought up for each pair
             of subnets.

             The optional part after each subnet enclosed in square brackets
             specifies a protocol/port to restrict the selector for that subnet.

             **Examples:**

             * 10.0.0.1[tcp/http],10.0.0.2[6/80]
             * fec1::1[udp],10.0.0.0/16[/53]

             Instead of omitting either value %any can be used to the same
             effect, e.g. `fec1::1[udp/%any],10.0.0.0/16[%any/53]`.

             If the protocol is icmp or ipv6-icmp the port is interpreted as
             ICMP message type if it is less than 256, or as type and code if it
             greater or equal to 256, with the type in the most significant 8
             bits and the code in the least significant 8 bits.

             The port value can alternatively take the value %opaque for RFC
             4301 OPAQUE selectors, or a numerical range in the form 1024-65535.
             None of the kernel backends currently supports opaque or port
             ranges and uses %any for policy installation instead.

             Instead of specifying a subnet, %dynamic can be used to replace it
             with the IKE address, having the same effect as omitting
             left|rightsubnet completely. Using %dynamic can be used to define
             multiple dynamic selectors, each having a potentially different
             protocol/port definition."
        ::= { cfgVpnIpsecTableEntry 4 }

    cfgVpnIpsecRightSubnet OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Right Subnet

             rightsubnet = ip subnet[[proto/port]][,...]

             Private subnet behind the right/remote participant, expressed as
             network/netmask. The configured subnets of the peers may differ,
             the protocol narrows it to the greatest common subnet.

             This is also done for IKEv1, but as this may lead to problems
             with other implementations, make sure to configure identical
             subnets in such configurations.
             IKEv2 supports multiple subnets separated by commas, IKEv1 only
             interprets the first subnet of such a definition. This is due
             to a limitation of the IKEv1 protocol, which only allows a single
             pair of subnets per CHILD_SA. So to tunnel several subnets a
             conn entry has to be defined and brought up for each pair of
             subnets.

             The optional part after each subnet enclosed in square brackets
             specifies a protocol/port to restrict the selector for that subnet.

             **Examples:**

             * 10.0.0.1[tcp/http],10.0.0.2[6/80]
             * fec1::1[udp],10.0.0.0/16[/53]

             Instead of omitting either value %any can be used to the same
             effect, e.g. `fec1::1[udp/%any],10.0.0.0/16[%any/53]`.

             If the protocol is icmp or ipv6-icmp the port is interpreted as
             ICMP message type if it is less than 256, or as type and code if it
             greater or equal to 256, with the type in the most significant 8
             bits and the code in the least significant 8 bits.

             The port value can alternatively take the value %opaque for RFC
             4301 OPAQUE selectors, or a numerical range in the form 1024-65535.
             None of the kernel backends currently supports opaque or port
             ranges and uses %any for policy installation instead.

             Instead of specifying a subnet, %dynamic can be used to replace it
             with the IKE address, having the same effect as omitting
             left|rightsubnet completely. Using %dynamic can be used to define
             multiple dynamic selectors, each having a potentially different
             protocol/port definition."
        ::= { cfgVpnIpsecTableEntry 5 }

    cfgVpnIpsecLeftId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left ID

             leftid = id

             How the left/local participant should be identified for
             authentication; defaults to left or the subject of the certificate
             configured with leftcert. If leftcert is configured, the identity
             has to be confirmed by the certificate, that is, it has to match
             the full subject DN or one of the subjectAltName extensions
             contained in the certificate.

             Can be an IP address, a fully-qualified domain name, an email
             address or a Distinguished Name for which the ID type is determined
             automatically and the string is converted to the appropriate
             encoding. The rules for this conversion are described on
             IdentityParsing (see https://wiki.strongswan.org/projects/strongswan/wiki/IdentityParsing).

             In certain special situations the identity parsing above might be
             inadequate or produce the wrong result. Examples are the need to
             encode a FQDN as KEY_ID or the string parser being unable to
             produce the correct binary ASN.1 encoding of a certificate's DN.
             For these situations it is possible to enforce a specific identity
             type and to provide the binary encoding of the identity. To do this
             a prefix may be used, followed by a colon (:). If the number sign
             (#) follows the colon, the remaining data is interpreted as hex
             encoding, otherwise the string is used as is as the identification
             data. Note: The latter implies that no conversion is performed for
             non-string identities. For example, ipv4:10.0.0.1 does not create a
             valid ID_IPV4_ADDR IKE identity, as it does not get converted to
             binary 0x0a000001. Instead, one could use ipv4:#0a000001 to get a
             valid identity, but just using the implicit type with automatic
             conversion is usually simpler. The same applies to the ASN.1
             encoded types.

             The following prefixes are known: ipv4, ipv6, rfc822, email,
             userfqdn, fqdn, dns, asn1dn, asn1gn and keyid.

             Custom type prefixes may be specified by surrounding the numerical
             type value with curly brackets.

             rightid for IKEv2 connections optionally takes a % as prefix in
             front of the identity. If given it prevents the daemon from sending
             IDr in its IKE_AUTH request and will allow it to verify the
             configured identity against the subject and subjectAltNames
             contained in the responder's certificate (otherwise, it is only
             compared with the IDr returned by the responder). The IDr sent by
             the initiator might otherwise prevent the responder from finding a
             config if it has configured a different value for leftid."
        ::= { cfgVpnIpsecTableEntry 6 }

    cfgVpnIpsecRightId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Right ID

             rightid = id

             How the right/remote participant should be identified for
             authentication; defaults to right or the subject of the certificate
             configured with rightcert. If rightcert is configured, the identity
             has to be confirmed by the certificate, that is, it has to match
             the full subject DN or one of the subjectAltName extensions
             contained in the certificate.

             Can be an IP address, a fully-qualified domain name, an email
             address or a Distinguished Name for which the ID type is determined
             automatically and the string is converted to the appropriate
             encoding. The rules for this conversion are described on
             IdentityParsing (see https://wiki.strongswan.org/projects/strongswan/wiki/IdentityParsing).

             In certain special situations the identity parsing above might be
             inadequate or produce the wrong result. Examples are the need to
             encode a FQDN as KEY_ID or the string parser being unable to
             produce the correct binary ASN.1 encoding of a certificate's DN.
             For these situations it is possible to enforce a specific identity
             type and to provide the binary encoding of the identity. To do this
             a prefix may be used, followed by a colon (:). If the number sign
             (#) follows the colon, the remaining data is interpreted as hex
             encoding, otherwise the string is used as is as the identification
             data. Note: The latter implies that no conversion is performed for
             non-string identities. For example, ipv4:10.0.0.1 does not create a
             valid ID_IPV4_ADDR IKE identity, as it does not get converted to
             binary 0x0a000001. Instead, one could use ipv4:#0a000001 to get a
             valid identity, but just using the implicit type with automatic
             conversion is usually simpler. The same applies to the ASN.1
             encoded types.

             The following prefixes are known: ipv4, ipv6, rfc822, email,
             userfqdn, fqdn, dns, asn1dn, asn1gn and keyid.

             Custom type prefixes may be specified by surrounding the numerical
             type value with curly brackets.

             rightid for IKEv2 connections optionally takes a % as prefix in
             front of the identity. If given it prevents the daemon from sending
             IDr in its IKE_AUTH request and will allow it to verify the
             configured identity against the subject and subjectAltNames
             contained in the responder's certificate (otherwise, it is only
             compared with the IDr returned by the responder). The IDr sent by
             the initiator might otherwise prevent the responder from finding a
             config if it has configured a different value for leftid."
        ::= { cfgVpnIpsecTableEntry 7 }

    cfgVpnIpsecLeftAuth OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left Authentication

             leftauth = auth method

             **Examples:**

             * psk
             * pubkey
             * pubkey-sha256-sha512
             * ecdsa-384
             * bliss-sha512

             Authentication method to use locally (left).
             Acceptable values are pubkey for public key encryption
             (RSA/ECDSA/BLISS), psk for pre-shared key authentication, eap to
             use the Extensible Authentication Protocol, and xauth for IKEv1
             eXtended Authentication.

             To require a trustchain public key strength for the remote side,
             specify the key type followed by the minimum strength in bits (for
             example ecdsa-384 or rsa-2048-ecdsa-256). To limit the acceptable
             set of hashing algorithms for trustchain validation, append hash
             algorithms to pubkey or a key strength definition (for example
             pubkey-sha256-sha512, rsa-2048-sha256-sha384-sha512, or
             rsa-2048-sha256-ecdsa-256-sha256-sha384).

             Unless explicit IKEv2 signature constraints are configured (see
             below), such key types and hash algorithms are also applied as
             constraints against IKEv2 signature authentication schemes used by
             the remote side.

             If both peers support RFC 7427 (Signature Authentication in
             IKEv2) specific hash algorithms to be used during IKEv2
             authentication may be configured. The syntax is the same as above,
             but with ike: prefix.
             For example, with ike:pubkey-sha384-sha256 a public key signature
             scheme with either SHA-384 or SHA-256 would get used for
             authentication, in that order and depending on the hash algorithms
             supported by the peer. If no specific hash algorithms are
             configured, the default is to prefer an algorithm that matches or
             exceeds the strength of the signature key.
             If no constraints with ike: prefix are configured any signature
             scheme constraint (without ike: prefix) will also apply to IKEv2
             authentication.

             RSASSA-PSS signatures are supported. To use or require them,
             configure rsa/pss instead of rsa as in e.g. ike:rsa/pss-sha256.
             If pubkey or rsa constraints are configured, RSASSA-PSS signatures
             will only be used/accepted if enabled in strongswan.conf.

             In the case of eap, an optional EAP method can be appended.
             Currently defined methods are eap-aka, eap-gtc, eap-md5,
             eap-mschapv2, eap-peap, eap-sim, eap-tls, eap-ttls, eap-dynamic,
             and eap-radius. Alternatively, IANA assigned EAP method numbers are
             accepted. Vendor specific EAP methods are defined in the form
             eap-type-vendor (e.g. eap-7-12345).

             Signature and trust chain constraints for EAP-(T)TLS may be
             defined. To do so, append a colon to the EAP method, followed by
             the key type/size and hash algorithm as discussed above.
             For xauth, an XAuth authentication backend can be specified, such
             as xauth-generic or xauth-eap. If XAuth is used in leftauth, Hybrid
             authentication is used. For traditional XAuth authentication,
             define XAuth in leftauth2."
        ::= { cfgVpnIpsecTableEntry 8 }

    cfgVpnIpsecRightAuth OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Right Authentication

             rightauth = auth method

             **Examples:**

             * psk
             * pubkey
             * pubkey-sha256-sha512
             * ecdsa-384
             * bliss-sha512

             Authentication method to require from the remote (right) side.
             Acceptable values are pubkey for public key encryption
             (RSA/ECDSA/BLISS), psk for pre-shared key authentication, eap to
             require the use of the Extensible Authentication Protocol, and
             xauth for IKEv1 eXtended Authentication.

             To require a trustchain public key strength for the remote side,
             specify the key type followed by the minimum strength in bits (for
             example ecdsa-384 or rsa-2048-ecdsa-256). To limit the acceptable
             set of hashing algorithms for trustchain validation, append hash
             algorithms to pubkey or a key strength definition (for example
             pubkey-sha256-sha512, rsa-2048-sha256-sha384-sha512, or
             rsa-2048-sha256-ecdsa-256-sha256-sha384).

             Unless explicit IKEv2 signature constraints are configured (see
             below), such key types and hash algorithms are also applied as
             constraints against IKEv2 signature authentication schemes used by
             the remote side.

             If both peers support RFC 7427 (Signature Authentication in
             IKEv2) specific hash algorithms to be used during IKEv2
             authentication may be configured. The syntax is the same as above,
             but with ike: prefix.
             For example, with ike:pubkey-sha384-sha256 a public key signature
             scheme with either SHA-384 or SHA-256 would get used for
             authentication, in that order and depending on the hash algorithms
             supported by the peer. If no specific hash algorithms are
             configured, the default is to prefer an algorithm that matches or
             exceeds the strength of the signature key.
             If no constraints with ike: prefix are configured any signature
             scheme constraint (without ike: prefix) will also apply to IKEv2
             authentication.

             RSASSA-PSS signatures are supported. To use or require them,
             configure rsa/pss instead of rsa as in e.g. ike:rsa/pss-sha256.
             If pubkey or rsa constraints are configured, RSASSA-PSS signatures
             will only be used/accepted if enabled in strongswan.conf.

             In the case of eap, an optional EAP method can be appended.
             Currently defined methods are eap-aka, eap-gtc, eap-md5,
             eap-mschapv2, eap-peap, eap-sim, eap-tls, eap-ttls, eap-dynamic,
             and eap-radius. Alternatively, IANA assigned EAP method numbers are
             accepted. Vendor specific EAP methods are defined in the form
             eap-type-vendor (e.g. eap-7-12345).

             Signature and trust chain constraints for EAP-(T)TLS may be
             defined. To do so, append a colon to the EAP method, followed by
             the key type/size and hash algorithm as discussed above.
             For xauth, an XAuth authentication backend can be specified, such
             as xauth-generic or xauth-eap. If XAuth is used in leftauth, Hybrid
             authentication is used. For traditional XAuth authentication,
             define XAuth in leftauth2."
        ::= { cfgVpnIpsecTableEntry 9 }


    cfgVpnIpsecType OBJECT-TYPE
        SYNTAX INTEGER { tunnel(0), transport(1), transportProxy(2), passthrough(3), drop(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Type

             The type of the connection; currently the accepted values are:

             * **tunnel(0)**: signifying a host-to-host, host-to-subnet, or
                              subnet-to-subnet tunnel
             * **transport(1)**: signifying host-to-host transport mode
             * **transportProxy(2)**: signifying the special Mobile IPv6
                                      transport proxy mode
             * **passthrough(3)**: signifying that no IPsec processing should be
                                   done at all
             * **drop(4)**: signifying that packets should be discarded."
        ::= { cfgVpnIpsecTableEntry 100 }

    cfgVpnIpsecAuto OBJECT-TYPE
        SYNTAX INTEGER { ignore(0), add(1), route(2), start(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Auto Startup Operation

             What operation, if any, should be done automatically at IPsec
             startup.

             * **ignore(0)**: Ignores the connection. This is equal to deleting
                              a connection from the config file.
             * **add(1)**: Loads a connection without starting it.
             * **route(2)**: Loads a connection and installs kernel traps. If
                             traffic is detected between leftsubnet
                             (`cfgVpnIpsecLeftSubnet`) and rightsubnet
                             (`cfgVpnIpsecRightSubnet`), a connection is
                             established.
             * **start(3)**: loads a connection and brings it up immediately.

             Relevant only locally, other end need not agree on it."
        ::= { cfgVpnIpsecTableEntry 101 }

    cfgVpnIpsecKeyExchange OBJECT-TYPE
        SYNTAX INTEGER { ikev1(1), ikev2(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Key Exchange Method

             Which protocol should be used to initialize the connection."
        ::= { cfgVpnIpsecTableEntry 102 }

    cfgVpnIpsecMobIke OBJECT-TYPE
        SYNTAX INTEGER { no(0), yes(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable IKEv2 MOBIKE Protocol

             Enables the IKEv2 MOBIKE protocol defined by RFC 4555. If set to
             no, the charon daemon will not actively propose MOBIKE as initiator
             and ignore the MOBIKE_SUPPORTED notify as responder."
        ::= { cfgVpnIpsecTableEntry 103 }

    cfgVpnIpsecIke OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IKE/ISAKMP SA Encryption/Authentication Algorithms

             Comma-separated list of IKE/ISAKMP SA encryption/authentication
             algorithms to be used, e.g. aes128-sha256-modp3072. The notation is
             encryption-integrity[-prf]-dhgroup. In IKEv2, multiple algorithms
             and proposals may be included, such as
             aes128-aes256-sha1-modp3072-modp2048,3des-sha1-md5-modp1024.

             It is possible to configure a PRF algorithm different to that
             defined for integrity protection. If no PRF is configured, the
             algorithms defined for integrity are proposed as PRF. The prf
             keywords are the same as the integrity algorithms, but have a prf
             prefix (such as prfsha1, prfsha256 or prfaesxcbc).

             Defaults to aes128-sha256-modp3072
             (aes128-sha1-modp2048,3des-sha1-modp1536 before 5.4.0) for IKEv1.
             The daemon adds its extensive default proposal to this default or
             the configured value. To restrict it to the configured proposal an
             exclamation mark (!) can be added at the end.

             Refer to IKEv1CipherSuites and IKEv2CipherSuites for a list of
             valid keywords.

             Note: As a responder both daemons accept the first supported
             proposal received from the peer. In order to restrict a responder
             to only accept specific cipher suites, the strict flag
             (!, exclamation mark) can be used, e.g: aes256-sha512-modp4096!"
        ::= { cfgVpnIpsecTableEntry 104 }

    cfgVpnIpsecEsp OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ESP Encryption/Authentication Algorithms

             Comma-separated list of ESP encryption/authentication algorithms to
             be used for the connection, e.g. aes128-sha256. The notation is
             encryption-integrity[-dhgroup][-esnmode]. For IKEv2, multiple
             algorithms (separated by -) of the same type can be included in a
             single proposal. IKEv1 only includes the first algorithm in a
             proposal. Only either the ah or the esp keyword may be used,
             AH+ESP bundles are not supported.

             Defaults to aes128-sha256. The daemon adds its extensive default
             proposal to this default or the configured value. To restrict it to
             the configured proposal an exclamation mark (!) can be added at the
             end.

             Note: As a responder, the daemon defaults to selecting the first
             configured proposal that's also supported by the peer. By disabling
             charon.prefer_configured_proposals in strongswan.conf this may be
             changed to selecting the first acceptable proposal sent by the peer
             instead. In order to restrict a responder to only accept specific
             cipher suites, the strict flag (!, exclamation mark) can be used,
             e.g: aes256-sha512-modp4096!

             If dh-group is specified, CHILD_SA rekeying and initial negotiation
             include a separate Diffe-Hellman exchange (this also applies to
             IKEv1 Quick Mode). However, for IKEv2, the keys of the CHILD_SA
             created implicitly with the IKE_SA will always be derived from the
             IKE_SA's key material. So any DH group specified here will only
             apply when the CHILD_SA is later rekeyed or is created with a
             separate CREATE_CHILD_SA exchange. Therefore, a proposal mismatch
             might not immediately be noticed when the SA is established, but
             may later cause rekeying to fail.

             Valid values for esnmode are esn and noesn. Specifying both
             negotiates extended sequence number support with the peer, the
             default is noesn.

             Refer to IKEv1CipherSuites and IKEv2CipherSuites for a list of
             valid keywords."
        ::= { cfgVpnIpsecTableEntry 105 }

    cfgVpnIpsecIkeLifetime OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IKE Lifetime

             How long the keying channel of a connection (ISAKMP or IKE SA)
             should last before being renegotiated."
        ::= { cfgVpnIpsecTableEntry 106 }

    cfgVpnIpsecLifetime OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Connection Instance Lifetime

             How long a particular instance of a connection (a set of
             encryption/authentication keys for user packets) should last, from
             successful negotiation to expiry; acceptable values are an integer
             optionally followed by s (a time in seconds) or a decimal number
             followed by m, h, or d (a time in minutes, hours, or days
             respectively) (default 1h, maximum 24h). Normally, the connection
             is renegotiated (via the keying channel) before it expires
             (see margintime). The two ends need not exactly agree on lifetime,
             although if they do not, there will be some clutter of superseded
             connections on the end which thinks the lifetime is longer.

             Applies to AP and STA."
        ::= { cfgVpnIpsecTableEntry 107 }

    cfgVpnIpsecKeyingTries OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Keying Tries

             When set to -1 means %forever, otherwise what is set.

             **Examples:**

             * **-1**: try forever
             * **3**"
        ::= { cfgVpnIpsecTableEntry 108 }

    cfgVpnIpsecDpdAction OBJECT-TYPE
        SYNTAX INTEGER { none(0), clear(1), hold(2), restart(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Dead Peer Detection Protocol Usage

             Controls the use of the Dead Peer Detection protocol
             (DPD, RFC 3706) where R_U_THERE notification messages (IKEv1) or
             empty INFORMATIONAL messages (IKEv2) are periodically sent in order
             to check the liveliness of the IPsec peer. The values clear, hold,
             and restart all activate DPD and determine the action to perform on
             a timeout. With **clear(1)** the connection is closed with no
             further actions taken. **hold(2)** installs a trap policy, which
             will catch matching traffic and tries to re-negotiate the
             connection on demand. **restart(3)** will immediately trigger an
             attempt to re-negotiate the connection.

             The default is **none(0)** which disables the active sending of DPD
             messages."
        ::= { cfgVpnIpsecTableEntry 109 }

    cfgVpnIpsecDpdDelay OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Dead Peer Detection Delay

             Defines the period time interval (in seconds) with which R_U_THERE
             messages/INFORMATIONAL exchanges are sent to the peer. These are
             only sent if no other traffic is received. In IKEv2, a value
             of 0 sends no additional INFORMATIONAL messages and uses only
             standard messages (such as those to rekey) to detect dead peers."
        ::= { cfgVpnIpsecTableEntry 110 }

    cfgVpnIpsecDpdTimeout OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DPD Timeout

             Defines the timeout interval in seconds, after which all
             connections to a peer are deleted in case of inactivity. This only
             applies to IKEv1, in IKEv2 the default retransmission timeout
             applies, as every exchange is used to detect dead peers."
        ::= { cfgVpnIpsecTableEntry 111 }

    cfgVpnIpsecKeyPassword OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Password to Unlock Private Key

             This parameter is obsolete and has been replaced with the
             Certificate Store.

             Key material on the device is always encrypted.
             The password to import the file has to be specified once during
             import via `setCrtFilePassphrase`"
        ::= { cfgVpnIpsecTableEntry 112 }

    cfgVpnIpsecPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Password

             When `cfgVpnIpsecRightAuth` is set to **psk**.

             A preshared secret is most conveniently represented as a sequence
             of characters. The sequence cannot contain newline or double-quote
             characters. Alternatively, preshared secrets can be represented as
             hexadecimal or Base64 encoded binary values. A character sequence
             beginning with 0x is interpreted as sequence hexadecimal digits.
             Similarly, a character sequence beginning with 0s is interpreted as
             Base64 encoded binary data."
        ::= { cfgVpnIpsecTableEntry 113 }

    cfgVpnIpsecCloseAction OBJECT-TYPE
        SYNTAX INTEGER { none(0), clear(1), hold(2), restart(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Action When Link is Closed by Remote Peer

             Defines the action to take if the remote peer unexpectedly closes a
             CHILD_SA. This may happen when the remote site is reconfigured, or
             goes down for maintenance. A closeaction should not be used if the
             peer uses reauthentication (see `cfgVpnIpsecReauth`) or uniqueids
             checking, as these events might trigger the defined action when not
             desired.

             Available actions are:

             * **none(0)** No action is taken. This disables the Close Action.
             * **clear(1)** The connection is closed with no further actions
                            taken.
             * **hold(2)** Installs a trap policy, which will catch matching
                           traffic and tries to re-negotiate the connection on
                           demand.
             * **restart(3)** Will immediately trigger an attempt to
                              re-negotiate the connection."
        ::= { cfgVpnIpsecTableEntry 114 }

    cfgVpnIpsecReauth OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reauthentication of Peer During Rekeying

             Whether rekeying of an IKE_SA should also reauthenticate the peer.
             In IKEv1, reauthentication is always done.

             In IKEv2, a value of:

             * **disabled(0)** Rekeys without uninstalling the IPsec SAs
             * **enabled(1)** Creates a new IKE_SA from scratch and tries to
                              recreate all IPsec SAs"
        ::= { cfgVpnIpsecTableEntry 115 }

    cfgVpnIpsecCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec CA Certificate ID

            This value contains the id(s) to reference the ca
            certificate in the certificate store."
        ::= { cfgVpnIpsecTableEntry 116 }

    cfgVpnIpsecLeftCertId  OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left Certificate ID

            This value contains the id of the certificate in the certificate
            store used for the left side."
        ::= { cfgVpnIpsecTableEntry 117 }

    cfgVpnIpsecRightCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Right Certificate ID

            This value contains the id of the certificate in the certificate
            store used for the right side."
        ::= { cfgVpnIpsecTableEntry 118 }

    cfgVpnIpsecLeftSigkeyId  OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left Sig Key ID

            This value contains the id of the sig key in the certificate
            store used for the left side."
        ::= { cfgVpnIpsecTableEntry 119 }

    cfgVpnIpsecRightSigkeyId  OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Right Sig Key ID

            This value contains the id of the sig key in the certificate
            store used for the right side."
        ::= { cfgVpnIpsecTableEntry 120 }

    cfgVpnIpsecLeftKeyId  OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IPsec Left Key ID

            This value contains the id of the private key in the certificate
            store used for the left side."
        ::= { cfgVpnIpsecTableEntry 121 }

    cfgVpnIpsecCustomOptions OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..4095))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Custom IPsec Options

             These options are appended to the IPsec configuration.
             This allows to set options not available via other configuration
             items.
             Set to `none` when no additional options shall be added.

             When setting multiple options, separate them with a semicolon `;`.

             The full list of all available options is at:
             https://wiki.strongswan.org/projects/strongswan/wiki/ConnSection

             Prohibited options are:

              * left
              * leftid
              * leftsubnet
              * leftauth
              * right
              * rightid
              * rightauth
              * rightsubnet
              * keyexchange
              * mobike
              * ikelifetime
              * lifetime
              * keyingtries
              * type
              * ike
              * esp
              * dpddelay
              * dpdtimeout

             Essentially everything which is possible to set by other SNMP commands."
        ::= { cfgVpnIpsecTableEntry 1000 }

-- -----------------------------------------------------------------------------

    cfgVpnIpsecGlobal OBJECT IDENTIFIER ::= { cfgVpnIpsec 2 }

    cfgVpnIpsecGlblVirtualTunnelInterface OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Virtual Tunnel Interfaces Disabled or Enabled

             Whether IPsec should use virtual tunnel interfaces (vti) or not.

             Generally IPsec processing is based on policies. After regular
             route lookups are done, the OS kernel consults its SPD for a
             matching policy and if one is found that is associated with an
             IPsec SA, the packet is processed (e.g. encrypted and sent as ESP
             packet).

             It is also possible to configure route-based VPNs. Here IPsec
             processing does not (only) depend on negotiated policies but may
             e.g. be controlled by routing packets to a specific interface.

             Most of these approaches also allow easy capture of plaintext
             traffic, which, depending on the operating system, might not be
             that straight-forward with policy-based VPNs. Another advantage
             this approach is that the MTU can be specified for the tunneling
             devices allowing to fragment packets before tunneling them in case
             PMTUD does not work properly.

             VTI devices act like a wrapper around existing IPsec policies. This
             means you can't just route arbitrary packets to a VTI device to get
             them tunneled, the established IPsec policies have to match too.
             However, you can negotiate 0.0.0.0/0 traffic selectors on both ends
             to allow tunneling anything that's routed via VTI device.

             It's important to note that VTI tunnel devices are a local feature,
             no additional encapsulation (like with GRE) is added, so the other
             end does not have to be aware that VTI devices are used in addition
             to regular IPsec policies.

             **Note:** When VTI is in use, the remote (`cfgVpnIpsecRight`) has
                       to be specified as IP address. It is not possible to use
                       an FQDN."
        ::= { cfgVpnIpsecGlobal 1 }

    cfgVpnIpsecGlblCustomOptions OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Custom Global IPsec Options

             Set to `none` when no additional options shall be added.

             When setting multiple options, separate them with a semicolon `;`.

             Example to enable aggressive mode for PSK with IKEv1:

             * `charon.i_dont_care_about_security_and_use_aggressive_mode_psk=yes`

             For a full list of all available options, please see:
             https://wiki.strongswan.org/projects/strongswan/wiki/Strongswanconf"

        ::= { cfgVpnIpsecGlobal 2 }

    cfgVpnIpsecDebug OBJECT IDENTIFIER ::= { cfgVpnIpsec 3 }

    cfgVpnIpsecDbgAsn OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "asn: Low-level encoding/decoding (ASN.1, X.509 etc.)

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 1 }

    cfgVpnIpsecDbgCfg OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "cfg: Configuration management and plugins

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 2 }

    cfgVpnIpsecDbgChd OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "chd: CHILD_SA/IPsec SA

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 3 }

    cfgVpnIpsecDbgDmn OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "dmn: Main daemon setup/cleanup/signal handling

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 4 }

    cfgVpnIpsecDbgEnc OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "enc: Packet encoding/decoding encryption/decryption operations

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 5 }

    cfgVpnIpsecDbgEsp OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "esp: libipsec library messages

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 6 }

    cfgVpnIpsecDbgIke OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ike: IKE_SA/ISAKMP SA

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 7 }

    cfgVpnIpsecDbgImc OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "imc: Integrity Measurement Collector

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 8 }

    cfgVpnIpsecDbgImv OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "imv: Integrity Measurement Verifier

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 9 }

    cfgVpnIpsecDbgJob OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "job: Jobs queuing/processing and thread pool management

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 10 }

    cfgVpnIpsecDbgKnl OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "knl: IPsec/Networking kernel interface

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 11 }

    cfgVpnIpsecDbgLib OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "lib: libstrongwan library messages

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 12 }

    cfgVpnIpsecDbgMgr OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "mgr: IKE_SA manager, handling synchronization for IKE_SA access

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 13 }

    cfgVpnIpsecDbgNet OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "net: IKE network communication

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 14 }

    cfgVpnIpsecDbgPts OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "pts: Platform Trust Service

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 15 }

    cfgVpnIpsecDbgTls OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "tls: libtls library messages

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 16 }

    cfgVpnIpsecDbgTnc OBJECT-TYPE
        SYNTAX INTEGER { silent(-1), basic(0), generic(1), detailed(2), raw(3), sensitive(4) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "tnc: Trusted Network Connect

             * **silent(-1):** Absolutely silent
             * **basic(0):** Very basic auditing logs (e.g. SA up/SA down)
             * **generic(1):** Generic control flow with errors, a good default
                               to see whats going on
             * **detailed(2):** More detailed debugging control flow
             * **raw(3):** Including RAW data dumps in hex
             * **sensitive(4):** Also include sensitive material in dumps, e.g.
                                 keys"
        ::= { cfgVpnIpsecDebug 17 }

-- -----------------------------------------------------------------------------

    cfgVpnWireguard OBJECT IDENTIFIER ::= { cfgVpn 5 }

    cfgVpnWireguardTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgVpnWireguardTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Table"
        ::= { cfgVpnWireguard 1 }

    cfgVpnWireguardTableEntry OBJECT-TYPE
        SYNTAX  CfgVpnWireguardTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Table Entry"
        INDEX {cfgVpnWgIndex}
        ::= { cfgVpnWireguardTable 1 }

    CfgVpnWireguardTableSeq ::=
        SEQUENCE {  cfgVpnWgIndex Integer32,
                    cfgVpnWgName DisplayString,
                    cfgVpnWgListenPort Integer32,
                    cfgVpnWgPrivateKey DisplayString,
                    cfgVpnWgPublicKey DisplayString,
                    cfgVpnWgMark DisplayString
                 }

    cfgVpnWgIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgVpnWireguardTableEntry 1 }

    cfgVpnWgName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireguard Interface"
        ::= { cfgVpnWireguardTableEntry 2 }

    cfgVpnWgListenPort OBJECT-TYPE
        SYNTAX Integer32 (0..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Listen Port

            Specify the port which is used by this wireguard instance.

            Set this to a fixed value when expecting inbound connections. The
            official wireguard port is 51820.

            A random port is used when set to 0."
        ::= { cfgVpnWireguardTableEntry 3 }

    cfgVpnWgPrivateKey OBJECT-TYPE
        SYNTAX DisplayString (SIZE(8..44))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Private Key

             Base 64 encoded private key used by this wireguard instance. The
             public key in `cfgVpnWgPublicKey` is derived from this private key.

             Will automatically generate a new private/public key-pair when set
             to `generate` or `not_yet_generated`.

             May be generated on the CLI with the command `wg genkey`.

             **Examples:**

             * generate
             * not_yet_generated
             * 4CwLw8p8UGdv6baTN1dMxhxVq+m779vl2IjDpSFecW8="
        ::= { cfgVpnWireguardTableEntry 4 }

    cfgVpnWgPublicKey OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Wireguard Public Key

            Base 64 encoded public key provided by this wireguard instance. This
            key is derived from what is set in `cfgVpnWgPrivateKey`.

            When the private key changes or is regenerated, the content of this
            field is updated during the apply.

            Configure this public key on the remote peer(s)."
        ::= { cfgVpnWireguardTableEntry 5 }

    cfgVpnWgMark OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..10))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Mark

             Marks all frames sent by this wireguard instance with the value
             specified here. This mark may be matched in the `cfgRouteRuleTable`
             for policy routing.

             Set to `-1` to disable setting a mark.

             The maximum mark value is `4294967295`."
        ::= { cfgVpnWireguardTableEntry 6 }


    cfgVpnWireguardPeersTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgVpnWireguardPeersTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Peers Table"
        ::= { cfgVpnWireguard 2 }

    cfgVpnWireguardPeersTableEntry OBJECT-TYPE
        SYNTAX  CfgVpnWireguardPeersTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireguard Peers Table Entry"
        INDEX {cfgVpnWgPIndex}
        ::= { cfgVpnWireguardPeersTable 1 }

    CfgVpnWireguardPeersTableSeq ::=
        SEQUENCE {  cfgVpnWgPIndex Integer32,
                    cfgVpnWgPEnabled INTEGER,
                    cfgVpnWgPInstance Integer32,
                    cfgVpnWgPPeer DisplayString,
                    cfgVpnWgPEndpoint DisplayString,
                    cfgVpnWgPAllowedIps DisplayString,
                    cfgVpnWgPPsk DisplayString,
                    cfgVpnWgPPersistentKeepalive Integer32
                 }

    cfgVpnWgPIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgVpnWireguardPeersTableEntry 1 }

    cfgVpnWgPEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Disabled or Enabled

            Disable or enabled this peer instance."
        ::= { cfgVpnWireguardPeersTableEntry 2 }

    cfgVpnWgPInstance OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Instance

             Specify a wireguard instance defined in `cfgVpnWireguardTable`.
             All peers with a matching instance are set up for the referenced
             instance."
        ::= { cfgVpnWireguardPeersTableEntry 3 }

    cfgVpnWgPPeer OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..44))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Public Key

             Specifys the remote peer by its public key.
             This Peer is considered disabled when set to `none`.

             **Example:**

             *Su05SN6WIje1PFlHMO8C2GmCzPp1R85ciwYAo6yvIhA="
        ::= { cfgVpnWireguardPeersTableEntry 4 }

    cfgVpnWgPEndpoint OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Endpoint

             Specifies the remote end by IP and port.

             Set to `0.0.0.0:0`, when the local peer accepts connections, but
             does not initiate by itself.

             **Examples:**

             * 192.168.1.20:51820
             * 0.0.0.0:0"
        ::= { cfgVpnWireguardPeersTableEntry 5 }

    cfgVpnWgPAllowedIps OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Allowed IPs

             The Allowed IPs refers to the addresses inside the tunnel. It has
             two meanings:

             In TX direction it acts as routing table. Frames with a
             destination matching the Allowed IPs are encrypted. All other
             frames that are routed to the interface but don't match the Allowed
             IPs are dropped.

             In RX direction it acts as ACL. Only frames where the source
             matches the Allowed IPs are accepted. Everything else is dropped.

             Multiple space and/or comma separated networks in CIDR notation may
             be specified.

             When set to `none`, no frames will be sent nor received.

             **Examples:**

             * none
             * 0.0.0.0/0
             * 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8"
        ::= { cfgVpnWireguardPeersTableEntry 6 }

    cfgVpnWgPPsk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(4..44))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Private Shared Key

             Base 64 encoded privately shared key. Provides an additional layer
             of cryptography with a symmetric key for post-quantum resistance.
             Has negligible impact on performance. A separate key should be used
             for every peer.

             Set to `none` when not used.

             May be generated on the CLI with the command `wg genpsk`.

             **Examples:**

             * none
             * F6wPakowIilChk4FRcHrAP+/jO5jdsQ7xphXi8UzG6Y="
        ::= { cfgVpnWireguardPeersTableEntry 7 }

    cfgVpnWgPPersistentKeepalive OBJECT-TYPE
        SYNTAX Integer32 (0..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireguard Peer Persistent Keepalive

             Interval in seconds to send a keepalive message to the peer.

             Only set this, when connecting through NAT or a firewall blocking
             inbound connections. When not set to 0, a sane value is 25."
        ::= { cfgVpnWireguardPeersTableEntry 8 }

-- -----------------------------------------------------------------------------

    cfgVpnTunnelEndPoint OBJECT IDENTIFIER ::= { cfgVpn 6 }

    cfgVpnTunnelEndPointTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgVpnTunnelEndPointTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Table"
        ::= { cfgVpnTunnelEndPoint 1 }

    cfgVpnTunnelEndPointTableEntry OBJECT-TYPE
        SYNTAX  CfgVpnTunnelEndPointTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Table Entry"
        INDEX {cfgVpnTepIndex}
        ::= { cfgVpnTunnelEndPointTable 1 }

    CfgVpnTunnelEndPointTableSeq ::=
        SEQUENCE {  cfgVpnTepIndex Integer32,
                    cfgVpnTepName DisplayString,
                    cfgVpnTepTunnelType INTEGER,
                    cfgVpnTepSource IpAddress,
                    cfgVpnTepDestination IpAddress,
                    cfgVpnTepTos DisplayString,
                    cfgVpnTepRxKeyId DisplayString,
                    cfgVpnTepTxKeyId DisplayString,
                    cfgVpnTepVnid Integer32,
                    cfgVpnTepDestinationPort Integer32
                 }

    cfgVpnTepIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgVpnTunnelEndPointTableEntry 1 }

    cfgVpnTepName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Tunnel Endpoint Interface"
        ::= { cfgVpnTunnelEndPointTableEntry 2 }

    cfgVpnTepTunnelType OBJECT-TYPE
        SYNTAX INTEGER { gre(0), gretap(1), vxlan(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Tunnel Endpoint Type

             * **gre(0):** Allows to tunnel L3 frames. Can not be bridged.
             * **gretap(1):** Allows to tunnel L2 frames. Can be bridged.
             * **vxlan(2):** Allows to tunnel L2 frames. Can be bridged."
        ::= { cfgVpnTunnelEndPointTableEntry 3 }

    cfgVpnTepSource OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Source Address of the Tunnel

             Can be set to 0.0.0.0 to let the system select the appropriate
             address based on the routing table."
        ::= { cfgVpnTunnelEndPointTableEntry 4 }

    cfgVpnTepDestination OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Address of the Tunnel

             Encapsulated frames are sent to this address."
        ::= { cfgVpnTunnelEndPointTableEntry 5 }

    cfgVpnTepTos OBJECT-TYPE
        SYNTAX DisplayString (SIZE(2..7))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Outer TOS Field of the Tunnel

             The outer IP header will have it's TOS field set to the value
             specified here.

             To force the outer TOS header to an explicit value, set the field
             to a value between '00' and 'ff'.

             The outer TOS header may inherit its TOS field from the inner IP
             header. To achieve this set to 'inherit'. Non-IP frames will have
             the value 00.

             Usually, only the upper most 3 bits have a significant impact on
             prioritisation, thus it is recommended to preferably use the values:
             00, 20, 40, 60, 80, a0, c0, e0

             **Examples:**

             * inherit
             * 00
             * a0
             * ff"
        ::= { cfgVpnTunnelEndPointTableEntry 6 }

    cfgVpnTepRxKeyId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RX Tunnel Key ID

             This parameter is active when `cfgVpnTepTunnelType` is set to
             **gre(0)** or **gretap(1)**.

             The key allows to run multiple tunnels between peers in parallel.
             The RX Key specifies which value is expected in the header of
             frames during reception.

             This is a 32 bit number which may be specified directly (a number
             between 0 and 4294967295) or as an IP address-like dotted quad:
             '123.123.0.255'.

             The value configured in this field should match the
             `cfgVpnTepTxKeyId` on the remote side.

             Set to -1 to not expect a key.

             **Examples:**

             * -1
             * 0
             * 4000
             * 100.0.0.1"
        ::= { cfgVpnTunnelEndPointTableEntry 7 }

    cfgVpnTepTxKeyId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..15))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "TX Tunnel Key ID

             This parameter is active when `cfgVpnTepTunnelType` is set to
             **gre(0)** or **gretap(1)**.

             The key allows to run multiple tunnels between peers in parallel.
             The TX Key specifies which value is set in the header of frames
             during transmission.

             This is a 32 bit number which may be specified directly (a number
             between 0 and 4294967295) or as an IP address-like dotted quad:
             '123.123.0.255'.

             The value configured in this field should match the
             `cfgVpnTepRxKeyId` on the remote side.

             Set to -1 to not set a key.

             **Examples:**

             * -1
             * 0
             * 4000
             * 100.0.0.1"
        ::= { cfgVpnTunnelEndPointTableEntry 8 }

    cfgVpnTepVnid OBJECT-TYPE
        SYNTAX Integer32 (0..16777215)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Virtual Network ID

             This parameter is active when `cfgVpnTepTunnelType` is set to
             **vxlan(2)**.

             Specify the vxlan network id."
        ::= { cfgVpnTunnelEndPointTableEntry 11 }

    cfgVpnTepDestinationPort OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Destination Port

             This parameter is active when `cfgVpnTepTunnelType` is set to
             **vxlan(2)**.

             Specify the destination UDP port.
             At the same time this parameter defines on which port the local
             tunnel endpoint is listening for inbound vxlan frames."
        ::= { cfgVpnTunnelEndPointTableEntry 12 }

-- =============================================================================
-- LDAP

    cfgLdapEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable LDAP Authentication

             Applies to AP and STA."
        ::= { cfgLdap 1 }

    cfgLdapUrl1 OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LDAP Server 1

             Primary LDAP server name, ignored if set to '0.0.0.0'.

             Applies to AP and STA."
        ::= { cfgLdap 2 }

    cfgLdapUrl2 OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LDAP Server 2

             Secondary LDAP server name, ignored if set to '0.0.0.0'.

             Applies to AP and STA."
        ::= { cfgLdap 3 }

    cfgLdapCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LDAP CA Certificate IDs

             Select the CAs to be used for LDAP server certificate validation.
             Multiple CAs can be referenced by writing the ids of the CAs as
             space and/or comma separated list.

             **Examples:**

             * `1, 3, 4`
             * `1 3 4`

            Applies to AP and STA."
        ::= { cfgLdap 4 }

    cfgLdapUserBaseDn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The Searchbase for LDAP User Base DN Retrieval

             This is the starting point for the search in the LDAP database.

             Using ldapsearch from openldap-utils, this corresponds
             to option '-b' (searchbase).

             **Example:**

             * 'dc=excompany, dc=ex'

             Applies to AP and STA."
        ::= { cfgLdap 5 }

    cfgLdapAccessDn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The Bind-DN for LDAP User Search

             This is the Distinguished Name (DN) to bind to the LDAP directory
             when searching for the user's DN.

             Using ldapsearch from openldap-utils, this corresponds
             to option '-D'.

             **Example:**

             * 'cn=admin,ou=product accounts,dc=excompany,dc=ex'

             Applies to AP and STA."
        ::= { cfgLdap 6 }

    cfgLdapAccessPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Simple Authentication Password for LDAP User Search

             This is the password for simple authentication when
             searching for the user's DN.

             Using ldapsearch from openldap-utils, this corresponds
             to option '-w'.

             Applies to AP and STA."
        ::= { cfgLdap 7 }

    cfgLdapAccessFilter OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Search Filter for LDAP User Search

             Using ldapsearch from openldap-utils, this corresponds
             to argument 'filter'.

             The string might have the following placeholder that is
             replaced with the according parameter:
             * '%USER%': username to retrieve role for

             **Example:**

             * `(sAMAccountName=%USER%)`

             Applies to AP and STA."
        ::= { cfgLdap 8 }

    cfgLdapUserRoleAttribute OBJECT-TYPE
        SYNTAX  DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LDAP Attribute Name for User's Role Retrieval

             Attribute name to be used to retrieve
             the user's role.

             **Example:**

             * `memberOf`

             Applies to AP and STA."
        ::= { cfgLdap 9 }

    cfgLdapAdminRoleDn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DN for Role Admin

             Distinguished name for role admin.

             **Example:**

             * 'CN=net_admin,OU=Groups,OU=Company,DC=excompany,DC=ex'

             Applies to AP and STA."
        ::= { cfgLdap 10 }

    cfgLdapMonitorRoleDn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "DN for Role Monitor

             Distinguished name for role monitor.

             **Example:**

             * 'CN=net_operator,OU=Groups,OU=Company,DC=excompany,DC=ex'

             Applies to AP and STA."
        ::= { cfgLdap 12 }

    cfgLdapRequestTimeout OBJECT-TYPE
        SYNTAX Integer32 (0..120)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "LDAP Request Timeout

             Maximum time in seconds allowed for an LDAP request to take.

             Applies to AP and STA."
        ::= { cfgLdap 13 }

    cfgLdapCrlExpiryExtension OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CRL Validity Period Extension in Days

             If set, the validity period of a CRL can be extended by the
             given amount of days.

             * **0** no extension
             * **1-1095** extension days
             * **-1** extend to infinity => ignore CRL expiry

            Applies to AP and STA."
        ::= { cfgLdap 15 }

    cfgLdapTlsControlParams OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to Control TLS Behavior

             * **0x0** all validity checks will be performed
             * **0x1** ignore certificate validity time
             * **0x2** ignore ca certificate
             * **0x4** ignore CRLs
             * **0x8** ignore missing CRLs

            Applies to AP and STA."
        ::= { cfgLdap 16 }

    cfgLdapTlsCiphers OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher String for LDAP

             Specify which OpenSSL ciphers to use for the LDAP connection.

             Please read the user manual and the OpenSSL documentation
             for a list of available ciphers and used syntax.

             Set to 'none' to disable restriction.

             **Examples:**

             * ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384
             * DHE-RSA-AES256-GCM-SHA384
             * ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
             * none

            Applies to AP and STA."
        ::= { cfgLdap 17 }


-- =============================================================================

-- Radsec

    cfgRadsecProxyInstance     OBJECT IDENTIFIER ::= { cfgRadsec 1 }

    cfgRadsecProxyInstanceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgRadsecProxyInstanceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadsecProxy Instance Configuration"
        ::= { cfgRadsecProxyInstance 1 }

    cfgRadsecProxyInstanceTableEntry OBJECT-TYPE
        SYNTAX  CfgRadsecProxyInstanceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadsecProxy Instance Entry"
        INDEX { cfgRadsecProxyInstIndex }
        ::= { cfgRadsecProxyInstanceTable 1 }

    CfgRadsecProxyInstanceTableSeq ::=
        SEQUENCE {  cfgRadsecProxyInstIndex Integer32,
                    cfgRadsecProxyInstEnabled INTEGER,
                    cfgRadsecProxyInstInstanceId Integer32,
                    cfgRadsecProxyInstLocalAddress DisplayString,
                    cfgRadsecProxyInstLocalAuthSrvPort Integer32,
                    cfgRadsecProxyInstLocalAcctSrvPort Integer32,
                    cfgRadsecProxyInstLocalSecret DisplayString
                 }

    cfgRadsecProxyInstIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadsecProxy Instance Entry Index"
        ::= { cfgRadsecProxyInstanceTableEntry 1 }

    cfgRadsecProxyInstEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Radsec Proxy Instance

            Enable or disable a RadSec Proxy instance.
            The instance is only enabled if it has a valid reference
            to an enabled RadSec Proxy upstream server.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 2 }

    cfgRadsecProxyInstInstanceId OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadsecProxy Instance ID

            Reference to the upstream servers ID's in the
            `cfgRadsecProxyUpstreamServerTable` with the
            same value in `cfgRadsecProxyUpSrvInstanceId`.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 3 }

    cfgRadsecProxyInstLocalAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(7..18))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadsecProxy Local Address

            The local listen IP address of the RadSec Proxy.
            This could either be localhost `127.0.0.1/32` when a
            using enterprise encryption on this AP or a bind address
            where the RadSec Proxy receives authentication or
            accounting requests from other AP's in the same network.

            For example `192.168.3.22/24` in CIDR notation to allow
            incoming requests from any AP in the same `/24` subnet.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 4 }

    cfgRadsecProxyInstLocalAuthSrvPort OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadsecProxy Local Authentication Server Port

            The local listening port for authentication
            requests. Set this entry to `-1` to disable it.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 5 }

    cfgRadsecProxyInstLocalAcctSrvPort OBJECT-TYPE
        SYNTAX Integer32 (-1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadsecProxy Local Accounting Server Port

            The local listening port for accounting
            requests. Set this entry to `-1` to disable it.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 6 }

    cfgRadsecProxyInstLocalSecret OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadsecProxy Local Server Secret

            The password for incoming authentication or
            accounting requests. The same value is used for
            both protocols.

            Applies to AP"
        ::= { cfgRadsecProxyInstanceTableEntry 7 }

-- -----------------------------------------------------------------------------

    cfgRadsecProxyUpstreamServer     OBJECT IDENTIFIER ::= { cfgRadsec 2 }

    cfgRadsecProxyUpstreamServerTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgRadsecProxyUpstreamServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadSec Proxy Upstream Server Configuration"
        ::= { cfgRadsecProxyUpstreamServer 1 }

    cfgRadsecProxyUpstreamServerTableEntry OBJECT-TYPE
        SYNTAX  CfgRadsecProxyUpstreamServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadSec Proxy Upstream Server Entry"
        INDEX { cfgRadsecProxyUpSrvIndex }
        ::= { cfgRadsecProxyUpstreamServerTable 1 }

    CfgRadsecProxyUpstreamServerTableSeq ::=
        SEQUENCE {  cfgRadsecProxyUpSrvIndex Integer32,
                    cfgRadsecProxyUpSrvEnabled INTEGER,
                    cfgRadsecProxyUpSrvInstanceId Integer32,
                    cfgRadsecProxyUpSrvAuthAddress DisplayString,
                    cfgRadsecProxyUpSrvAcctAddress DisplayString,
                    cfgRadsecProxyUpSrvPort Integer32,
                    cfgRadsecProxyUpSrvSecret DisplayString,
                    cfgRadsecProxyUpSrvCaCertId Integer32,
                    cfgRadsecProxyUpSrvClientCertId Integer32,
                    cfgRadsecProxyUpSrvClientKeyId Integer32,
                    cfgRadsecProxyUpSrvRealms DisplayString
                 }

    cfgRadsecProxyUpSrvIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RadSec Proxy Upstream Server Entry Index"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 1 }

    cfgRadsecProxyUpSrvEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable RadSec Proxy Upstream Server

            Enable or disable a RadSec Proxy upstream server.
            The upstream server is only enabled if it has a valid reference
            to an enabled RadSec Proxy instance.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 2 }

    cfgRadsecProxyUpSrvInstanceId OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Proxy Upstream Server Instance ID

            Reference to the instance ID's in the `cfgRadsecProxyInstanceTable`
            with the same value in `cfgRadsecProxyInstInstanceId`.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 3 }

    cfgRadsecProxyUpSrvAuthAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Authentication Address

            IP address or FQDN of the RadSec server for forwarding
            authentication requests.

            Set the value to `0.0.0.0` to disable the authentication server
            and to use it only for accounting.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 4 }

    cfgRadsecProxyUpSrvAcctAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Accounting Address

            IP address or FQDN of the RadSec server for forwarding
            accounting requests.

            Set the value to `0.0.0.0` to disable the accounting server
            and to use it only for authentication.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 5 }

    cfgRadsecProxyUpSrvPort OBJECT-TYPE
        SYNTAX Integer32 (1..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Port

            The default RadSec server authentication port is 2083.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 6 }

    cfgRadsecProxyUpSrvSecret OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Secret

            Password to connect to the specified RadSec server.
            The shared secret is used to allow the authenticator to communicate
            with the server, it is not used to authenticate clients.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 7 }

    cfgRadsecProxyUpSrvCaCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Certificate Authority (CA) IDs

            Reference to the CA certificate.
            If more CA needs to be referenced,
            they must be combined in the same file.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 8 }

    cfgRadsecProxyUpSrvClientCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Client Certificate ID

            Reference to the client certificate

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 9 }

    cfgRadsecProxyUpSrvClientKeyId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Client Key ID

            Reference to the private Client Key which should be used.

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 10 }

    cfgRadsecProxyUpSrvRealms OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RadSec Upstream Server Realm Identification

            A received Access-Request is checked against the defined realms.
            This is done by looking at the Username attribute in the request.

            **Example:** username@westermo.com

            The proxy will match against the blocks in the order they are
            specified, using the first match if  any. If no realm matches,
            the proxy will simply ignore the request.

            To accept all request, define `*` as realm.
            Multiple realms can be defined in a comma and/or space separated list.
            If the realm name starts with a `/` the name is treated as a regular
            expression. It may optionally end with a '/'.

            **Examples:**

             * **any:** *
             * **single domain:** westermo.com
             * **regexp:** /@westermo\.com$/

            Applies to AP"
        ::= { cfgRadsecProxyUpstreamServerTableEntry 11 }

-- =============================================================================

-- Stunnel

    cfgStunnelGlobal      OBJECT IDENTIFIER ::= { cfgStunnel 1 }

    cfgStunnelGlobalEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Enable stunnel daemon"
        ::= { cfgStunnelGlobal 1 }

    cfgStunnelGlobalLogLevel OBJECT-TYPE
        SYNTAX INTEGER { emerg(0), alert(1), crit(2), err(3), warning(4), notice(5), info(6), debug(7) }
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "**TECHPREVIEW:** Log level for stunnel daemon.

            Default is `notice(5)`."
        ::= { cfgStunnelGlobal 4 }

-- ----------------------------------------------------------------------------

    cfgStunnelInstanceTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgStunnelInstanceTableSeq
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Stunnel Instance Configuration"
        ::= { cfgStunnel 2 }

    cfgStunnelInstanceTableEntry OBJECT-TYPE
        SYNTAX CfgStunnelInstanceTableSeq
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
            "Stunnel Instance Entry"
        INDEX { cfgStunnelInstanceIndex }
        ::= { cfgStunnelInstanceTable 1 }

    CfgStunnelInstanceTableSeq ::=
        SEQUENCE {  cfgStunnelInstanceIndex Integer32,
                    cfgStunnelInstEnabled INTEGER,
                    cfgStunnelInstMode INTEGER,
                    cfgStunnelInstListenAddress DisplayString,
                    cfgStunnelInstDestinationAddress DisplayString,
                    cfgStunnelInstTlsCertId Integer32,
                    cfgStunnelInstTlsCaIds DisplayString,
                    cfgStunnelInstVerificationMode INTEGER,
                    cfgStunnelInstTlsTrustAnchorCerts DisplayString,
                    cfgStunnelInstTlsPeerIdentities DisplayString
                 }

    cfgStunnelInstanceIndex OBJECT-TYPE
        SYNTAX Integer32 (0..7)
        MAX-ACCESS not-accessible
        STATUS current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgStunnelInstanceTableEntry 1 }

    cfgStunnelInstEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "**TECHPREVIEW:** Enable this server"
        ::= { cfgStunnelInstanceTableEntry 2 }

    cfgStunnelInstMode OBJECT-TYPE
        SYNTAX INTEGER { server(0), client(1) }
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance Mode

             * **server(0)** Instance acts as TLS server, may accept
                             connections from multiple clients.
             * **client(1)** Instance acts as TLS client, may connect
                             to one server at a time."
        ::= { cfgStunnelInstanceTableEntry 3 }

    cfgStunnelInstListenAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance Listen Address

            If only port is supplied, the instance is accessible from all local
            IP addresses.

            Corresponds to stunnel's `accept` config parameter."
        ::= { cfgStunnelInstanceTableEntry 10 }

    cfgStunnelInstDestinationAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance Destination Address

            Hostname/IP-address and/or port to which this stunnel instance
            connects.

            If only port is supplied, the service to which stunnel connects
            needs to be running on localhost.

            Corresponds to stunnel's `connect` config parameter."
        ::= { cfgStunnelInstanceTableEntry 15 }

    cfgStunnelInstTlsCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance Certificate ID

             Reference ID of certificate in Cert-Store to be used
             as TLS end-node/leaf certificate. Corresponds to certificate
             passed in stunnel's `cert` config parameter.

             If `cfgStunnelInstMode` is **`server(0)`**, this param is required,
             otherwise, it is only needed if the server requires client
             authentication.

             Depending on the client's configuration, the entire
             certificate chain must be available. Additionally required
             certificates can be passed via `cfgStunnelInstTlsCaIds`."
        ::= { cfgStunnelInstanceTableEntry 20 }

    cfgStunnelInstTlsCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance CA Certificate IDs

             Set to `-1` to use stunnel without CA certificate.
             Multiple certificates may be referenced by writing the
             ids of the certificates as space and/or comma separated list.

             The configured CA certificates will be concatenated to
             `cfgStunnelInstTlsCertId` and passed to stunnel's `cert`
             config parameter.

             **Examples:**

             * `-1`
             * `12`
             * `1, 3, 4`
             * `1 3 4`"
        ::= { cfgStunnelInstanceTableEntry 21 }

    cfgStunnelInstVerificationMode OBJECT-TYPE
        SYNTAX INTEGER { none(0), peer(1), chain(2), both(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance Verification Mode

             Defines whether peers must authenticate themselves.

             Default is **`none(0)`**. For all other values, the corresponding
             certificate(s) need to be specified in `cfgStunnelInstTlsCaIds`.

             This parameter maps to the boolean `verifyPeer` and `verifyChain`
             in the stunnel config file.

             * **none(0)** (default): Instance accepts all connections.
             * **peer(1)**: The peer certificate must be in a locally installed
                            certificate file.
             * **chain(2)**: Verify the peer's certificate chain. I.e. peer's
                             certificate needs to be signed by trusted root CA.
             * **both(3)**: **peer(1)** and **chain(2)** apply at the same
                            time.
            "
        ::= { cfgStunnelInstanceTableEntry 22 }

    cfgStunnelInstTlsTrustAnchorCerts OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance TLS Trust Anchor Certificates

             Set to `-1` to use without trust anchor certificates.
             Multiple certificates may be referenced by writing the
             ids of the certificates as space and/or comma separated list.

             Different certificates need to be supplied depending on
             the value of `cfgStunnelInstVerificationMode`:

             * **none(0)**: No certificates are needed / loaded.
             * **peer(1)**: Peer leaf certificate(s) must be supplied.
             * **chain(2)**: Entire certificate chain of peer's signatory entity
                             must be supplied (e.g. intermediate + root CA).
             * **both(3)**: Both must be supplied.

             The concatenated certificates will be passed in stunnel's `CAfile`
             configuration parameter.

             **Examples:**

             * `-1`
             * `12`
             * `1, 3, 4`
             * `1 3 4`"
        ::= { cfgStunnelInstanceTableEntry 23 }

    cfgStunnelInstTlsPeerIdentities OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Stunnel Instance TLS Peer Identities

             List of IP addresses and/or hostnames, which the peer certificate's
             CN or SAN must contain. Check is only performed if
             `cfgStunnelInstVerificationMode` is nonzero.

             Set to `-1` to not verify peer identities. Multiple hostnames
             and/or IP addresses may be supplied by writing them as a
             space and/or comma separated list.

             When configuring a client in a regular PKI setup, it is strongly
             recommended to supply the server host name and/or IP address
             corresponding to certificate CN or SAN.

             Maps to stunnel's `checkHost` and `checkIP` configuration
             parameters.

             **Examples:**

             * `-1`
             * `example.com`
             * `192.168.1.55`
             * `some.example.com 192.168.1.32`
             * `192.168.1.32, example.com, westermo.com`"
        ::= { cfgStunnelInstanceTableEntry 24 }

-- *****************************************************************************

-- RPCs Remote Procedure Calls
-- ===========================

-- Configuration Management Control

    rpcCfgRevert OBJECT-TYPE
        SYNTAX INTEGER { errorAll(-1), nop(0), all(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "In case there are any changes in the configuration section, which
             are not applied yet, they can be all reverted by writing **all(1)**
             to this parameter.

             Reading this parameter will show the status of the last RPC. A
             value less than 0 means an error occurred. A value of 0 is
             returned if the revert process was successful.

             Applies to AP and STA."
        ::= { rpcConfiguration 1 }

    rpcCfgApply OBJECT-TYPE
        SYNTAX INTEGER { errorAll(-1), nop(0), all(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "All changes to any parameter in the configuration section have to
             be applied before they come into operation. To apply all new
             parameters to the device, set this parameter to **all(1)**.

             Reading this parameter will show the status of the apply process.
             A value less then 0 indicates that an error occurred during
             the last apply process, **nop(0)** means no operation and indicates
             that no apply process is in operation and no error has occurred.
             The return value all(1) means the apply process is still running.

             Applies to AP and STA."
        ::= { rpcConfiguration 2 }

    rpcCfgFile OBJECT-TYPE
        SYNTAX INTEGER { errorImport(-2), errorExport(-1), nop(0), export(1), import(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Export or import a configuration to or from a file respectively.

             Please refer to `setCfgFileUrl` for more information on how
             to set the configuration file.

             Reading this parameter will show the status of the process. A value
             less than 0 indicates the occurrence of an error during the last
             process, **nop(0)** means no operation and indicates that no
             process is in operation and no error has occurred. A return value
             greater than 0 means the process is still running.

             Applies to AP and STA."
        ::= { rpcConfiguration 4 }

-- =============================================================================

  -- Firmware

     rpcFwFlash OBJECT-TYPE
        SYNTAX INTEGER { errorFlash(-2), errorDownload(-1), nop(0), flash(2), flashWithConfig(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Start Download/Flash of a New Firmware

             To flash a new firmware to the device, define a valid URL
             accessible by the device. Change the firmware URL parameter
             `setFwFileUrl` in the settings section, if needed.

             * Writing **flash(2)** to this parameter will download and validate
               the new firmware file. if the downloaded file is recognized as a
               valid firmware for this device, it will be flashed to the file
               system of the device.
             * Writing **flashWithConfig(3)** to this parameter will download
               the firmware and the custom config defined with `setCfgFileUrl`
               and validate the new firmware file. If the download is
               recognized as a valid firmware for this device, it will
               be written to the file system of the device. The supplied
               custom config will be applied after the upgrade.

             Reading this parameter will return the status of the firmware flash
             process. A value of **errorFlash(-2)** indicates that the flash
             process failed during writing. A return value of
             **errorDownload(-1)** indicates the occurrence of an error during
             download or validation of the firmware/config. A value of
             **flash(2)** indicates that the device is currently writing the
             firmware to the file system.

             Applies to AP and STA."
        ::= { rpcFirmware 1 }

-- =============================================================================

  -- System

     rpcSysReboot OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reboot system after n seconds.

             Applies to AP and STA."
        ::= { rpcSystem 1 }

     rpcSysFactoryReset OBJECT-TYPE
        SYNTAX INTEGER { nop(0), reset(1), resetAndHalt(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Factory Reset

             Perform a factory reset and reboot the device. This will reset
             device configuration, including administrator password and
             certificates, to its default state.

             Writing **reset(1)** the device will reboot after resetting.

             **Note:** You will not be able to communicate with the device
             until the factory reset has finished and the device has been
             rebooted.

             Writing **resetAndHalt(2)** will halt the device after resetting
             and shutting down.

             Applies to AP and STA."
        ::= { rpcSystem 2 }

     rpcSysErrorReset OBJECT-TYPE
        SYNTAX INTEGER { nop(0), reset(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Error Reset

             Writing **reset(1)** to this parameter will reset all logged
             warning and errors of the system. The device LEDs will indicate
             normal operating state after result.

             Applies to AP and STA."
        ::= { rpcSystem 3 }

    rpcSysKernelLogReset OBJECT-TYPE
        SYNTAX INTEGER { errorReset(-1), nop(0), reset(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Reset Kernel Logs

             * Writing **reset(1)** to this parameter will clear all kernel logs.
             * Reading this parameter will show the status of the process.
               A **nop(0)** means no operation and points out that there is no
               process in operation. In case the return value is greater then 0
               the process is still running.
             * A negative return value (-1) indicates that something went wrong
               while resetting the kernel logs.

             Applies to AP and STA."
        ::= { rpcSystem 4 }

-- =============================================================================

  -- Certificate

    rpcCrtFile OBJECT-TYPE
        SYNTAX INTEGER { errorValidate(-4), errorDelete(-3), errorExport(-2), errorImport(-1), nop(0), import(1), export(2), delete(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Import, export or delete certificate to or from a file
             respectively

             Please refer to `setCrtFileUrl` for more information on how to set
             the certificate file URL.

             Reading this parameter will show the status of the process.
             A value less than 0 indicates that an error has occurred during
             the last process, **nop(0)** means no operation and points out that
             there is no process in operation and no error has occurred. A
             return value greater than 0 means the process is still running.

             Applies to AP and STA."
        ::= { rpcCertificate 1 }

    rpcCrtRefresh OBJECT-TYPE
        SYNTAX Integer32 (-1)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Refresh Certificates

             This parameter is obsolete and has been replaced with
             `rpcCfgApply`."
        ::= { rpcCertificate 2 }

    rpcCrtCrlTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF RpcCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate CRL RPCs"
        ::= { rpcCertificate 3 }

    rpcCrtCrlTableEntry OBJECT-TYPE
        SYNTAX  RpcCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate CRL RPCs entries"
        INDEX {rpcCrtCrlIndex}
        ::= { rpcCrtCrlTable 1 }

    RpcCrtCrlTableSeq ::=
        SEQUENCE { rpcCrtCrlIndex Integer32,
                   rpcCrtCrlGet INTEGER
                 }

    rpcCrtCrlIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { rpcCrtCrlTableEntry 1 }


    rpcCrtCrlGet OBJECT-TYPE
        SYNTAX INTEGER { errorImportcrl(-1), nop(0), importcrl(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Import a CA CRL

             * **importcrl(1)**: Import the CRL from `cfgCrtCrlUrl`
               and store it in certificate store to CRL ID corresponding to the
               `cfgCrtCrlCaId`.

             **Note:** The CA CRL must be in the DER format.

             Applies to AP and STA.
            "
        ::= { rpcCrtCrlTableEntry 2 }

    rpcCrtAttribute OBJECT-TYPE
        SYNTAX INTEGER { errorWrite(-2), errorRead(-1), nop(0), read(1), write(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Read/Write a certificate attribute

            To read an attribute the `setCrtFileId`, `setCrtFileType` and
            `setCrtAttributeKey` need to be set. After call this rpc the value
            is available in `setCrtAttributeValue`.

            To write an attribute the `setCrtFileId`, `setCrtFileType`,
            `setCrtAttributeKey` and `setCrtAttributeValue` need to be set.

            Applies to AP and STA."
        ::= { rpcCertificate 4 }

-- =============================================================================

  -- Report

-- =============================================================================

  -- Driver

    rpcDrvTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF RpcDrvTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RPC driver module"
        ::= { rpcDriver 1 }

    rpcDrvTableEntry OBJECT-TYPE
        SYNTAX  RpcDrvTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "RPC driver module"
        INDEX {rpcDrvIndex}
        ::= { rpcDrvTable 1 }

    RpcDrvTableSeq ::=
        SEQUENCE {  rpcDrvIndex Integer32,
                    rpcDrvName DisplayString,
                    rpcDrvDfsSimulateRadar INTEGER
                 }

    rpcDrvIndex OBJECT-TYPE
        SYNTAX Integer32 (0..1)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { rpcDrvTableEntry 1 }

    rpcDrvName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Radio Device

             Applies to AP."
        ::= { rpcDrvTableEntry 2 }

    rpcDrvDfsSimulateRadar OBJECT-TYPE
        SYNTAX INTEGER { nop(0), fire(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Simulate Radar Detection on the Current Channel

             Applies to AP."
        ::= { rpcDrvTableEntry 5 }

-- =============================================================================

  -- SCEP

    rpcScepTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF RpcScepTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SCEP RPCs"
        ::= { rpcScep 1 }

    rpcScepTableEntry OBJECT-TYPE
        SYNTAX  RpcScepTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SCEP RPCs"
        INDEX {rpcScepIndex}
        ::= { rpcScepTable 1 }

    RpcScepTableSeq ::=
        SEQUENCE { rpcScepIndex Integer32,
                   rpcScepGetCaCrt INTEGER,
                   rpcScepEnroll INTEGER
                 }

    rpcScepIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { rpcScepTableEntry 1 }

    rpcScepGetCaCrt OBJECT-TYPE
        SYNTAX INTEGER { error(-1), done(0), start(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Start SCEP getca for SCEP entry in `cfgScepTable`"
        ::= { rpcScepTableEntry 2 }

    rpcScepEnroll OBJECT-TYPE
        SYNTAX INTEGER { reerror(-3), serror(-2), eerror(-1), done(0), start(1), stop(2), reenroll(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SCEP enroll/re-enroll

             Writing this value will:

             * **start(1)** start SCEP enroll
             * **reenroll(3)** start SCEP re-enroll
             * **stop(2)** stop SCEP enroll or re-enroll

             for corresponding SCEP entry in `cfgScepTable`.

             Writing **reenroll(3)** to this value will start SCEP re-enroll
             process for corresponding SCEP entry in `cfgScepTable`.

             Reading this value will return:

             * **start(1)** as long as the enrollment is in process
             * **reenroll(3)** as long as the re-enrollment is in process
             * **done(0)** when enrollment or re-enrollment has finished
             * **eerror(-1)** when enrollment failed
             * **serror(-2)** when stopping enrollment or re-enrollment failed
             * **reerror(-3)** when re-enrollment failed
            "
        ::= { rpcScepTableEntry 3 }

-- =============================================================================

  -- Cellular

    rpcCellModuleInit OBJECT-TYPE
        SYNTAX INTEGER { nop(0), init(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Initialize Cellular Module

             This initialization must be performed once to enable
             QMI (Qualcomm MSM Interface).
             The configuration will be stored in non-volatile memory.

             Read the status from `hwCellModuleInitialized` to determine if
             initialization is required.

             * **init(1):** Initialize module.
                            After the module has been initialized, a restart is
                            required for the module to become active."
        ::= { rpcCellular 2 }

    rpcCellFwUpgrade OBJECT-TYPE
        SYNTAX INTEGER { error(-1), nop(0), upgrade(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Upgrade Cellular Module

             Before starting a firmware upgrade of the cellular module, define a
             valid URL, which is accessible by the device. This URL can be
             specified by `setCellFwUrl`.

             Writing **upgrade(1)** to this parameter downloads the firmware
             from the specified URL and upgrades the cellular module.

             This RPC parameter follows the standard behaviour, thus a readout
             indicates the status of the upgrade process. Whilst the upgrade is
             running, **upgrade(1)** is returned. Otherwise, it returns
             **nop(0)** or **error(-1)** to indicate that the upgrade is
             complete or failed.

             The device has to be rebooted after successfully flashing for the
             upgrade to take effect."
        ::= { rpcCellular 3 }

    rpcCellFotaUpgrade OBJECT-TYPE
        SYNTAX INTEGER { error(-1), nop(0), upgrade(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "FOTA Upgrade Cellular Module

            The Firmware Over The Air (FOTA) upgrade for the cellular module
            checks for the availability of a new firmware package
            and installs it.

            Check the `hwCellFwVersionPreferred` status if a firmware upgrade
            is required.

            By default the firmware package is downloaded from a
            Westermo web service. If the device operates in a private network
            without internet access, the URL `setCellFotaUrl` must be set
            to override the public domain with a local web server.

            Please contact support for instructions on how to set up
            the web server and obtain the required fw packages.

            **NOTE**: The FOTA upgrade requires a cellular connection.
            The firmware download may incur additional
            data subscription charges.

            Writing **upgrade(1)** to this parameter will download
            the firmware and put the module into download mode.
            The upgrade will start automatically if the download
            is successful. During the download and upgrade,
            remote access is not available. The unit will reboot
            automatically and connectivity will be restored.

            The parameter returns **error(-1)** if the download fails.
            After the reboot the parameter will return **nop(0)**.
            To check that the firmware upgrade is complete,
            `hwCellFwVersionPreferred` should return **true(1)**.

            **IMPORTANT: Do not turn off the unit during the cellular
            firmware is being upgraded. The upgrade may take several
            minutes and remote access will be restored when it is complete.
            If there is a power failure during the upgrade, the module will
            attempt to restore the previous firmware."
        ::= { rpcCellular 4 }

-- =============================================================================

  -- Partition Hashes

    rpcPartGenerateHashes OBJECT-TYPE
        SYNTAX INTEGER { nop(0), generate(1), delete(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Generate Hashes of all Partitions

             These hashes may be used to assert the integrity of the partitions.

             Writing this value will:

             * **generate(1)** Generate the partition hash information
             * **delete(2)** Erase the partition hash information
            "
        ::= { rpcPartitions 1 }

-- *****************************************************************************

-- Settings
-- ========

-- Configuration

    setCfgFileUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Configuration File URL

            The URL defines the location of the configuration file
            where it will be downloaded from or uploaded to when using
            `rpcCfgFile`.

            For import files to the device the TFTP and HTTP/HTTPS protocols are
            supported. For export from the device to a server only the
            TFTP protocol is supported.

            Allowed characters are [a-zA-Z0-9] and ._-~. Additionally the URL
            can contain spaces which will be encoded by the device.
            All other character need to be encoded by the user.

            **Examples:**

            * tftp://192.168.1.1/device.cfg
            * http://192.168.1.1/device.cfg
            * https://192.168.1.1/device.cfg

            **Note:** If you use the HTTPS protocol it is highly recommended
            to install the TLS Client CA Certificate on the device.
            Otherwise the device will connect to any web server which use TLS,
            but the connection must be considered insecure.
            See `setTlsClient` for more information."
        ::= { setConfiguration 1 }

    setCfgFileFormat OBJECT-TYPE
        SYNTAX INTEGER { snmp(0), cli(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Configuration File Format

             This parameter specifies which format shall be used to export the
             current configuration.

             * **snmp(0)** A flat list of the configuration parameters in an
                           SNMP-based format.
             * **cli(1)** A hierarchical structure of the configuration
                          parameters in the way they are used in the CLI.

             **Note:** Because the configuration format is automatically
             recognised whilst importing configurations, this parameter has no
             influence in this case."
        ::= { setConfiguration 4 }

    setCfgFileType OBJECT-TYPE
        SYNTAX INTEGER { standard(0), cyber(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Configuration File Type

            This parameter specifies the type of the configuration file and
            how to handle the confguration file by the `rpcCfgFile`.

            * **standard(0)** Plain text configuration file.
            * **cyber(1)** Encrypted configuration file using
                           `setCfgFilePassword`."
        ::= { setConfiguration 5 }

    setCfgFilePassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Configuration File Password

            This parameter is only needed for encrypted configuration files
            (when `setCfgFileType` is set to **cyber(1)**).

            It specifies the password used to encrypt/decrypt the
            configuration file during import/export."
        ::= { setConfiguration 7 }

-- =============================================================================

-- Wireless

    setWlanDeviceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SetWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Hardware Modules"
        ::= { setWireless 1 }

    setWlanDeviceTableEntry OBJECT-TYPE
        SYNTAX  SetWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Hardware Module"
        INDEX {setWlanDevIndex}
        ::= { setWlanDeviceTable 1 }

    SetWlanDeviceTableSeq ::=
        SEQUENCE {  setWlanDevIndex Integer32,
                    setWlanDevName DisplayString,
                    setWlanDevRfOutput INTEGER,
                    setWlanDevFrequency Integer32,
                    setWlanDevPower Integer32
                 }

    setWlanDevIndex OBJECT-TYPE
        SYNTAX Integer32 (0..2)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { setWlanDeviceTableEntry 1 }

    setWlanDevName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Device

             Applies to AP and STA."
        ::= { setWlanDeviceTableEntry 2 }

    setWlanDevRfOutput OBJECT-TYPE
        SYNTAX INTEGER { interfaceDisabled(-1), rfOutputOff(0), rfOutputOn(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "RF Output

            * **interfaceDisabled(-1)** The interface is disabled. It is not
                                        possible to change this setting.
            * **rfOutputOff(0)** Set the wlan interface down, stop transmitting.
            * **rfOutputOn(1)** Set the wlan interface up, start transmitting.

             Applies to AP and STA. 802.11n products only."
        ::= { setWlanDeviceTableEntry 3 }

    setWlanDevFrequency OBJECT-TYPE
        SYNTAX Integer32 (2300..6300)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Frequency in MHz

             Set and get the operating frequency of the device (radio).

             Set frequency is supported on 802.11n products only.

             Applies to AP and STA."
        ::= { setWlanDeviceTableEntry 6 }

    setWlanDevPower OBJECT-TYPE
        SYNTAX Integer32 (0..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Output Power

             Output power as effective isotropic radiated power (EIRP) in dBm
             including antenna gain.

             Applies to AP and STA. 802.11n products only."
        ::= { setWlanDeviceTableEntry 8 }

     setWlanDbgTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SetWlanDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Handoff Debug Parameters"
        ::= { setWireless 6 }

    setWlanDbgTableEntry OBJECT-TYPE
        SYNTAX  SetWlanDbgTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Handoff Debug Parameters Entry"
        INDEX {setWlanDbgIndex}
        ::= { setWlanDbgTable 1 }

    SetWlanDbgTableSeq ::=
        SEQUENCE {  setWlanDbgIndex Integer32,
                    setWlanDbgIfaceName DisplayString,
                    setWlanDbgHandoff INTEGER,
                    setWlanDbgScan INTEGER,
                    setWlanDbgMlme INTEGER,
                    setWlanDbgEvents INTEGER,
                    setWlanDbgBeaconrssi INTEGER,
                    setWlanDbgAckrssi INTEGER,
                    setWlanDbgBeaconfiltered INTEGER,
                    setWlanDbgRatelimit INTEGER,
                    setWlanDbgBeacontsf INTEGER,
                    setWlanDbgRange INTEGER,
                    setWlanDbgReports INTEGER
                 }

    setWlanDbgIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { setWlanDbgTableEntry 1 }

    setWlanDbgIfaceName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the virtual wireless interface.

             Applies to AP and STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 2 }

    setWlanDbgHandoff OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the handoff trap.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 3 }

    setWlanDbgScan OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the scan messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 4 }

    setWlanDbgMlme OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the MLME messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 5 }

    setWlanDbgEvents OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the events messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 6 }

    setWlanDbgBeaconrssi OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the Beacon RSSI messages
            in commissioning syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 7 }

    setWlanDbgAckrssi OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the ACK RSSI messages in
            standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 8 }

    setWlanDbgBeaconfiltered OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the Beacon filtered RSSI
            messages in commissioning syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 9 }

    setWlanDbgRatelimit OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the rate limiter
            messages in standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 10 }

    setWlanDbgBeacontsf OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the Beacon RSSI messages
            in standard syslog. The TS field contains the internal TSF (mactime)
            instead of the system uptime.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 12 }

    setWlanDbgRange OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the distance (range) measurement
            messages in standard syslog.

            **Note:** Distance value is not in meters.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA. 802.11n products only."
        ::= { setWlanDbgTableEntry 13 }

    setWlanDbgReports OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Volatile setting to enable/disable the periodical WLAN
            debug data reporting in standard syslog.

            These log messages are subject to change. DO NOT PARSE!

            Applies to STA."
        ::= { setWlanDbgTableEntry 14 }

-- -----------------------------------------------------------------------------

-- Firmware

    setFwFileUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Firmware File URL

            The URL defines from which location the new firmware will be
            downloaded when using the `rpcFwFlash.`

            Supported protocols are TFTP, HTTP/HTTPS.

            Allowed characters are [a-zA-Z0-9] and ._-~. Additionally the URL
            can contain spaces which will be encoded by the device.
            All other character need to be encoded by the user itself.

            **Examples:**

            * tftp://192.168.1.1/firmware.img
            * http://192.168.1.1/firmware.img
            * https://192.168.1.1/firmware.img

            **Note:** If you use the HTTPS protocol it is highly recommended
            to install the TLS Client CA Certificate on the device.
            Otherwise the device will connect to any web server which uses TLS,
            but the connection must be considered insecure.
            See `setTlsClient` for more information."
        ::= { setFirmware 1 }

    setFwKeepConfig OBJECT-TYPE
        SYNTAX INTEGER { reset(0), keep(1)}
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Try to Import Configuration From the Previous Firmware Version"
        ::= { setFirmware 2 }

-- =============================================================================

-- Certificate

    setCrtFileUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Certificate File URL

            The URL defines the location of the certificate file
            where it will be downloaded from or uploaded to.

            Supported protocols are TFTP, HTTP/HTTPS. For export only
            the TFTP protocol is supported.

            **Examples:**

            * tftp://192.168.1.1/uttpd.crt
            * http://192.168.1.1/uttpd.crt
            * https://192.168.1.1/uttpd.crt

             **Note:** If you use the HTTPS protocol is highly recommended
             to install the TLS Client CA Certificate on the device.
             Otherwise the device will connect to any web server which uses TLS,
             but the connection must be considered insecure.
             See `setTlsClient` for more information."
        ::= { setCertificate 1 }

    setCrtFileSelector OBJECT-TYPE
        SYNTAX Integer32 (-1)
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Field to Select Which File Should be Imported/Exported
                           via `rpcCrtFile`

             This parameter is obsolete and has been replaced with the
             Certificate Store.

             See `setCrtFileId`, `setCrtFileType`, `setCrtAttributeKey`,
             `setCrtAttributeValue` and `setCrtFilePassphrase`."
        ::= { setCertificate 2 }

    setCrtFileFormat OBJECT-TYPE
        SYNTAX INTEGER { pem(0), der(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Set the certificate/key file format for `rpcCrtFile` actions

            * **0** means the imported/exported certificate/key will be in the
            PEM format.
            * **1** means the imported/exported certificate/key will be in the
            DER format."
        ::= { setCertificate 3 }

    setCrtFilePkcs12Passphrase OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Set the PKCS#12 passphrase used to import with
                           `rpcCertFile`

            This parameter is obsolete and has been replaced with
            `setCrtFilePassphrase`"
        ::= { setCertificate 4 }

    setCrtFileId OBJECT-TYPE
        SYNTAX Integer32 (-1..1000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Id of the Certificate

            Define the id of the certificate processed by the `rpcCrtFile`.

            For **export(2)** and **delete(3)** this setting need to be set so
            the right certificate will be processed.

            For **import(1)** this setting can be set to `-1` to automatically
            use the next free id. Otherwise any existing certificate with this
            id will be overwritten.

            This id is then used by the services to reference the desired
            certificate."
        ::= { setCertificate 5 }

    setCrtFileType OBJECT-TYPE
        SYNTAX INTEGER { crl(1), cert(2), key(3), statickey(4), pkcs12(5), pubkey(6) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "File type for the certificate action

            Define the type of the certificate processed by the `rpcCrtFile`.

            * **1**: CRL
            * **2**: Certificate
            * **3**: Private Key
            * **4**: Static Key
            * **5**: PKCS12
            * **6**: Public Key"
        ::= { setCertificate 6 }

    setCrtAttributeKey OBJECT-TYPE
        SYNTAX INTEGER { label(0) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Key of the attribute to read/write

            Select the attribute which would be read/write by the
            `rpcCrtAttribute`.

            * **0**: Label of a certificate"
        ::= { setCertificate 7 }

    setCrtAttributeValue OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Value of the attribute

            This value will be written to the attribute defined by
            `setCrtFileId`, `setCrtFileType` and `setCrtAttributeKey`
            by using the `rpcCrtAttribute`.

            The value read by using the `rpcCrtAttribute` will be available
            here."
        ::= { setCertificate 8 }

    setCrtFilePassphrase OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Set the passphrase used to import with `rpcCertFile`

            This passphrase will be used during the import to decrypt the
            PKCS#12 container data or the private key."
        ::= { setCertificate 9 }

-- -----------------------------------------------------------------------------
-- System

    setSysTime OBJECT-TYPE
        SYNTAX Integer32 (100000..2114384400)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "System time as epoch"
        ::= { setSystem 1 }

    setSysSupportFile OBJECT IDENTIFIER ::= { setSystem 11 }

    setSysSfEncryptionEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Support File Encryption

             If set to **enabled(1)**, the Technical Support File
             is encrypted using `setSysSfEncryptionPassword`."
        ::= { setSysSupportFile 1 }

    setSysSfEncryptionPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Support File Encryption Password

             Used to encrypt the Technical Support File if
             `setSysSfEncryptionEnabled` is **enabled(1)**."
        ::= { setSysSupportFile 2 }

-- -----------------------------------------------------------------------------
-- TechPreview

    setTechPreviewEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Technical Preview

            The Technical Preview allows access to upcoming features that are
            not yet officially released.

            **Note:** This parameter is volatile and is lost after a reboot."
        ::= { setTechPreview 1 }

-- -----------------------------------------------------------------------------

-- TLS Client

    setTlsCltCaIds OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "TLS Client CA Certificate IDs

             Set to -1 to use TLS client without CA certificate.
             Multiple CAs may be referenced by writing the ids of the
             CAs as space and/or comma separated list.

             **Examples:**

             * `-1`
             * `12`
             * `1, 3, 4`
             * `1 3 4`"
        ::= { setTlsClient 1 }

    setTlsCltCrlExpiryExtension OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CRL Validity Period Extension in Days

             If set, the validity period of a CRL can be extended by the
             given amount of days.

             * **0** no extension
             * **1-1095** extension days
             * **-1** extend to infinity => ignore CRL expiry"
        ::= { setTlsClient 3 }

    setTlsCltTlsControlParams OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to Control the TLS Client Behavior

             * **0x0** all validity checks will be performed
             * **0x1** ignore certificate validity time
             * **0x2** ignore ca certificate
             * **0x4** ignore CRLs
             * **0x8** ignore missing CRLs"
        ::= { setTlsClient 4 }

    setTlsCltTlsCiphers OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher String for the TLS Client

             This is an OpenSSL specific configuration option for
             configuring the cipher.

             Please read the user manual and the OpenSSL documentation
             for a list of available ciphers and used syntax.

             Set to 'none' to disable restriction.

             **Examples:**

             * ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384
             * DHE-RSA-AES256-GCM-SHA384
             * ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384
             * none"
        ::= { setTlsClient 5 }

-- -----------------------------------------------------------------------------
-- Cellular

    setCellFwUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Cellular Firmware URL

            This URL specifies where the upgrading process is downloading the
            cellular firmware.

            Supported protocols are: tftp and http.

            **Example:**

            * http://192.168.1.1/firmware.rec"
        ::= { setCellular 1 }

    setCellSimSlot OBJECT-TYPE
        SYNTAX Integer32 (1..2)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Cellular SIM Slot Selection

            This parameter allows to switch the SIM slot at runtime.

            If the selected slot is already active or no SIM card is
            inserted, no action is performed."
        ::= { setCellular 2 }

    setCellFotaUrl OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Cellular FOTA URL

            By default the firmware package is downloaded from a
            Westermo web service. If the device operates in a private network
            without internet access, the URL must be set
            to override the public domain with a local web server.

            Please contact support for instructions on how to set up
            the web server and obtain the required fw packages.
            The package name must be in the specified format,
            the URL points to the package folder.

            **Example:**

            * http://192.168.1.1/path/to/upgrade/packages/"
        ::= { setCellular 3 }

-- *****************************************************************************

-- Hardware
-- ========

  -- System

     hwSysProduct OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Product Type"
        ::= { hwSystem 1 }

     hwSysSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Serial Number of the Product"
        ::= { hwSystem 2 }

     hwSysRevision OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "ERP Revision of the Product"
        ::= { hwSystem 3 }

     hwSysVersion OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the Product"
        ::= { hwSystem 4 }

-- =============================================================================

  -- Network

    hwNetEthernetTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF HwNetEthernetTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Ethernet Network Interfaces"
        ::= { hwNetwork 1 }

    hwNetEthernetTableEntry OBJECT-TYPE
        SYNTAX  HwNetEthernetTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Ethernet Network Interface"
        INDEX {hwNetEthIndex}
        ::= { hwNetEthernetTable 1 }

    HwNetEthernetTableSeq ::=
        SEQUENCE {  hwNetEthIndex Integer32,
                    hwNetEthName DisplayString,
                    hwNetEthAssembled INTEGER,
                    hwNetEthMacAddress DisplayString,
                    hwNetEthOperation INTEGER,
                    hwNetEthSpeed Integer32,
                    hwNetEthHwIndex Integer32
                 }

    hwNetEthIndex OBJECT-TYPE
        SYNTAX Integer32 (0..2)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { hwNetEthernetTableEntry 1 }

    hwNetEthName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Ethernet Interface"
        ::= { hwNetEthernetTableEntry 2 }

    hwNetEthAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Present or Not"
        ::= { hwNetEthernetTableEntry 3 }

    hwNetEthMacAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Ethernet MAC Address"
        ::= { hwNetEthernetTableEntry 4 }

    hwNetEthOperation OBJECT-TYPE
        SYNTAX INTEGER { down(0), up(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Ethernet Interface Plugged or Unplugged"
        ::= { hwNetEthernetTableEntry 5 }

    hwNetEthSpeed OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Ethernet Speed in Mbps"
        ::= { hwNetEthernetTableEntry 6 }

    hwNetEthHwIndex OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Index of MAC-Address / Interface

             The physical address of the Ethernet interface of the base board,
             since not all products are assembled the same way this is to
             describe how the wiring is done."
        ::= { hwNetEthernetTableEntry 7 }

-- =============================================================================

  -- Wireless

    hwWlanDeviceTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF HwWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hardware information of the wireless LAN Devices"
        ::= { hwWireless 1 }

    hwWlanDeviceTableEntry OBJECT-TYPE
        SYNTAX  HwWlanDeviceTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless LAN Devices"
        INDEX {hwWlanDevIndex}
        ::= { hwWlanDeviceTable 1 }

    HwWlanDeviceTableSeq ::=
        SEQUENCE {  hwWlanDevIndex Integer32,
                    hwWlanDevAssembled INTEGER,
                    hwWlanDevType DisplayString,
                    hwWlanDevSerial DisplayString,
                    hwWlanDevRevision Integer32,
                    hwWlanDevVersion Integer32,
                    hwWlanDevPcbId Integer32,
                    hwWlanDevAssemblyId Integer32,
                    hwWlanDevMacAddress DisplayString,
                    hwWlanDevAntennaProfileId Integer32,
                    hwWlanDevAntennaGain Integer32,
                    hwWlanDevCableLoss Integer32
                 }

    hwWlanDevIndex OBJECT-TYPE
        SYNTAX Integer32 (0..2)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { hwWlanDeviceTableEntry 1 }

    hwWlanDevAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Wireless Device Present or Not"
        ::= { hwWlanDeviceTableEntry 2 }

    hwWlanDevType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Type of the Wireless Device"
        ::= { hwWlanDeviceTableEntry 3 }

    hwWlanDevSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Serial Number / Customer Field"
        ::= { hwWlanDeviceTableEntry 4 }

    hwWlanDevRevision OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "ERP Revision of the RF Board"
        ::= { hwWlanDeviceTableEntry 5 }

    hwWlanDevVersion OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the RF board"
        ::= { hwWlanDeviceTableEntry 6 }

    hwWlanDevPcbId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwWlanDeviceTableEntry 7 }

    hwWlanDevAssemblyId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwWlanDeviceTableEntry 8 }

    hwWlanDevMacAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Address"
        ::= { hwWlanDeviceTableEntry 9 }

    hwWlanDevAntennaProfileId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Antenna Profile ID

             Please check the user manual for antenna details."
        ::= { hwWlanDeviceTableEntry 10 }

     hwWlanDevAntennaGain OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Antenna Gain in dBi"
        ::= { hwWlanDeviceTableEntry 11 }

     hwWlanDevCableLoss OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cable Loss in dB"
        ::= { hwWlanDeviceTableEntry 12 }

    hwWlanGlobal     OBJECT IDENTIFIER ::= { hwWireless 2 }

    hwWlanGlblRegulatoryRegionId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Regulatory Region ID

             Applies to AP and STA."
        ::= { hwWlanGlobal 2 }

-- =============================================================================

  -- Base Board

    hwBbType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Product Type of the Base Board"
        ::= { hwBaseBoard 1 }

     hwBbSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Serial Number of the Base Board"
        ::= { hwBaseBoard 2 }

     hwBbRevision OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "ERP Revision of the Base Board"
        ::= { hwBaseBoard 3 }

     hwBbVersion OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the Base Board"
        ::= { hwBaseBoard 4 }

     hwBbPcbId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwBaseBoard 5 }

     hwBbAssemblyId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwBaseBoard 6 }

-- =============================================================================

  -- Interface Board

    hwIfBrdAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Interface Board Present or Not"
        ::= { hwIfaceBoard 1 }

    hwIfBrdType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Product Type of the Interface Board"
        ::= { hwIfaceBoard 2 }

     hwIfBrdSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Serial Number of the Interface Board"
        ::= { hwIfaceBoard 3 }

     hwIfBrdRevision OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "ERP Revision of the Interface Board"
        ::= { hwIfaceBoard 4 }

     hwIfBrdVersion OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the Interface Board"
        ::= { hwIfaceBoard 5 }

     hwIfBrdPcbId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwIfaceBoard 6 }

     hwIfBrdAssemblyId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Hardware Assembly ID"
        ::= { hwIfaceBoard 7 }

  -- Hardware Sensors

    hwSensorTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF HwSensorTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hardware sensor information table."
        ::= { hwSensor 1 }

    hwSensorTableEntry OBJECT-TYPE
        SYNTAX  HwSensorTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hardware Sensor Entry"
        INDEX {hwSensorIndex}
        ::= { hwSensorTable 1 }

    HwSensorTableSeq ::=
        SEQUENCE {  hwSensorIndex Integer32,
                    hwSensorName DisplayString,
                    hwSensorUnit DisplayString,
                    hwSensorValue DisplayString
                 }

    hwSensorIndex OBJECT-TYPE
        SYNTAX Integer32 (0..15)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { hwSensorTableEntry 1 }

    hwSensorName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Hardware Sensor"
        ::= { hwSensorTableEntry 2 }

    hwSensorUnit OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Unit of the Hardware Sensor"
        ::= { hwSensorTableEntry 3 }

    hwSensorValue OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Value of the Hardware Sensor"
        ::= { hwSensorTableEntry 4 }

  -- Cellular (LTE) Module

    hwCellAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Assembled"
        ::= { hwCellular 1 }

    hwCellType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Type"
        ::= { hwCellular 2 }

     hwCellSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Serial Number"
        ::= { hwCellular 3 }

     hwCellImei OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module IMEI Number"
        ::= { hwCellular 4 }

     hwCellFwVersion OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Firmware Version"
        ::= { hwCellular 5 }

     hwCellModuleInitialized OBJECT-TYPE
        SYNTAX INTEGER { false(0), true(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Initialization State"
        ::= { hwCellular 6 }

     hwCellFwVersionPreferred OBJECT-TYPE
        SYNTAX INTEGER { false(0), true(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Firmware Version Preferred State

            The parameter returns **true(1)** if the latest cellular
            firmware is installed. Otherwise it returns **false(0)**
            if a firmware upgrade is available."
        ::= { hwCellular 7 }

     hwCellFwVersionPreferredVersion OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cellular Module Firmware Version Preferred Version"
        ::= { hwCellular 8 }

  -- GNSS Module

    hwGnssAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "GNSS Module Assembled"
        ::= { hwGnss 1 }

    hwGnssType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "GNSS Module Type"
        ::= { hwGnss 2 }

     hwGnssSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "GNSS Module Serial Number"
        ::= { hwGnss 3 }

  -- Power Supply Module

    hwPsAssembled OBJECT-TYPE
        SYNTAX INTEGER { inexistent(0), present(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Power Supply Assembled"
        ::= { hwPowerSupply 1 }

    hwPsType OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Power Supply Type"
        ::= { hwPowerSupply 2 }

     hwPsSerial OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Power Supply Serial Number"
        ::= { hwPowerSupply 3 }

     hwPsInputRange OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Power Supply Input Range

             Reports the input range of the power supply:

             * **POWER_INPUT_RANGE_LOW**: 12V-48V DC
             * **POWER_INPUT_RANGE_WIDE**: 24V-110V DC"
        ::= { hwPowerSupply 4 }


-- *****************************************************************************

-- Software
-- ========

  -- Firmware

     swFwName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Firmware Name"
        ::= { swFirmware 1 }

     swFwVersion OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Firmware Version"
        ::= { swFirmware 2 }

     swFwRevision OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Firmware Revision"
        ::= { swFirmware 3 }

     swFwPackageName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Firmware Package Name

             The name of the firmware package inside the
             combined firmware image. The name consists of the
             platform name and the firmware config.

             **Example:**

             * dt50-sw6
             * dt50-ac
             * dt50-lte"
        ::= { swFirmware 4 }

-- =============================================================================

-- System

    swSysRebootReason OBJECT-TYPE
        SYNTAX INTEGER { coldstart(0), warmstart(1), watchdog(2), oops(3), unknown(9) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "System Reboot Reason"
        ::= { swSystem 1 }

    swSysBootStatus OBJECT-TYPE
        SYNTAX INTEGER { done(0), booting(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The boot status indicates whether the booting sequence of
             the device has been completed."
        ::= { swSystem 2 }

    swSysInitialized OBJECT-TYPE
        SYNTAX INTEGER { false(0), true(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Initial Configuration Status

             This entry reflects the status of the initial configuration. Once
             a first configuration has been applied, its value changes to
             true(1). It can only be reset to false(0) by performing a factory
             reset."
        ::= { swSystem 3 }

    swSysMessageTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwSysMessageTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "System messages (e.g. Errors, Warnings)"
        ::= { swSystem 100 }

    swSysMessageTableEntry OBJECT-TYPE
        SYNTAX  SwSysMessageTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "System message entry"
        INDEX {swSysMsgIndex}
        ::= { swSysMessageTable 1 }

    SwSysMessageTableSeq ::=
        SEQUENCE {  swSysMsgIndex Integer32,
                    swSysMsgPriority INTEGER,
                    swSysMsgCode Integer32,
                    swSysMsgText DisplayString,
                    swSysMsgEpoch Integer32,
                    swSysMsgDate DisplayString
                 }

    swSysMsgIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swSysMessageTableEntry 1 }

    swSysMsgPriority OBJECT-TYPE
        SYNTAX INTEGER { emergency(0), alert(1), critical(2), error(3), warning(4), notice(5), info(6), debug(7) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Message Priority/Level"
        ::= { swSysMessageTableEntry 2 }

    swSysMsgCode OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Message Code"
        ::= { swSysMessageTableEntry 3 }

    swSysMsgText OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Message"
        ::= { swSysMessageTableEntry 4 }

    swSysMsgEpoch OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Message timestamp as Epoch."
        ::= { swSysMessageTableEntry 5 }

    swSysMsgDate OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Message timestamp as date string.

             **Example:**

             * `Sun Feb 20 18:07:53 2022`"
        ::= { swSysMessageTableEntry 6 }

-- =============================================================================

-- Operating System

     swOsName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Operating System Name"
        ::= { swOperatingSystem 1 }

     swOsVersion OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Operating System Version"
        ::= { swOperatingSystem 2 }

     swOsRevision OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Operating System Revision"
        ::= { swOperatingSystem 3 }

     swOsUptime OBJECT-TYPE
        SYNTAX TimeTicks
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Uptime of the Operating System

            This is the time in TimeTicks (hundredth of a second) the
            device has been up and running since the last reboot.

            **Example:**

            456732 means up since 4567.32 seconds

            Applies to AP and STA.
            "
        ::= { swOperatingSystem 4 }

    swOsPartitions     OBJECT IDENTIFIER ::= { swOperatingSystem 101 }

    swOsPartTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwOsPartTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hashes of all Partiton Tables

             These hashes can be used to assert the integrity of all partitions.

             The hashes are not generated automatically.
             To generate them use `rpcPartGenerateHashes`
            "
        ::= { swOsPartitions 1 }

    swOsPartTableEntry OBJECT-TYPE
        SYNTAX  SwOsPartTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Hashes of all Partiton Tables

             These hashes can be used to assert the integrity of all partitions.

             The hashes are not generated automatically.
             To generate them use `rpcPartGenerateHashes`
            "
        INDEX {swOsPartIndex}
        ::= { swOsPartTable 1 }

    SwOsPartTableSeq ::=
        SEQUENCE {  swOsPartIndex Integer32,
                    swOsPartDevice DisplayString,
                    swOsPartLabel DisplayString,
                    swOsPartHash DisplayString
                 }

    swOsPartIndex OBJECT-TYPE
        SYNTAX Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swOsPartTableEntry 1 }

    swOsPartDevice OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The Device of the Partition"
        ::= { swOsPartTableEntry 2 }

    swOsPartLabel OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The Label of the Partition"
        ::= { swOsPartTableEntry 3 }

    swOsPartHash OBJECT-TYPE
        SYNTAX DisplayString (SIZE(32))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "The MD5 Hash of the Partition"
        ::= { swOsPartTableEntry 4 }

-- Driver

    swDrvDfsTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwDrvDfsTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DFS Driver Statistics"
        ::= { swDriver 1 }

    swDrvDfsTableEntry OBJECT-TYPE
        SYNTAX  SwDrvDfsTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "DFS Driver Statistics"
        INDEX {swDrvDfsIndex}
        ::= { swDrvDfsTable 1 }

    SwDrvDfsTableSeq ::=
        SEQUENCE {  swDrvDfsIndex Integer32,
                    swDrvDfsName DisplayString,
                    swDrvDfsPulsesDetected Integer32,
                    swDrvDfsPulsesProcessed Integer32,
                    swDrvDfsRadarDetected Integer32
                 }

    swDrvDfsIndex OBJECT-TYPE
        SYNTAX Integer32 (0..1)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swDrvDfsTableEntry 1 }

    swDrvDfsName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of The Wireless Device

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvDfsTableEntry 2 }

    swDrvDfsPulsesDetected OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Pulses Detected by The Wireless Device

             Applies to AP. 802.11n products only."
        ::= { swDrvDfsTableEntry 3 }

    swDrvDfsPulsesProcessed OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Pulses Processed by The Wireless Device

             Applies to AP. 802.11n products only."
        ::= { swDrvDfsTableEntry 4 }

    swDrvDfsRadarDetected OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Radar Sequences Detected by The Wireless Device

             Applies to AP. 802.11n products only."
        ::= { swDrvDfsTableEntry 5 }

    swDrvCntWlanMacTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwDrvCntWlanMacTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC-Layer Statistics"
        ::= { swDriver 4 }

    swDrvCntWlanMacTableEntry OBJECT-TYPE
        SYNTAX  SwDrvCntWlanMacTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless MAC-Layer Statistics"
        INDEX {swDrvCntWlanMacIndex}
        ::= { swDrvCntWlanMacTable 1 }

    SwDrvCntWlanMacTableSeq ::=
        SEQUENCE {
                swDrvCntWlanMacIndex                     Integer32,
                swDrvCntWlanMacName                      DisplayString,
                swDrvCntWlanMacTxHandlersDrop            Integer32,
                swDrvCntWlanMacTxHandlersQueued          Integer32,
                swDrvCntWlanMacTxHandlersDropUnencrypted Integer32,
                swDrvCntWlanMacTxHandlersDropFragment    Integer32,
                swDrvCntWlanMacTxHandlersDropWep         Integer32,
                swDrvCntWlanMacTxHandlersDropNotAssoc    Integer32,
                swDrvCntWlanMacTxHandlersDropUnauthPort  Integer32,
                swDrvCntWlanMacRxHandlersDrop            Integer32,
                swDrvCntWlanMacRxHandlersQueued          Integer32,
                swDrvCntWlanMacRxHandlersDropNullfunc    Integer32,
                swDrvCntWlanMacRxHandlersDropDefrag      Integer32,
                swDrvCntWlanMacRxHandlersDropShort       Integer32,
                swDrvCntWlanMacTxExpandSkbHead           Integer32,
                swDrvCntWlanMacTxExpandSkbHeadCloned     Integer32,
                swDrvCntWlanMacRxExpandSkbHead           Integer32,
                swDrvCntWlanMacRxExpandSkbHead2          Integer32,
                swDrvCntWlanMacRxHandlersFragments       Integer32,
                swDrvCntWlanMacTxstatusDrop              Integer32
                }

    swDrvCntWlanMacIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swDrvCntWlanMacTableEntry 1 }

    swDrvCntWlanMacName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of The Wireless Device

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 2 }

    swDrvCntWlanMacTxHandlersDrop OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 3 }

    swDrvCntWlanMacTxHandlersQueued OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 4 }

    swDrvCntWlanMacTxHandlersDropUnencrypted OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 5 }

    swDrvCntWlanMacTxHandlersDropFragment OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 6 }

    swDrvCntWlanMacTxHandlersDropWep OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 7 }

    swDrvCntWlanMacTxHandlersDropNotAssoc OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 8 }

    swDrvCntWlanMacTxHandlersDropUnauthPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 9 }

    swDrvCntWlanMacRxHandlersDrop OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 10 }

    swDrvCntWlanMacRxHandlersQueued OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 11 }

    swDrvCntWlanMacRxHandlersDropNullfunc OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 12 }

    swDrvCntWlanMacRxHandlersDropDefrag OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 13 }

    swDrvCntWlanMacRxHandlersDropShort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 14 }

    swDrvCntWlanMacTxExpandSkbHead OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 15 }

    swDrvCntWlanMacTxExpandSkbHeadCloned OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 16 }

    swDrvCntWlanMacRxExpandSkbHead OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 17 }

    swDrvCntWlanMacRxExpandSkbHead2 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 18 }

    swDrvCntWlanMacRxHandlersFragments OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 19 }

    swDrvCntWlanMacTxstatusDrop OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "MAC Debug Entry

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanMacTableEntry 20 }

    swDrvCntWlanWmmTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwDrvWlanCntWmmTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "WMM statistics"
        ::= { swDriver 6 }

    swDrvCntWlanWmmTableEntry OBJECT-TYPE
        SYNTAX  SwDrvWlanCntWmmTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "WMM statistics"
        INDEX {swDrvCntWlanWmmTableIndex}
        ::= { swDrvCntWlanWmmTable 1 }

    SwDrvWlanCntWmmTableSeq ::=
        SEQUENCE {  swDrvCntWlanWmmTableIndex Integer32,
                    swDrvCntWlanWmmName DisplayString,
                    swDrvCntWlanWmmTx Integer32,
                    swDrvCntWlanWmmRx Integer32,
                    swDrvCntWlanWmmShortRetries Integer32,
                    swDrvCntWlanWmmLongRetries Integer32,
                    swDrvCntWlanWmmExceededRetries Integer32
                 }

    swDrvCntWlanWmmTableIndex OBJECT-TYPE
        SYNTAX Integer32 (0..4)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swDrvCntWlanWmmTableEntry 1 }

    swDrvCntWlanWmmName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of The Queue

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 2 }

    swDrvCntWlanWmmTx OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Frames Sent in his Queue

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 3 }

    swDrvCntWlanWmmRx OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Frames Received in This Queue

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 4 }

    swDrvCntWlanWmmShortRetries OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Retries for Frames Shorter Than RTS

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 5 }

    swDrvCntWlanWmmLongRetries OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Retries for Frames Longer Than RTS

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 6 }

    swDrvCntWlanWmmExceededRetries OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Failed Transmissions Due to Exceeding of The Retry Limit

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanWmmTableEntry 7 }


    swDrvConStatTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwDrvConStatTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Connection Status Information."
        ::= { swDriver 8 }

    swDrvConStatTableEntry OBJECT-TYPE
        SYNTAX SwDrvConStatTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Connection Status Information per Station."
        INDEX { swDrvConStatIndex
              }
        ::= { swDrvConStatTable 1 }

    swDrvConStatWlanIf OBJECT-TYPE
        SYNTAX      DisplayString (SIZE(3..17))
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "Volatile Wlan Interface Selector for `swDrvConStatTable`

             Changes made here will be lost upon reconfiguration or a reboot.
             Use `cfgWlanGlblConnectionStatusWlanInterface` to set a persistent
             value which is used during initialisation.

             Specify `all` to get the connection status of all wlan interfaces.

             Applies to AP and STA."
        ::= { swDriver 7 }

    SwDrvConStatTableSeq ::=
        SEQUENCE {  swDrvConStatIndex Integer32,
                    swDrvConStatWlanName DisplayString,
                    swDrvConStatMacName DisplayString,

                    swDrvConStatRxBrExtra DisplayString,
                    swDrvConStatRxBrType DisplayString,
                    swDrvConStatRxBrValue Integer32,
                    swDrvConStatRxBytes Integer32,
                    swDrvConStatRxPackets Integer32,

                    swDrvConStatTxBrExtra DisplayString,
                    swDrvConStatTxBrType DisplayString,
                    swDrvConStatTxBrValue Integer32,
                    swDrvConStatTxBytes Integer32,
                    swDrvConStatTxPackets Integer32,

                    swDrvConStatSigChain0 Integer32,
                    swDrvConStatSigChain1 Integer32,
                    swDrvConStatSigChain2 Integer32,
                    swDrvConStatSigAvgChain0 Integer32,
                    swDrvConStatSigAvgChain1 Integer32,
                    swDrvConStatSigAvgChain2 Integer32,

                    swDrvConStatTxRetries Integer32,
                    swDrvConStatTxFailed Integer32,

                    swDrvConStatCacheNo Integer32,

                    swDrvConStatSigCombined Integer32,
                    swDrvConStatSigAvgCombined Integer32,

                    swDrvConStatSigChain3 Integer32,
                    swDrvConStatSigAvgChain3 Integer32,
                    swDrvConStatConnectedTime Integer32

                 }

    swDrvConStatIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..9)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swDrvConStatTableEntry 1 }

    swDrvConStatWlanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(4..5))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "WLAN Interface Name

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 2 }

    swDrvConStatMacName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..17))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station MAC Address

             In AP mode this is the MAC address of the connected
             client (STA). In client (STA) mode this is the
             MAC address of the AP to which the client is
             connected.

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 3 }

    swDrvConStatRxBrExtra OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Bitrate Details

             This privides the effective RX bitrate in Mbps, and the
             unterlying settings (bandwidth, guard interval, MCS, NSS),
             depending on selected operation mode.

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 4 }

    swDrvConStatRxBrType OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Station RX Bitrate Type

            This information is now available in `swDrvConStatRxBrExtra`."
        ::= { swDrvConStatTableEntry 5 }

    swDrvConStatRxBrValue OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Bitrate Value in Mbps

             Rounded down to integer, for a more detailed representation
             check `swDrvConStatRxBrExtra`.

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 6 }

    swDrvConStatRxBytes OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Bytes

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 7 }

    swDrvConStatRxPackets OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Packets

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 8 }

    swDrvConStatTxBrExtra OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Bitrate Details

             This privides the effective TX bitrate in Mbps, and the
             unterlying settings (bandwidth, guard interval, MCS, NSS),
             depending on selected operation mode.

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 9 }

    swDrvConStatTxBrType OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** Station TX Bitrate Type

            This information is now available in `swDrvConStatTxBrExtra`."
        ::= { swDrvConStatTableEntry 10 }

    swDrvConStatTxBrValue OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Bitrate Value in Mbps

             Rounded down to integer, for a more detailed representation
             check `swDrvConStatTxBrExtra`.

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 11 }

    swDrvConStatTxBytes OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Bytes

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 12 }

    swDrvConStatTxPackets OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Packets

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 13 }

    swDrvConStatSigChain0 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Chain 0 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 14 }

    swDrvConStatSigChain1 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Chain 1 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 15 }

    swDrvConStatSigChain2 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Chain 2 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 16 }

    swDrvConStatSigAvgChain0 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Average Chain 0 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 17 }

    swDrvConStatSigAvgChain1 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Average Chain 1 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 18 }

    swDrvConStatSigAvgChain2 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Average Chain 2 in dBm

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 19 }

    swDrvConStatTxRetries OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Retries

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 20 }

    swDrvConStatTxFailed OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Failed

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvConStatTableEntry 21 }

    swDrvConStatCacheNo OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
            "Station Dump Cache Access Number

             The cache gets refreshed if it is older than 5 seconds.

             Applies to AP and STA. 802.11n products only."
       ::= { swDrvConStatTableEntry 22 }

    swDrvConStatSigCombined OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Combined of All Active Chains in dBm

            Applies to AP and STA."
        ::= { swDrvConStatTableEntry 23 }

    swDrvConStatSigAvgCombined OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Average Combined of All Active Chains in dBm

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 24 }

    swDrvConStatSigChain3 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Chain 3 in dBm

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 25 }

    swDrvConStatSigAvgChain3 OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Signal Average Chain 3 in dBm

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 26 }

    swDrvConStatConnectedTime OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station Connected Time in Seconds

             Applies to AP and STA."
        ::= { swDrvConStatTableEntry 27 }

--------------------------------------------------------------------------------
    swDrvCntWlanTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwDrvCntWlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Dev Counters"
        ::= { swDriver 9 }

    swDrvCntWlanTableEntry OBJECT-TYPE
        SYNTAX  SwDrvCntWlanTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless Dev Counters"
        INDEX {swDrvCntWlanIndex}
        ::= { swDrvCntWlanTable 1 }

    SwDrvCntWlanTableSeq ::=
        SEQUENCE {  swDrvCntWlanIndex Integer32,
                    swDrvCntWlanName DisplayString,
                    swDrvCntWlanAssocSuccess Counter32,
                    swDrvCntWlanAssocFailure Counter32,
                    swDrvCntWlanAssocFailureMaxSta Counter32,
                    swDrvCntWlanNumAssocSta Integer32,
                    swDrvCntWlanEapAuthStarted Counter32,
                    swDrvCntWlanEapAuthFailed Counter32,
                    swDrvCntWlanChannelActive Counter32,
                    swDrvCntWlanChannelBusy Counter32,
                    swDrvCntWlanChannelTransmit Counter32,
                    swDrvCntWlanChannelReceive Counter32,
                    swDrvCntWlanChannelNoise Integer32,
                    swDrvCntWlanEapAuthStartedFT Counter32,
                    swDrvCntWlanEapAuthStartedFILS Counter32,
                    swDrvCntWlanEapAuthStartedPKMSA Counter32,
                    swDrvCntWlanBeaconMiss Counter32,
                    swDrvCntWlanBeaconRx Counter32,
                    swDrvCntWlanApBeaconMiss Counter32,
                    swDrvCntWlanPilotMiss Counter32,
                    swDrvCntWlanPilotRx Counter32
                 }

    swDrvCntWlanIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swDrvCntWlanTableEntry 1 }

    swDrvCntWlanName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Wireless Interface"
        ::= { swDrvCntWlanTableEntry 2 }

    swDrvCntWlanAssocSuccess OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Successful Associations

             802.11n products only."
        ::= { swDrvCntWlanTableEntry 4 }

    swDrvCntWlanAssocFailure OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Unsuccessful Associations

             802.11n products only."
        ::= { swDrvCntWlanTableEntry 5 }

    swDrvCntWlanAssocFailureMaxSta OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Times the Maximum Number of Stations has been Exceeded

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 6 }

    swDrvCntWlanNumAssocSta OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Associated STA

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 7 }

    swDrvCntWlanEapAuthStarted OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of EAP Authentication Sessions Started Since AP Start

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 8 }

    swDrvCntWlanEapAuthFailed OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Failed EAP Authentication Sessions Since AP Start

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 9 }

    swDrvCntWlanChannelActive OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Time in ms Which the Device Has Been on the Current Channel

             On STA when it's no associated the current channel is the lowest
             channel of the selected country code.

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 10 }

    swDrvCntWlanChannelBusy OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Time in ms Which the Medium Has Been Busy on the Current Channel

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 11 }

    swDrvCntWlanChannelTransmit OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Time in ms Which the Device Has Been Transmitting on the Current Channel

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 12 }

    swDrvCntWlanChannelReceive OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Time in ms Which the Device Has Been Receiving on the Current Channel

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 13 }

    swDrvCntWlanChannelNoise OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Measured Channel Noise in 1 dB Resolution

             **Note:** This value is not an absolute power level but the
             internal representation of the measured noise floor.

             Applies to AP and STA. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 14 }

    swDrvCntWlanEapAuthStartedFT OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "EAP Sessions Started Through FT

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 20 }

    swDrvCntWlanEapAuthStartedFILS OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "EAP Sessions Started Through FILS

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 21 }

    swDrvCntWlanEapAuthStartedPKMSA OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "EAP Sessions Started Through PKMSA

             Applies to AP. 802.11n products only."
        ::= { swDrvCntWlanTableEntry 22 }

    swDrvCntWlanBeaconMiss OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Beacon Misses

             Applies to STA."
        ::= { swDrvCntWlanTableEntry 40 }

    swDrvCntWlanBeaconRx OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Beacons Received

             Applies to STA."
        ::= { swDrvCntWlanTableEntry 41 }

    swDrvCntWlanApBeaconMiss OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of AP Missed Beacons

             Applies to AP."
        ::= { swDrvCntWlanTableEntry 42 }

    swDrvCntWlanPilotMiss OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Pilot Frame Misses

             Applies to STA."
        ::= { swDrvCntWlanTableEntry 43 }

    swDrvCntWlanPilotRx OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of Pilot Frames Received

             Applies to STA."
        ::= { swDrvCntWlanTableEntry 44 }
-- =============================================================================

  -- Rdm

    swRdmMaxEirp OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Maximal equivalent isotropically radiated power (EIRP) in dBm.

             This value shows the maximal aggregated transmit power over all
             configured chains.

             Applies to AP."
        ::= { swRdm 1 }

    swRdmMaxApp OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Maximal antenna port power in dBm.

             This value shows the maximal transmit power of a single chain.

             Applies to AP."
        ::= { swRdm 2 }

-- -----------------------------------------------------------------------------
-- Certificate

    swCrtExpirationTime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Certificate expiration date/time (UTC).

             Get the certificate expiration date/time for certificate type
             `setCrtFileType` at ID `setCrtFileId`

             **Example:**

             Oct 22 09:42:27 2018 GMT"
        ::= { swCertificate 1 }

    swCrtFingerprint OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "SHA384 fingerprint of certificate

             Get the certificate fingerprint for certificate type
             `setCrtFileType` at ID `setCrtFileId`

             **Example:**

             9C:A6:6D:7C:AD:93:A2:29:68:82:7F:50:AA:B0:5F:40:BB:82:D3:97:D5:97:28:A1:20:AE:A7:83:0C:7B:1A:CB:18:3A:0F:40:19:0A:7E:B7:CD:F5:50:04:B5:95:05:59"
        ::= { swCertificate 2 }

    swCrtCertTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwCrtCertTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Table for Type CERT"
        ::= { swCertificate 3 }

    swCrtCertTableEntry OBJECT-TYPE
        SYNTAX  SwCrtCertTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Table for Type CERT"
        INDEX {swCrtCertTableIndex}
        ::= { swCrtCertTable 1 }

    SwCrtCertTableSeq ::=
        SEQUENCE {  swCrtCertTableIndex Integer32,
                    swCrtCertId Integer32,
                    swCrtCertLabel DisplayString,
                    swCrtCertExpirationTime DisplayString,
                    swCrtCertFingerprint DisplayString
                 }

    swCrtCertTableIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCrtCertTableEntry 1 }

    swCrtCertId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Certificate Id in the Certificate Store"
        ::= { swCrtCertTableEntry 2 }

    swCrtCertLabel OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Certificate Id Label in the Certificate Store"
        ::= { swCrtCertTableEntry 3 }

    swCrtCertExpirationTime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Certificate Expiration Date/Time (UTC)

             **Example:**

             Oct 22 09:42:27 2018 GMT"
        ::= { swCrtCertTableEntry 4 }

    swCrtCertFingerprint OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "SHA384 Fingerprint of Certificate

             **Example:**

             9C:A6:6D:7C:AD:93:A2:29:68:82:7F:50:AA:B0:5F:40:BB:82:D3:97:D5:97:28:A1:20:AE:A7:83:0C:7B:1A:CB:18:3A:0F:40:19:0A:7E:B7:CD:F5:50:04:B5:95:05:59"
        ::= { swCrtCertTableEntry 5 }

    swCrtCrlTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Table for Type CERT"
        ::= { swCertificate 4 }

    swCrtCrlTableEntry OBJECT-TYPE
        SYNTAX  SwCrtCrlTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Certificate Table for Type CERT"
        INDEX {swCrtCrlTableIndex}
        ::= { swCrtCrlTable 1 }

    SwCrtCrlTableSeq ::=
        SEQUENCE {  swCrtCrlTableIndex Integer32,
                    swCrtCrlId Integer32,
                    swCrtCrlLabel DisplayString,
                    swCrtCrlExpirationTime DisplayString,
                    swCrtCrlFingerprint DisplayString
                 }

    swCrtCrlTableIndex OBJECT-TYPE
        SYNTAX Integer32 (0..63)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCrtCrlTableEntry 1 }

    swCrtCrlId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "CRL Id in the Certificate Store"
        ::= { swCrtCrlTableEntry 2 }

    swCrtCrlLabel OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "CRL Id Label in the Certificate Store"
        ::= { swCrtCrlTableEntry 3 }

    swCrtCrlExpirationTime OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "CRL Expiration Date/Time (UTC)

             **Example:**

             Oct 22 09:42:27 2018 GMT"
        ::= { swCrtCrlTableEntry 4 }

    swCrtCrlFingerprint OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "SHA384 Fingerprint of CRL

             **Example:**

             9C:A6:6D:7C:AD:93:A2:29:68:82:7F:50:AA:B0:5F:40:BB:82:D3:97:D5:97:28:A1:20:AE:A7:83:0C:7B:1A:CB:18:3A:0F:40:19:0A:7E:B7:CD:F5:50:04:B5:95:05:59"
        ::= { swCrtCrlTableEntry 5 }

-- =============================================================================

  -- Bootloader

    swBootName OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Bootloader"
        ::= { swBootloader 1 }

    swBootVersion OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the Bootloader"
        ::= { swBootloader 2 }

    swBootBuildDate OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Date when the Bootloader was Built"
        ::= { swBootloader 3 }

-- =============================================================================

-- Configuration

    swCfgChangesCount OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of not yet Applied Device Configuration Changes"
        ::= { swConfiguration 1 }

    swCfgHash OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..96))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Configuration Hash

            Hash in hexadicimal of the current applied configuration which can
            be used to verify the configuration integrity.

            During boot-up or during apply of a new configuration this element
            will return an empty string.

            The used hash algorithm is SHA384."
        ::= { swConfiguration 5 }

-- =============================================================================

-- Cellular

    swCellTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwCellTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Cellular Status Information Table

             This table is in a one-to-one relation to the `cfgNetWwanTable`
             where the indexes of the respective entries match.

             Applies to cellular products only."
        ::= { swCellular 1 }

    swCellTableEntry OBJECT-TYPE
        SYNTAX SwCellTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular Status Information Entry

             Applies to cellular products only."
        INDEX { swCellIndex
              }
        ::= { swCellTable 1 }

    SwCellTableSeq ::=
        SEQUENCE {  swCellIndex Integer32,
                    swCellWwanName DisplayString,
                    swCellSimSlot Integer32,
                    swCellSimStatus INTEGER,
                    swCellSimPrimary INTEGER,
                    swCellSimRoaming INTEGER,
                    swCellServiceName DisplayString,
                    swCellServiceMcc Integer32,
                    swCellServiceMnc Integer32,
                    swCellConnectionStatus INTEGER,
                    swCellConnectionMessage DisplayString,
                    swCellSignalType INTEGER,
                    swCellSignalRssi Integer32,
                    swCellSignalRsrq Integer32,
                    swCellSignalRsrp Integer32,
                    swCellSignalSinr Integer32,
                    swCellSignalRscp Integer32,
                    swCellSignalEcio Integer32,
                    swCellLteMode INTEGER,
                    swCellEarfcn Integer32,
                    swCellCellId DisplayString,
                    swCellBandwidthUl INTEGER,
                    swCellBandwidthDl INTEGER,
                    swCellSimIccid DisplayString,
                    swCellServingCellState INTEGER,
                    swCellFullNetworkName DisplayString,
                    swCellConnectedTime Integer32,
                    swCellSupports5g INTEGER
                 }

    swCellIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCellTableEntry 1 }

    swCellWwanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Radio

             Applies to cellular products only."
        ::= { swCellTableEntry 2 }

    swCellSimSlot OBJECT-TYPE
        SYNTAX INTEGER { none(0), slot1(1), slot2(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active SIM Slot

             * **none(0)**: No SIM slot is active
             * **slot1(1)**: SIM slot 1 is active
             * **slot2(2)**: SIM slot 2 is active

             Applies to cellular products only."
        ::= { swCellTableEntry 3 }

    swCellSimStatus OBJECT-TYPE
        SYNTAX INTEGER { noSim(0), ready(1), pinReq(2), pukReq(3) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "SIM Status

             This entry shows the status of the SIM card in the active slot:

             **noSim(0)**: No SIM card is inserted.
             **ready(1)**: The SIM card is ready for operation.
             **pinReq(2)**: Requesting the PIN of the SIM card.
             **pukReq(3)**: Requesting the PUK of the SIM card.

             Applies to cellular products only."
        ::= { swCellTableEntry 4 }

    swCellSimPrimary OBJECT-TYPE
        SYNTAX INTEGER { no(0), yes(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Is SIM Primary

             Is the SIM card of the primary slot used?

             * **no(0)**
             * **yes(1)**

             Applies to cellular products only."
        ::= { swCellTableEntry 5 }

    swCellSimRoaming OBJECT-TYPE
        SYNTAX INTEGER { no(0), yes(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Is SIM Roaming

             Is the active SIM card currently roaming?

             * **no(0)**
             * **yes(1)**

             Applies to cellular products only."
        ::= { swCellTableEntry 6 }

    swCellServiceName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Service Provider Name (SPN)

             Applies to cellular products only."
        ::= { swCellTableEntry 7 }

    swCellServiceMcc OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Mobile Country Code (MCC)

             The Mobile Country Code is defined by the ITU-T Recommendation E.212.

             Applies to cellular products only."
        ::= { swCellTableEntry 8 }

    swCellServiceMnc OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Mobile Network Code (MNC)

             The Mobile Network Code is defined by the ITU-T Recommendation E.212.

             Applies to cellular products only."
        ::= { swCellTableEntry 9 }

    swCellConnectionStatus OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), disabled(1), switchingSim(2), deregistering(3),
                         resetting(4), registering(5), connecting(6), connected(7),
                         disconnected(8), unlockingSim(9), reloading(10), invalid(11) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Connection Status

             * **unknown(0)**: Unknown state.
             * **disabled(1)**: Interface is disabled.
             * **switchingSim(2)**: Switching the SIM slot.
             * **deregistering(3)**: Deregistering from the cellular network.
             * **resetting(4)**: Resetting the cellular modem.
             * **registering(5)**: Registering to the cellular network.
             * **connecting(6)**: Connecting to the network.
             * **connected(7)**: Connected to the network.
             * **disconnected(8)**: Disconnected from the network.
             * **unlockingSim(9)**: Unlocking the SIM card.
             * **reloading(10)**: Reloading the configuration.
             * **invalid(11)**: Invalid state.

             Applies to cellular products only."
        ::= { swCellTableEntry 10 }

    swCellConnectionMessage OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Connection Status Message

             Applies to cellular products only."
        ::= { swCellTableEntry 11 }

    swCellSignalType OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), wcdma(3), lte(4), nsa5g(5), sa5g(6) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal Type

             The detailed signal type of the connection.

             **unknown(0)**: Unknown signal type
             **wcdma(3)**: UMTS (3G)
             **lte(4)**: LTE (4G)
             **nsa5g(5)**: 5G-NSA (5G Not Standalone)
             **sa5g(6)**: 5G-SA (5G Standalone)

             Applies to cellular products only."
        ::= { swCellTableEntry 12 }

    swCellSignalRssi OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Strength Indication (RSSI)

             Deprecated. Use `swCellLteRssi`.
             This parameter is only active when `swCellSignalType` is of
             type **lte(4)**.

             The unit of the RSSI is in dB.

             Applies to cellular products only."
        ::= { swCellTableEntry 13 }

    swCellSignalRsrq OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Quality (RSRQ)

             Deprecated. Use `swCellLteRsrq`.
             This parameter is only active when `swCellSignalType` is of
             type **lte(4)**.

             The unit of the RSRQ is in dB.

             Applies to cellular products only."
        ::= { swCellTableEntry 14 }

    swCellSignalRsrp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Power (RSRP)

             Deprecated. Use `swCellLteRsrp`.
             This parameter is only active when `swCellSignalType` is of
             type **lte(4)**.

             The unit of the RSRP is in dBm.

             Applies to cellular products only."
        ::= { swCellTableEntry 15 }

    swCellSignalSinr OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal to Interference Plus Noise Ratio (SINR)

             Deprecated. Use `swCellLteSinr`.
             This parameter is only active when `swCellSignalType` is of
             type **lte(4)**.

             The SINR in dB is calculated from the value *v* of this entry using
             the following equation:

             SINR = (v * 2) - 20

             **Examples:**

             *  **0**: SINR = -20dB
             * **10**: SINR = 0dB
             * **25**: SINR = 30dB

             Applies to cellular products only."
        ::= { swCellTableEntry 16 }

    swCellSignalRscp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Code Power (RSCP)

             Deprecated. Use `swCellWcdmaRscp`.
             This parameter is only active when `swCellSignalType` is of
             type **wcdma(0)**.

             The unit of the RSCP is in dBm.

             Applies to cellular products only."
        ::= { swCellTableEntry 17 }

    swCellSignalEcio OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Carrier to Noise Ratio (EC/IO)

             Deprecated. Use `swCellWcdmaEcio`.
             This parameter is only active when `swCellSignalType` is of
             type **wcdma(0)**.

             The unit of the ECIO is in dBm.

             Applies to cellular products only."
        ::= { swCellTableEntry 18 }

    swCellLteMode OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), tdd(1), fdd(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "LTE Duplex Mode

             Deprecated. Use `swCellLteDuplexMode`.

             LTE modulation mode FDD or TDD.

             Applies to cellular products only."
        ::= { swCellTableEntry 19 }

    swCellEarfcn OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "E-UTRA-ARFCN

             Deprecated. Use `swCellLteEarfcn`.

             The parameter determines the E-UTRA-ARFCN of the cell.

             Applies to cellular products only."
        ::= { swCellTableEntry 20 }

    swCellCellId OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..9))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cell ID

             Deprecated. Use `swCellLteCellId` or `swCell5gsaCellId`.

             The parameter determines the 28-bit (WCDMA, LTE) or
             36-bit (5G-NR) cell ID as a hexadecimal value.

             Applies to cellular products only."
        ::= { swCellTableEntry 21 }

    swCellBandwidthUl OBJECT-TYPE
        SYNTAX INTEGER { bw1dot4(0), bw3(1), bw5(2), bw10(3), bw15(4), bw20(5) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Upload Bandwidth

             Deprecated. Use `swCellLteBandwidthUl`.

             * **bw1dot4(0)**: 1.4 MHz
             * **bw3(1)**: 3 MHz
             * **bw5(2)**: 5 MHz
             * **bw10(3)**: 10 MHz
             * **bw15(4)**: 15 MHz
             * **bw20(5)**: 20 MHz

             Applies to cellular products only."
        ::= { swCellTableEntry 22 }

    swCellBandwidthDl OBJECT-TYPE
        SYNTAX INTEGER { bw1dot4(0), bw3(1), bw5(2), bw10(3), bw15(4), bw20(5) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Download Bandwidth

             Deprecated. Use `swCellLteBandwidthDl`.

             * **bw1dot4(0)**: 1.4 MHz
             * **bw3(1)**: 3 MHz
             * **bw5(2)**: 5 MHz
             * **bw10(3)**: 10 MHz
             * **bw15(4)**: 15 MHz
             * **bw20(5)**: 20 MHz

             Applies to cellular products only."
        ::= { swCellTableEntry 23 }

    swCellSimIccid OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..22))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "ICCID

             ICCID of the active SIM card.

             Applies to cellular products only."
        ::= { swCellTableEntry 24 }

    swCellServingCellState OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), searching(1), notRegistered(2), registered(3), registeredCall(4) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Service Cell State

             The cellular device can be in the following states:

             * **searching** The cellular device is searching but could not (yet)
                          find a suitable 3G/4G/5G cell.
             * **notRegistered** The cellular device is camping on a cell but has not
                          registered on the network.
             * **registered** The cellular device is camping on a cell and has
                          registered on the network, and it is in idle mode.
             * **registeredCall** The cellular device is camping on a cell and has
                           registered on the network, and a call is in progress.

             Applies to cellular products only."
        ::= { swCellTableEntry 25 }

    swCellFullNetworkName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Full Network Name (FNN)

             The full name of the network.

             Applies to cellular products only."
        ::= { swCellTableEntry 26 }

    swCellConnectedTime OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Connected Time

             Time in seconds since the connection was established.

             Applies to cellular products only."
        ::= { swCellTableEntry 27 }

    swCellSupports5g OBJECT-TYPE
        SYNTAX INTEGER { no(0), yes(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Connected cellular network supports 5G

             Indication if the currently connected cellular network
             supports 5G technology.

             * **no(0)**
             * **yes(1)**

             Check `swCellSignalType` to get the exact signal type
             of the current connection. It can also be set to LTE if
             only the LTE cell is visible but the cellular network
             basically supports 5G.
             Some internet service provider enable carrier aggregation
             with a 5G-NSA cell only when the network load is heavy
             and fall back to LTE on idle.

             Applies to 5G cellular products only."
        ::= { swCellTableEntry 28 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    swCellWcdmaTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwCellWcdmaTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Cellular WCDMA Signal Status Information Table

             These values are only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             This table is in a one-to-one relation to the `cfgNetWwanTable`
             where the indexes of the respective entries match.

             Applies to cellular products only."
        ::= { swCellular 10 }

    swCellWcdmaTableEntry OBJECT-TYPE
        SYNTAX SwCellWcdmaTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular WCDMA Signal Status Information Entry

             These values are only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             Applies to cellular products only."
        INDEX { swCellWcdmaIndex
              }
        ::= { swCellWcdmaTable 1 }

    SwCellWcdmaTableSeq ::=
        SEQUENCE {  swCellWcdmaIndex Integer32,
                    swCellWcdmaWwanName DisplayString,
                    swCellWcdmaRscp Integer32,
                    swCellWcdmaEcio Integer32,
                    swCellWcdmaUarfcn Integer32,
                    swCellWcdmaCellId DisplayString,
                    swCellWcdmaRac Integer32,
                    swCellWcdmaLac DisplayString,
                    swCellWcdmaPhyCh INTEGER,
                    swCellWcdmaCpm INTEGER,
                    swCellWcdmaSpeechCode DisplayString,
                    swCellWcdmaSlot Integer32,
                    swCellWcdmaSf Integer32,
                    swCellWcdmaPsc DisplayString,
                    swCellWcdmaActiveBands DisplayString
                 }

    swCellWcdmaIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCellWcdmaTableEntry 1 }

    swCellWcdmaWwanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Radio

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 2 }

    swCellWcdmaRscp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Code Power (RSCP)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The unit of the RSCP is in dBm.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 17 }

    swCellWcdmaEcio OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Carrier to Noise Ratio (EC/IO)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The unit of the ECIO is in dBm.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 18 }

    swCellWcdmaUarfcn OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "UTRA Absolute Radio Frequency Channel Number (UARFCN)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the UARFCN of the cell.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 20 }

    swCellWcdmaCellId OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..7))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cell ID

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the WCDMA 28-bit cell ID in hexadecimal form.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 21 }

    swCellWcdmaRac OBJECT-TYPE
        SYNTAX     Integer32 (0..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Routing Area Code (RAC)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the RAC as an integer between 0 and 255.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 35 }

    swCellWcdmaLac OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..4))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Location Area Code (LAC)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the 2-byte LAC in hexadecimal form.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 36 }

    swCellWcdmaPhyCh OBJECT-TYPE
        SYNTAX     INTEGER { dpch(0), fdpch(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Physical Channel (PhyCH)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the type of the dedicated physical channel:

             * **dpch(0): Downlink Dedicated Physical Channel
             * **fdpch(1): Fractional DPCH is a special type of DPCH channel
                           which can transmit only power control signal

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 37 }

    swCellWcdmaCpm OBJECT-TYPE
        SYNTAX     INTEGER { notsupport(0), support(1) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Compress Mode (CPM)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports support for the Compress Mode:

             * **notsupport(0)**: Not support Compress Mode
             * **support(1)**: Support Compress Mode

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 38 }

    swCellWcdmaSpeechCode OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Speech Code

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             Destination number on which call is to be deflected

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 39 }

    swCellWcdmaSlot OBJECT-TYPE
        SYNTAX     Integer32 (0..16)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Slot

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             Depending on the Physical Channel reported in `swCellWcdmaPhych`
             this parameter reports the slot format:

             * **dpch(0): Slot format range 0-16
             * **fdpch(1): Slot format range 0-9

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 40 }

    swCellWcdmaSf OBJECT-TYPE
        SYNTAX     INTEGER { sf4(0), sf8(1), sf16(2), sf32(3), sf64(4), sf128(5), sf256(6), sf512(7), unknown(8) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Spreading Factor (SF)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the Spreading Factor.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 41 }

    swCellWcdmaPsc OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Primary Scrambling Code (PSC)

             This parameter is only valid when `swCellSignalType` is of
             type **wcdma(0)**.

             The parameter reports the primary scrambling code of the cell that
             was scanned.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 42 }

    swCellWcdmaActiveBands OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active Band

             Currently active band as colon separated values.

             Applies to cellular products only."
        ::= { swCellWcdmaTableEntry 43 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    swCellLteTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwCellLteTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Cellular LTE Signal Status Information Table

             These values are only valid when `swCellSignalType` is of
             type **lte(4)**.

             This table is in a one-to-one relation to the `cfgNetWwanTable`
             where the indexes of the respective entries match.

             Applies to cellular products only."
        ::= { swCellular 11 }

    swCellLteTableEntry OBJECT-TYPE
        SYNTAX SwCellLteTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular LTE Signal Status Information Entry

             These values are only valid when `swCellSignalType` is of
             type **lte(4)**.

             Applies to cellular products only."
        INDEX { swCellLteIndex
              }
        ::= { swCellLteTable 1 }

    SwCellLteTableSeq ::=
        SEQUENCE {  swCellLteIndex Integer32,
                    swCellLteWwanName DisplayString,
                    swCellLteRssi Integer32,
                    swCellLteRsrq Integer32,
                    swCellLteRsrp Integer32,
                    swCellLteSinr Integer32,
                    swCellLteDuplexMode INTEGER,
                    swCellLteEarfcn Integer32,
                    swCellLteCellId DisplayString,
                    swCellLteBandwidthUl INTEGER,
                    swCellLteBandwidthDl INTEGER,
                    swCellLteTac DisplayString,
                    swCellLtePcid Integer32,
                    swCellLteSrxlev Integer32,
                    swCellLteTxPower Integer32,
                    swCellLteCqi Integer32,
                    swCellLteBand Integer32,
                    swCellLteActiveBands DisplayString
                 }

    swCellLteIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCellLteTableEntry 1 }

    swCellLteWwanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Radio

             Applies to cellular products only."
        ::= { swCellLteTableEntry 2 }

    swCellLteRssi OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Strength Indication (RSSI)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The unit of the RSSI is in dB.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 13 }

    swCellLteRsrq OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Quality (RSRQ)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The unit of the RSRQ is in dB.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 14 }

    swCellLteRsrp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Power (RSRP)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The unit of the RSRP is in dBm.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 15 }

    swCellLteSinr OBJECT-TYPE
        SYNTAX     Integer32 (0..25)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal to Interference Plus Noise Ratio (SINR)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The SINR in dB is calculated from the value *v* of this entry using
             the following equation:

             SINR = (v * 2) - 20

             **Examples:**

             *  **0**: SINR = -20dB
             * **10**: SINR = 0dB
             * **25**: SINR = 30dB

             Applies to cellular products only."
        ::= { swCellLteTableEntry 16 }

    swCellLteDuplexMode OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), tdd(1), fdd(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "LTE Modulation Mode

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             This parameter reports if the LTE modulation mode is FDD or TDD.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 19 }

    swCellLteEarfcn OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "E-UTRA Absolute Radio Frequency Channel Number (EARFCN)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The parameter reports the EARFCN of the cell.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 20 }

    swCellLteCellId OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..7))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cell ID

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The parameter reports the LTE 28-bit cell ID in hexadecimal form.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 21 }

    swCellLteBandwidthUl OBJECT-TYPE
        SYNTAX INTEGER { bw1dot4(0), bw3(1), bw5(2), bw10(3), bw15(4), bw20(5) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Upload Bandwidth

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             * **bw1dot4(0)**: 1.4 MHz
             * **bw3(1)**: 3 MHz
             * **bw5(2)**: 5 MHz
             * **bw10(3)**: 10 MHz
             * **bw15(4)**: 15 MHz
             * **bw20(5)**: 20 MHz

             Applies to cellular products only."
        ::= { swCellLteTableEntry 22 }

    swCellLteBandwidthDl OBJECT-TYPE
        SYNTAX INTEGER { bw1dot4(0), bw3(1), bw5(2), bw10(3), bw15(4), bw20(5) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Download Bandwidth

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             * **bw1dot4(0)**: 1.4 MHz
             * **bw3(1)**: 3 MHz
             * **bw5(2)**: 5 MHz
             * **bw10(3)**: 10 MHz
             * **bw15(4)**: 15 MHz
             * **bw20(5)**: 20 MHz

             Applies to cellular products only."
        ::= { swCellLteTableEntry 23 }

    swCellLteTac OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..4))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Tracking Area Code (TAC)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The parameter reports the 2-byte TAC in hexadecimal form.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 27 }

    swCellLtePcid OBJECT-TYPE
        SYNTAX     Integer32 (0..503)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Physical Cell ID (PCID)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 29 }

    swCellLteSrxlev OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cell Selection RX Level Value (SRXLEV)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The unit of the srxlev is in dB (see 3GPP 25.304).

             Applies to cellular products only."
        ::= { swCellLteTableEntry 30 }

    swCellLteTxPower OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Tx Power

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             The TX power value in 1/10 dBm. It is the maximum of all upload
             channel TX power. This value is only meaningful while the device is
             transmitting, i.e data transfer is active.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 31 }

    swCellLteCqi OBJECT-TYPE
        SYNTAX     Integer32(1..30)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Channel Quality Indicator (CQI)

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 32 }

    swCellLteBand OBJECT-TYPE
        SYNTAX     Integer32(0..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "E-UTRA Frequency Band Indicator

             This parameter is only valid when `swCellSignalType` is of
             type **lte(4)** or **nsa5g(5)**.

             See 3GPP 36.101 or https://en.wikipedia.org/wiki/LTE_frequency_bands

             Applies to cellular products only."
        ::= { swCellLteTableEntry 33 }

    swCellLteActiveBands OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active Band

             Currently active band as colon separated values.

             Applies to cellular products only."
        ::= { swCellLteTableEntry 38 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    swCell5gnsaTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwCell5gnsaTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Cellular 5G-NSA Signal Status Information Table

             These values are only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             This table is in a one-to-one relation to the `cfgNetWwanTable`
             where the indexes of the respective entries match.

             Applies to cellular products only."
        ::= { swCellular 12 }

    swCell5gnsaTableEntry OBJECT-TYPE
        SYNTAX SwCell5gnsaTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular 5G-NSA Signal Status Information Entry

             These values are only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             Applies to cellular products only."
        INDEX { swCell5gnsaIndex
              }
        ::= { swCell5gnsaTable 1 }

    SwCell5gnsaTableSeq ::=
        SEQUENCE {  swCell5gnsaIndex Integer32,
                    swCell5gnsaWwanName DisplayString,
                    swCell5gnsaRsrq Integer32,
                    swCell5gnsaRsrp Integer32,
                    swCell5gnsaSinr Integer32,
                    swCell5gnsaArfcn Integer32,
                    swCell5gnsaBandwidthDl INTEGER,
                    swCell5gnsaScs INTEGER,
                    swCell5gnsaPcid Integer32,
                    swCell5gnsaBand Integer32,
                    swCell5gnsaActiveBands DisplayString
                 }

    swCell5gnsaIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCell5gnsaTableEntry 1 }

    swCell5gnsaWwanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Radio

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 2 }

    swCell5gnsaRsrq OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Quality (RSRQ)

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             The unit of the RSRQ is in dB.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 14 }

    swCell5gnsaRsrp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Power (RSRP)

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             The unit of the RSRP is in dBm.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 15 }

    swCell5gnsaSinr OBJECT-TYPE
        SYNTAX     Integer32 (-20..30)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal to Interference Plus Noise Ratio (SINR)

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             This parameter reports the signal of 5G NR Signal-to-Interface plus
             Noise Ratio in dB.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 16 }

    swCell5gnsaArfcn OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Absolute Radio Frequency Channel Number (ARFCN)

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             The parameter reports the ARFCN of the cell.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 20 }

    swCell5gnsaBandwidthDl OBJECT-TYPE
        SYNTAX INTEGER { bw5(0), br10(1), bw15(2), bw20(3), bw25(4), bw30(5),
                         bw40(6), bw50(7), bw60(8), bw70(9), bw80(10), bw90(11),
                         bw100(12), bw200(13), bw400(14) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Download Bandwidth

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             This parameter indicates the download bandwith in MHz.

             * **bw5(0)**: 5 MHz
             * **bw10(1)**: 10 MHz
             * **bw15(2)**: 15 MHz
             * **bw20(3)**: 20 MHz
             * **bw25(4)**: 25 MHz
             * **bw30(5)**: 30 MHz
             * **bw40(6)**: 40 MHz
             * **bw50(7)**: 50 MHz
             * **bw60(8)**: 60 MHz
             * **bw70(9)**: 70 MHz
             * **bw80(10)**: 80 MHz
             * **bw90(11)**: 90 MHz
             * **bw100(12)**: 100 MHz
             * **bw200(13)**: 200 MHz
             * **bw400(14)**: 400 MHz

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 23 }

    swCell5gnsaScs OBJECT-TYPE
        SYNTAX INTEGER { scs15(0), scs30(1), scs60(2), scs120(3), scs240(4) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "NR Sub-Carrier Space

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             This parameter indicates the subcarrier spacing in kHz.

             * **scs15(0)**: 15 kHz
             * **scs30(1)**: 10 kHz
             * **scs60(2)**: 15 kHz
             * **scs120(3)**: 120 kHz
             * **scs240(4)**: 240 kHz

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 28 }

    swCell5gnsaPcid OBJECT-TYPE
        SYNTAX     Integer32(0..1007)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Physical Cell ID (PCID)

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 29 }

    swCell5gnsaBand OBJECT-TYPE
        SYNTAX     Integer32(0..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "5G NR Frequency Band

             This parameter is only valid when `swCellSignalType` is of
             type **nsa5g(5)**.

             The 5G NR frequency band are defined in 3GPP 38.101.

             Also see https://en.wikipedia.org/wiki/5G_NR_frequency_bands

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 33 }

    swCell5gnsaActiveBands OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active Band

             Currently active band as colon separated values.

             Applies to cellular products only."
        ::= { swCell5gnsaTableEntry 38 }

-- -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -

    swCell5gsaTable OBJECT-TYPE
        SYNTAX SEQUENCE OF SwCell5gsaTableSeq
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
            "Cellular 5G-SA Signal Status Information Table

             These values are only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             This table is in a one-to-one relation to the `cfgNetWwanTable`
             where the indexes of the respective entries match.

             Applies to cellular products only."
        ::= { swCellular 13 }

    swCell5gsaTableEntry OBJECT-TYPE
        SYNTAX SwCell5gsaTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Cellular 5G-SA Signal Status Information Entry

             These values are only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             Applies to cellular products only."
        INDEX { swCell5gsaIndex
              }
        ::= { swCell5gsaTable 1 }

    SwCell5gsaTableSeq ::=
        SEQUENCE {  swCell5gsaIndex Integer32,
                    swCell5gsaWwanName DisplayString,
                    swCell5gsaRsrq Integer32,
                    swCell5gsaRsrp Integer32,
                    swCell5gsaSinr Integer32,
                    swCell5gsaDuplexMode INTEGER,
                    swCell5gsaArfcn Integer32,
                    swCell5gsaCellId DisplayString,
                    swCell5gsaBandwidthDl INTEGER,
                    swCell5gsaTac DisplayString,
                    swCell5gsaScs INTEGER,
                    swCell5gsaPcid Integer32,
                    swCell5gsaSrxlev Integer32,
                    swCell5gsaBand Integer32,
                    swCell5gsaActiveBands DisplayString
                 }

    swCell5gsaIndex OBJECT-TYPE
        SYNTAX     Integer32 (0..0)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swCell5gsaTableEntry 1 }

    swCell5gsaWwanName OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Radio

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 2 }

    swCell5gsaRsrq OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Quality (RSRQ)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The unit of the RSRQ is in dB.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 14 }

    swCell5gsaRsrp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Power (RSRP)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The unit of the RSRP is in dBm.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 15 }

    swCell5gsaSinr OBJECT-TYPE
        SYNTAX     Integer32 (-20..30)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal to Interference Plus Noise Ratio (SINR)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             This parameter reports the signal of 5G NR Signal-to-Interface plus
             Noise Ratio in dB.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 16 }

    swCell5gsaDuplexMode OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), tdd(1), fdd(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "5G NR SA Duplex Mode

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             This parameter reports if the 5G NR SA Duplex Mode is `FDD` or `TDD`.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 19 }

    swCell5gsaArfcn OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Absolute Radio Frequency Channel Number (ARFCN)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The parameter reports the ARFCN of the cell.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 20 }

    swCell5gsaCellId OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..9))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Cell ID

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The parameter reports the 5G NR SA 36-bit cell ID in hexadecimal form.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 21 }

    swCell5gsaBandwidthDl OBJECT-TYPE
        SYNTAX INTEGER { bw5(0), br10(1), bw15(2), bw20(3), bw25(4), bw30(5),
                         bw40(6), bw50(7), bw60(8), bw70(9), bw80(10), bw90(11),
                         bw100(12), bw200(13), bw400(14) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Download Bandwidth

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             This parameter indicates the download bandwith in MHz.

             * **bw5(0)**: 5 MHz
             * **bw10(1)**: 10 MHz
             * **bw15(2)**: 15 MHz
             * **bw20(3)**: 20 MHz
             * **bw25(4)**: 25 MHz
             * **bw30(5)**: 30 MHz
             * **bw40(6)**: 40 MHz
             * **bw50(7)**: 50 MHz
             * **bw60(8)**: 60 MHz
             * **bw70(9)**: 70 MHz
             * **bw80(10)**: 80 MHz
             * **bw90(11)**: 90 MHz
             * **bw100(12)**: 100 MHz
             * **bw200(13)**: 200 MHz
             * **bw400(14)**: 400 MHz

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 23 }

    swCell5gsaTac OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..4))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Tracking Area Code (TAC)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The parameter reports the 2-byte TAC in hexadecimal form.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 27 }

    swCell5gsaScs OBJECT-TYPE
        SYNTAX INTEGER { scs15(0), scs30(1), scs60(2), scs120(3), scs240(4) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "NR Sub-Carrier Space (SCS)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             This parameter indicates the subcarrier spacing in kHz.

             * **scs15(0)**: 15 kHz
             * **scs30(1)**: 10 kHz
             * **scs60(2)**: 15 kHz
             * **scs120(3)**: 120 kHz
             * **scs240(4)**: 240 kHz

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 28 }

    swCell5gsaPcid OBJECT-TYPE
        SYNTAX     Integer32(0..1007)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Physical Cell ID (PCID)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 29 }

    swCell5gsaSrxlev OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Select RX Level Value (SRXLEV)

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The unit of the srxlev is in dB (see 3GPP 25.304).

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 30 }

    swCell5gsaBand OBJECT-TYPE
        SYNTAX     Integer32(0..255)
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "5G NR Frequency Band

             This parameter is only valid when `swCellSignalType` is of
             type **sa5g(6)**.

             The 5G NR frequency band are defined in 3GPP 38.101.

             Also see https://en.wikipedia.org/wiki/5G_NR_frequency_bands

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 33 }

    swCell5gsaActiveBands OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(0..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active Band

             Currently active band as colon separated values.

             Applies to cellular products only."
        ::= { swCell5gsaTableEntry 38 }

-- =============================================================================

-- NLM

    swNlmMonitorTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF SwNlmMonTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NLM Monitor Status Table"
        ::= { swNlm 1 }

    swNlmMonitorTableEntry OBJECT-TYPE
        SYNTAX  SwNlmMonTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "NLM Monitor Status Table Entry"
        INDEX {swNlmMonIndex}
        ::= { swNlmMonitorTable 1 }

    SwNlmMonTableSeq ::=
        SEQUENCE {  swNlmMonIndex Integer32,
                    swNlmMonState INTEGER
                 }

    swNlmMonIndex OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Table Entry Index"
        ::= { swNlmMonitorTableEntry 1 }

    swNlmMonState OBJECT-TYPE
        SYNTAX INTEGER { down(0), up(1), disabled(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Status Of Monitor

             This value is cached and updates at most once a second."
        ::= { swNlmMonitorTableEntry 2 }


-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End of Object Types
-- **********************************************************************

-- **********************************************************************
-- *  Begin GROUPS
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    groupCfgSystem OBJECT IDENTIFIER ::= { groupConfiguration 1 }

    groupCfgSysGeneral OBJECT-GROUP
        OBJECTS {
           cfgSysHostname,
           cfgSysTimezone,
           cfgSysComment
           }
        STATUS  current
        DESCRIPTION
            "System Settings"
        ::= { groupCfgSystem 1 }

    groupCfgSysNameserver OBJECT-GROUP
        OBJECTS {
           cfgSysDomain,
           cfgSysSdSearch,
           cfgSysNsType,
           cfgSysNsServer,
           cfgSysNsDhcpInterface,
           cfgSysNsDhcpDnsRouteEnabled,
           cfgSysNameserverOrder
           }
        STATUS  current
        DESCRIPTION
            "Domain and Nameserver properties"
        ::= { groupCfgSystem 2 }

    groupCfgNetwork OBJECT IDENTIFIER ::= { groupConfiguration 2 }

    groupCfgNetEthernet OBJECT-GROUP
        OBJECTS {
           cfgNetEthName,
           cfgNetEthEnabled,
           cfgNetEthBridge,
           cfgNetEthAutoneg,
           cfgNetEthSpeed,
           cfgNetEthTrunk,
           cfgNetEthTag,
           cfgNetEthVlanMode,
           cfgNetEthProtected,
           cfgNetEthLldpEnabled,
           cfgNetEthMtu,
           cfgNetEthMac
           }
        STATUS  current
        DESCRIPTION
            "Network Ethernet Properties"
        ::= { groupCfgNetwork 1 }

    groupCfgNetWlan OBJECT-GROUP
        OBJECTS {
           cfgNetWlanName,
           cfgNetWlanEnabled,
           cfgNetWlanBridge,
           cfgNetWlanTrunk,
           cfgNetWlanTag,
           cfgNetWlanVlanMode,
           cfgNetWlanProtected,
           cfgNetWlanLldpEnabled,
           cfgNetWlanMtu,
           cfgNetWlanDhcpOption82
           }
        STATUS  current
        DESCRIPTION
            "Wireless Interface Properties"
        ::= { groupCfgNetwork 2 }

    groupCfgNetVlan OBJECT-GROUP
        OBJECTS {
           cfgNetVlanName,
           cfgNetVlanEnabled,
           cfgNetVlanBridge,
           cfgNetVlanParent,
           cfgNetVlanVid,
           cfgNetVlanProtected,
           cfgNetVlanMtu,
           cfgNetVlanPriority,
           cfgNetVlanComment
           }
        STATUS  current
        DESCRIPTION
            "VLAN Properties"
        ::= { groupCfgNetwork 3 }

    groupCfgNetIp OBJECT-GROUP
        OBJECTS {
           cfgNetIpEnabled,
           cfgNetIpAddr,
           cfgNetIpProto,
           cfgNetIpInterface,
           cfgNetIpCarpId,
           cfgNetIpComment
           }
        STATUS  current
        DESCRIPTION
            "IP Properties"
        ::= { groupCfgNetwork 6 }

    groupCfgNetCarp OBJECT-GROUP
        OBJECTS {
           cfgNetCarpEnabled,
           cfgNetCarpVhid,
           cfgNetCarpPassword,
           cfgNetCarpAdvbase,
           cfgNetCarpAdvskew,
           cfgNetCarpAdvdivider,
           cfgNetCarpRatio,
           cfgNetCarpPreempt,
           cfgNetCarpPreemptdemote,
           cfgNetCarpLocalInterfaceGroup,
           cfgNetCarpSyncInterface,
           cfgNetCarpMcastIp
           }
        STATUS  current
        DESCRIPTION
            "IP Carp Properties"
        ::= { groupCfgNetwork 7 }

    groupCfgNetMacVLan OBJECT-GROUP
        OBJECTS {
           cfgNetMacVlanName,
           cfgNetMacVlanEnabled,
           cfgNetMacVlanParent,
           cfgNetMacVlanMac,
           cfgNetMacVlanMtu,
           cfgNetMacVlanComment
           }
        STATUS  current
        DESCRIPTION
            "Mac Vlan Properties"
        ::= { groupCfgNetwork 9 }

    groupCfgNetEth802dot1x OBJECT-GROUP
        OBJECTS {
           cfgNetEth802dot1xName,
           cfgNetEth802dot1xEnabled,
           cfgNetEth802dot1xOwnIpAddr,
           cfgNetEth802dot1xAuthServerParameter,
           cfgNetEth802dot1xEapReauthPeriod
           }
        STATUS  current
        DESCRIPTION
            "Wired 802.1X properties"
        ::= { groupCfgNetwork 10 }

    groupCfgNetWwan OBJECT-GROUP
        OBJECTS {
           cfgNetWwanName,
           cfgNetWwanEnabled,
           cfgNetWwanMtu
           }
        STATUS  current
        DESCRIPTION
            "Wwan Properties"
        ::= { groupCfgNetwork 11 }

    groupCfgNetOpenvpn OBJECT-GROUP
        OBJECTS {
           cfgNetOpenvpnName,
           cfgNetOpenvpnEnabled,
           cfgNetOpenvpnBridge,
           cfgNetOpenvpnTrunk,
           cfgNetOpenvpnTag,
           cfgNetOpenvpnVlanMode,
           cfgNetOpenvpnProtected,
           cfgNetOpenvpnLldpEnabled,
           cfgNetOpenvpnMtu
           }
        STATUS  current
        DESCRIPTION
            "Openvpn interface properties"
        ::= { groupCfgNetwork 12 }

    groupCfgNetIpsec OBJECT-GROUP
        OBJECTS {
           cfgNetIpsecName,
           cfgNetIpsecEnabled,
           cfgNetIpsecMtu
           }
        STATUS  current
        DESCRIPTION
            "Ipsec interface properties"
        ::= { groupCfgNetwork 13 }

    groupCfgNetFlowController OBJECT-GROUP
        OBJECTS {
           cfgNetFcName,
           cfgNetFcEnabled,
           cfgNetFcBridge,
           cfgNetFcTrunk,
           cfgNetFcTag,
           cfgNetFcVlanMode,
           cfgNetFcProtected,
           cfgNetFcLldpEnabled,
           cfgNetFcFlowMode
           }
        STATUS  current
        DESCRIPTION
            "FlowController interface properties"
        ::= { groupCfgNetwork 14 }

    groupCfgNetTunnelEndPoint OBJECT-GROUP
        OBJECTS {
           cfgNetTepName,
           cfgNetTepEnabled,
           cfgNetTepBridge,
           cfgNetTepTrunk,
           cfgNetTepTag,
           cfgNetTepVlanMode,
           cfgNetTepProtected,
           cfgNetTepLldpEnabled,
           cfgNetTepMtu
           }
        STATUS  current
        DESCRIPTION
            "TunnelEndPoint Interface Properties"
        ::= { groupCfgNetwork 15 }

    groupCfgNetWireguard OBJECT-GROUP
        OBJECTS {
           cfgNetWgName,
           cfgNetWgEnabled,
           cfgNetWgMtu
           }
        STATUS  current
        DESCRIPTION
            "Wireguard Interface Properties"
        ::= { groupCfgNetwork 16 }

    groupCfgWireless OBJECT IDENTIFIER ::= { groupConfiguration 3 }

    groupCfgWlanDevice OBJECT-GROUP
        OBJECTS {
           cfgWlanDevName,
           cfgWlanDevModulation,
           cfgWlanDevBandwidth,
           cfgWlanDevFrequency,
           cfgWlanDevPower,
           cfgWlanDevDistance,
           cfgWlanDevRts,
           cfgWlanDevFragments,
           cfgWlanDevShortRetry,
           cfgWlanDevLongRetry,
           cfgWlanDevAntennaGain,
           cfgWlanDevTxAntenna,
           cfgWlanDevRxAntenna,
           cfgWlanDevPhy,
           cfgWlanDevHtCapabilities,
           cfgWlanDevQmrrString,
           cfgWlanDevAtfSchedulingAlgorithm
           }
        STATUS  current
        DESCRIPTION
            "Wireless Interface Properties"
        ::= { groupCfgWireless 1 }

    groupCfgWlanInterface OBJECT-GROUP
        OBJECTS {
           cfgWlanIfaceName,
           cfgWlanIfaceDevice,
           cfgWlanIfaceMode,
           cfgWlanIfaceSsid,
           cfgWlanIfaceEncryption,
           cfgWlanIfacePassword,
           cfgWlanIfacePassiveScanning,
           cfgWlanIfaceBeaconMiss,
           cfgWlanIfaceDtim,
           cfgWlanIfaceBitrates,
           cfgWlanIfaceBeaconInterval,
           cfgWlanIfaceWmeParameter,
           cfgWlanIfaceWmeEnabled,
           cfgWlanIfaceScanList,
           cfgWlanIfaceIgnoreBroadcastSsid,
           cfgWlanIfaceMacaddrAcl,
           cfgWlanIfaceMaxNumSta,
           cfgWlanIfaceBssid,
           cfgWlanIfaceLegacyRates,
           cfgWlanIface4addr,
           cfgWlanIfaceInactivityTimeout,
           cfgWlanIfaceUseVendorSsid,
           cfgWlanIfaceIeee80211w,
           cfgWlanIfaceIeee80211wMaxTimeout,
           cfgWlanIfaceIeee80211wRetryTimeout,
           cfgWlanIfaceAcsList,
           cfgWlanIfaceNeighbourReport,
           cfgWlanIfaceNeighbourParameter,
           cfgWlanIfacePmkLifetime,
           cfgWlanIfaceL2nat,
           cfgWlanIfaceL2natLearningMode,
           cfgWlanIfaceL2natDefaultDestination,
           cfgWlanIfaceTimeAdvertisement,
           cfgWlanIfaceApIsolate,
           cfgWlanIfaceLlcBroadcastVlan,
           cfgWlanIfaceAtfSsidEnabled,
           cfgWlanIfaceAtfSsidAirtime,
           cfgWlanIfacePilotMode,
           cfgWlanIfacePilotInterval,
           cfgWlanIfaceMulticastToUnicast
           }
        STATUS  current
        DESCRIPTION
            "Wireless Interface Properties"
        ::= { groupCfgWireless 2 }

    groupCfgWlanHandoff OBJECT-GROUP
        OBJECTS {
           cfgWlanHoIfaceName,
           cfgWlanHoProfile,
           cfgWlanHoScanningLevel,
           cfgWlanHoBeacons,
           cfgWlanHoRecovery,
           cfgWlanHoFilterLongX,
           cfgWlanHoFilterLongY,
           cfgWlanHoPassiveChanTime,
           cfgWlanHoLevelLow,
           cfgWlanHoLevelHigh,
           cfgWlanHoDistanceNear,
           cfgWlanHoDistanceFar,
           cfgWlanHoDistanceMeasurementPeriod,
           cfgWlanHoDistanceFilterX,
           cfgWlanHoDistanceFilterY
           }
        STATUS  current
        DESCRIPTION
            "Wireless Handoff Properties"
        ::= { groupCfgWireless 3 }

    groupCfgWlanScanFreq OBJECT-GROUP
        OBJECTS {
           cfgWlanFFreq0,
           cfgWlanFFreq1,
           cfgWlanFFreq2,
           cfgWlanFFreq3,
           cfgWlanFFreq4,
           cfgWlanFFreq5,
           cfgWlanFFreq6,
           cfgWlanFFreq7,
           cfgWlanFFreq8,
           cfgWlanFFreq9,
           cfgWlanFFreq10,
           cfgWlanFFreq11,
           cfgWlanFFreq12,
           cfgWlanFFreq13,
           cfgWlanFFreq14,
           cfgWlanFFreq15,
           cfgWlanFFreq16,
           cfgWlanFFreq17,
           cfgWlanFFreq18,
           cfgWlanFFreq19,
           cfgWlanFFreq20,
           cfgWlanFFreq21,
           cfgWlanFFreq22,
           cfgWlanFFreq23
           }
        STATUS  current
        DESCRIPTION
            "Wireless Scanlist Properties"
        ::= { groupCfgWireless 4 }

    groupCfgWlanWme OBJECT-GROUP
        OBJECTS {
           cfgWlanWmeId,
           cfgWlanWmeAc,
           cfgWlanWmeCwMin,
           cfgWlanWmeCwMax,
           cfgWlanWmeAifs,
           cfgWlanWmeTxOpMax,
           cfgWlanWmeApCwMin,
           cfgWlanWmeApCwMax,
           cfgWlanWmeApAifs,
           cfgWlanWmeApBurst
           }
        STATUS  current
        DESCRIPTION
            "Wireless WME properties"
        ::= { groupCfgWireless 5 }

    groupCfgWlanDbg OBJECT-GROUP
        OBJECTS {
           cfgWlanDbgIfaceName,
           cfgWlanDbgHandoff,
           cfgWlanDbgScan,
           cfgWlanDbgMlme,
           cfgWlanDbgEvents,
           cfgWlanDbgBeaconrssi,
           cfgWlanDbgAckrssi,
           cfgWlanDbgBeaconfiltered,
           cfgWlanDbgRatelimit,
           cfgWlanDbgLinkmonitor,
           cfgWlanDbgBeacontsf,
           cfgWlanDbgRange,
           cfgWlanDbgReports
           }
        STATUS  current
        DESCRIPTION
            "Wireless Debug Properties"
        ::= { groupCfgWireless 6 }

    groupCfgWlanAclBlack OBJECT-GROUP
        OBJECTS {
           cfgWlanAclBlackEnabled,
           cfgWlanAclBlackInterface,
           cfgWlanAclBlackAddr,
           cfgWlanAclBlackMask
           }
        STATUS  current
        DESCRIPTION
            "Wireless ACL Black Properties"
        ::= { groupCfgWireless 7 }

    groupCfgWlanAclWhite OBJECT-GROUP
        OBJECTS {
           cfgWlanAclWhiteEnabled,
           cfgWlanAclWhiteInterface,
           cfgWlanAclWhiteAddr,
           cfgWlanAclWhiteMask
           }
        STATUS  current
        DESCRIPTION
            "Wireless ACL White Properties"
        ::= { groupCfgWireless 8 }

    groupCfgWlanGlobal OBJECT-GROUP
        OBJECTS {
           cfgWlanGlblCountry,
           cfgWlanGlblLinkmonitorInterval,
           cfgWlanGlblLinkmonitorQmrrlogging,
           cfgWlanGlblConnectionStatusWlanInterface,
           cfgWlanGlblAclRejectLog
           }
        STATUS  current
        DESCRIPTION
            "Wireless Global Properties"
        ::= { groupCfgWireless 9 }

    groupCfgWlan802dot1x OBJECT-GROUP
        OBJECTS {
           cfgWlan802dot1xName,
           cfgWlan802dot1xOwnIpAddr,
           cfgWlan802dot1xAuthServerParameter,
           cfgWlan802dot1xAcctServerParameter,
           cfgWlan802dot1xRetryPrimaryInterval,
           cfgWlan802dot1xInterimAccountingInterval,
           cfgWlan802dot1xNasId,
           cfgWlan802dot1xEapType,
           cfgWlan802dot1xIdentity,
           cfgWlan802dot1xTlsControlParams,
           cfgWlan802dot1xRetryMax,
           cfgWlan802dot1xRetryTimeout,
           cfgWlan802dot1xCiphers,
           cfgWlan802dot1xPrimaryTestMode,
           cfgWlan802dot1xCrlExpiryExtension,
           cfgWlan802dot1xCaIds,
           cfgWlan802dot1xClientCertId,
           cfgWlan802dot1xDynamicVlan
           }
        STATUS  current
        DESCRIPTION
            "Wireless 802.1X Properties"
        ::= { groupCfgWireless 10 }

    groupCfgWlan802dot1xAuth OBJECT-GROUP
        OBJECTS {
           cfgWlan802dot1xAuthSrvEnabled,
           cfgWlan802dot1xAuthSrvId,
           cfgWlan802dot1xAuthSrvIpAddr,
           cfgWlan802dot1xAuthSrvPort,
           cfgWlan802dot1xAuthSrvSharedSecret
           }
        STATUS  current
        DESCRIPTION
            "Wireless 802.1X Auth Properties"
        ::= { groupCfgWireless 11 }

    groupCfgWlan802dot1xAcct OBJECT-GROUP
        OBJECTS {
           cfgWlan802dot1xAcctSrvEnabled,
           cfgWlan802dot1xAcctSrvId,
           cfgWlan802dot1xAcctSrvIpAddr,
           cfgWlan802dot1xAcctSrvPort,
           cfgWlan802dot1xAcctSrvSharedSecret
           }
        STATUS  current
        DESCRIPTION
            "Wireless 802.1X Acct Properties"
        ::= { groupCfgWireless 12 }

    groupCfgWlan802dot11r OBJECT-GROUP
        OBJECTS {
           cfgWlan802dot11rName,
           cfgWlan802dot11rEnabled,
           cfgWlan802dot11rMobilityDomain,
           cfgWlan802dot11rPmkR0KeyHolderIdentifier,
           cfgWlan802dot11rPmkR0Lifetime,
           cfgWlan802dot11rPmkR1KeyHolderIdentifier,
           cfgWlan802dot11rPmkR1Push,
           cfgWlan802dot11rR0KHParameter,
           cfgWlan802dot11rR1KHParameter,
           cfgWlan802dot11rExpirationEnabled,
           cfgWlan802dot11rExpirationTime,
           cfgWlan802dot11rVlan,
           cfgWlan802dot11rR0KHId,
           cfgWlan802dot11rR0KHEnabled,
           cfgWlan802dot11rR0KHDestinationMac,
           cfgWlan802dot11rR0KHHID,
           cfgWlan802dot11rR0KHKey,
           cfgWlan802dot11rR1KHId,
           cfgWlan802dot11rR1KHEnabled,
           cfgWlan802dot11rR1KHDestinationMac,
           cfgWlan802dot11rR1KHHID,
           cfgWlan802dot11rR1KHKey
           }
        STATUS  current
        DESCRIPTION
            "Wireless 802.11r Properties"
        ::= { groupCfgWireless 13 }

    groupCfgWlanNeighbour OBJECT-GROUP
        OBJECTS {
           cfgWlanNeighbourId ,
           cfgWlanNeighbourEnabled,
           cfgWlanNeighbourBSSID,
           cfgWlanNeighbourFrequency
           }
        STATUS  current
        DESCRIPTION
            "Wireless Neighbour Properties"
        ::= { groupCfgWireless 14 }

    groupCfgWlanRapd OBJECT-GROUP
        OBJECTS {
           cfgWlanRapdServiceEnabled,
           cfgWlanRapdEnabled,
           cfgWlanRapdInterface,
           cfgWlanRapdCheckInterval,
           cfgWlanRapdScanFreqList,
           cfgWlanRapdAllowedMacParameter,
           cfgWlanRapdSsidParameter,
           cfgWlanRapdMacId,
           cfgWlanRapdMacEnabled,
           cfgWlanRapdMacAddr,
           cfgWlanRapdSsidId,
           cfgWlanRapdSsidEnabled,
           cfgWlanRapdSsidSsid
           }
        STATUS  current
        DESCRIPTION
            "Wirless RAPD properties"
        ::= { groupCfgWireless 30 }

    groupCfgRouting OBJECT IDENTIFIER ::= { groupConfiguration 4 }

    groupCfgRouteDefault OBJECT-GROUP
        OBJECTS {
           cfgRouteDefGateway
           }
        STATUS  current
        DESCRIPTION
            "Routing Default Route Properties"
        ::= { groupCfgRouting 1 }

    groupCfgRouteTable OBJECT-GROUP
        OBJECTS {
           cfgRouteTableDestinationNetwork,
           cfgRouteTableGateway,
           cfgRouteTableEnabled,
           cfgRouteTableSource,
           cfgRouteTableCarpId,
           cfgRouteTableInterface,
           cfgRouteTableMetric,
           cfgRouteTableRoutingTables,
           cfgRouteTableMonitor,
           cfgRouteTableComment,
           cfgRouteTableWeight
           }
        STATUS  current
        DESCRIPTION
            "Static Routes Group"
        ::= { groupCfgRouting 2 }

    groupCfgMRouteTable OBJECT-GROUP
        OBJECTS {
           cfgMRouteTableEnabled,
           cfgMRouteTableInput,
           cfgMRouteTableSource,
           cfgMRouteTableGroup,
           cfgMRouteTableOutput
           }
        STATUS  current
        DESCRIPTION
            "Static Routes Group"
        ::= { groupCfgRouting 3 }

    groupCfgRouteRuleTable OBJECT-GROUP
        OBJECTS {
           cfgRouteRuleEnabled,
           cfgRouteRulePreference,
           cfgRouteRuleFrom,
           cfgRouteRuleTo,
           cfgRouteRuleInputInterface,
           cfgRouteRuleTos,
           cfgRouteRuleIpProto,
           cfgRouteRuleSourcePort,
           cfgRouteRuleDestinationPort,
           cfgRouteRuleLookupTable,
           cfgRouteRuleMark
           }
        STATUS  current
        DESCRIPTION
            "Route Rule Group"
        ::= { groupCfgRouting 4 }

    groupCfgRouteDhcpTable OBJECT-GROUP
        OBJECTS {
           cfgRouteDhcpEnabled,
           cfgRouteDhcpInterface,
           cfgRouteDhcpMetric,
           cfgRouteDhcpRoutingTables,
           cfgRouteDhcpMonitor,
           cfgRouteDhcpWeight
           }
        STATUS  current
        DESCRIPTION
            "Route Rule Group"
        ::= { groupCfgRouting 5 }

    groupCfgRouteGlobal OBJECT-GROUP
        OBJECTS {
            cfgRouteGlblReversePathFilter
             }
        STATUS  current
        DESCRIPTION
            "Route Global Group"
        ::= { groupCfgRouting 6 }

    groupCfgLogging OBJECT-GROUP
        OBJECTS {
           cfgLogRemoteEnabled,
           cfgLogRemoteLevel,
           cfgLogRemoteProtocol,
           cfgLogRemoteIp,
           cfgLogRemotePort,
           cfgLogRemoteType,
           cfgLogRemoteCaIds,
           cfgLogRemoteCertId,
           cfgLogRemoteCrlExpiryExtension,
           cfgLogRemoteTlsControlParams,
           cfgLogRemoteCiphers
           }
        STATUS  current
        DESCRIPTION
            "Logging Properties"
        ::= { groupConfiguration 11 }

    groupCfgSnmp OBJECT IDENTIFIER
        ::= { groupConfiguration 12 }

    groupCfgSnmpd OBJECT-GROUP
        OBJECTS {
           cfgSnmpdLocation,
           cfgSnmpdContact,
           cfgSnmpdVersion,
           cfgSnmpdName,
           cfgSnmpdEnabled,
           cfgSnmpdAddress,
           cfgSnmpdAuthType,
           cfgSnmpdPrivType,
           cfgSnmpdComAdmin,
           cfgSnmpdComMonitor
           }
        STATUS  current
        DESCRIPTION
            "SNMP Properties"
        ::= { groupCfgSnmp 1 }

    groupCfgSnmpTrap OBJECT-GROUP
        OBJECTS {
           cfgSnmpTrapEnabled,
           cfgSnmpTrapVersion,
           cfgSnmpTrapCommunity,
           cfgSnmpTrapDest,
           cfgSnmpTrapType,
           cfgSnmpTrapEngineId,
           cfgSnmpTrapUser,
           cfgSnmpTrapAuthProtocol,
           cfgSnmpTrapAuthPassword,
           cfgSnmpTrapPrivProtocol,
           cfgSnmpTrapPrivPassword,
           cfgSnmpTrapTimeout,
           cfgSnmpTrapRetries
           }
        STATUS  current
        DESCRIPTION
            "SNMP Properties"
        ::= { groupCfgSnmp 10 }

    groupCfgDhcp OBJECT IDENTIFIER ::= { groupConfiguration 13 }

    groupCfgDhcpGlobal OBJECT-GROUP
        OBJECTS { cfgDhcpGlobalEnabled }
        STATUS  current
        DESCRIPTION
            "DHCP Global Properties"
        ::= { groupCfgDhcp 1 }

    groupCfgDhcpDnsmasq OBJECT-GROUP
        OBJECTS {
           cfgDhcpDnsmasqScopeParameter,
           cfgDhcpDnsmasqDnsPort,
           cfgDhcpDnsmasqDnsListenAddress,
           cfgDhcpDnsmasqDnsResolveOrder,
           cfgDhcpDnsmasqDnsEnabled,
           cfgDhcpDnsmasqDhcpEnabled,
           cfgDhcpDnsmasqDnsStopDnsRebind,
           cfgDhcpDnsmasqDnsRebindDomainOk,
           cfgDhcpDnsmasqDnsDomainOverrideParameter,
           cfgDhcpDnsmasqDnsHostOverrideParameter,
           cfgDhcpDnsmasqCustomOptions
           }
        STATUS  current
        DESCRIPTION
            "Dnsmasq Properties"
        ::= { groupCfgDhcp 2 }

    groupCfgDhcpScope OBJECT-GROUP
        OBJECTS {
           cfgDhcpScopeId,
           cfgDhcpScopeInterface,
           cfgDhcpScopeStart,
           cfgDhcpScopeLimit,
           cfgDhcpScopeLeasetime,
           cfgDhcpScopeGateway,
           cfgDhcpScopeDnsServer1,
           cfgDhcpScopeDnsServer2,
           cfgDhcpScopeDhcpOptions,
           cfgDhcpScopeAutoGateway,
           cfgDhcpScopeAutoDns,
           cfgDhcpScopeTag
           }
        STATUS  current
        DESCRIPTION
            "DHCP Individual Properties"
        ::= { groupCfgDhcp 3 }

    groupCfgDhcpDomainOverrides OBJECT-GROUP
        OBJECTS {
           cfgDhcpDmnOvrId,
           cfgDhcpDmnOvrEnabled,
           cfgDhcpDmnOvrDomain,
           cfgDhcpDmnOvrServer
           }
        STATUS  current
        DESCRIPTION
            "DNS Server Domain Overrides"
        ::= { groupCfgDhcp 4 }

    groupCfgDhcpHostOverrides OBJECT-GROUP
        OBJECTS {
           cfgDhcpHstOvrId,
           cfgDhcpHstOvrEnabled,
           cfgDhcpHstOvrHost,
           cfgDhcpHstOvrAddress
           }
        STATUS  current
        DESCRIPTION
            "DNS Server Host Overrides"
        ::= { groupCfgDhcp 5 }

    groupCfgDhcpRelay OBJECT-GROUP
        OBJECTS {
           cfgDhcpRelayEnabled,
           cfgDhcpRelayInterface,
           cfgDhcpRelayLocalAddress,
           cfgDhcpRelayServerAddress,
           cfgDhcpRelayInterfaceToServer
           }
        STATUS  current
        DESCRIPTION
            "DHCP Relay Properties"
        ::= { groupCfgDhcp 6 }

    groupCfgDhcpTag OBJECT-GROUP
        OBJECTS {
           cfgDhcpTagType,
           cfgDhcpTagMatch,
           cfgDhcpTagTag
           }
        STATUS  current
        DESCRIPTION
            "DHCP Tag Properties"
        ::= { groupCfgDhcp 7 }

   groupCfgNtp OBJECT-GROUP
       OBJECTS {
          cfgNtpEnabled,
          cfgNtpServer1,
          cfgNtpServer2,
          cfgNtpClientEnabled,
          cfgNtpClientHost,
          cfgNtpClientNmeaEnabled,
          cfgNtpServerEnabled,
          cfgNtpServerLocalReference
          }
       STATUS  current
       DESCRIPTION
           "NTP Client Properties"
       ::= { groupConfiguration 14 }

   groupCfgHttp OBJECT-GROUP
       OBJECTS {
          cfgHttpEnabled,
          cfgHttpRedirectEnabled,
          cfgHttpHttpAddress,
          cfgHttpHttpsAddress,
          cfgHttpTlsServerCertId,
          cfgHttpAdminPasswordHash,
          cfgHttpMonitorPasswordHash,
          cfgHttpSessionLimit,
          cfgHttpSessionTimeout,
          cfgHttpTlsCiphers
          }
       STATUS  current
       DESCRIPTION
           "HTTP Server Properties"
       ::= { groupConfiguration 15 }

   groupCfgLldp OBJECT-GROUP
       OBJECTS {
          cfgLldpEnabled,
          cfgLldpDescription
          }
       STATUS  current
       DESCRIPTION
           "LLDP Service Properties"
       ::= { groupConfiguration 16 }

   groupCfgMdns OBJECT-GROUP
       OBJECTS {
          cfgMdnsEnabled,
          cfgMdnsNetwork
          }
       STATUS  current
       DESCRIPTION
           "mDNS service properties"
       ::= { groupConfiguration 17 }

    groupCfgQos OBJECT IDENTIFIER ::= { groupConfiguration 18 }

    groupCfgSsdp OBJECT-GROUP
        OBJECTS {
           cfgSsdpEnabled
           }
        STATUS current
        DESCRIPTION
           "SSDP responder service properties"
        ::= { groupConfiguration 19 }

    groupCfgQosGlobal OBJECT-GROUP
        OBJECTS {
           cfgQosL3PrioEnabled,
           cfgQosDefaultTid
           }
        STATUS  current
        DESCRIPTION
            "QoS general maintree properties"
        ::= { groupCfgQos 1 }

    groupCfgQosDscpToTidMapTable OBJECT-GROUP
        OBJECTS {
           cfgQosDscpToTidMapValue
           }
        STATUS  current
        DESCRIPTION
            "QoS L3 To L2 Map properties"
        ::= { groupCfgQos 2 }

    groupCfgQosVlanToTidMapTable OBJECT-GROUP
        OBJECTS {
           cfgQosVlanToTidMapValue
           }
        STATUS  current
        DESCRIPTION
            "Qos Vlan To L2 Priority properties"
        ::= { groupCfgQos 3 }

    groupCfgQosIpToTidMapTable OBJECT-GROUP
        OBJECTS {
           cfgQosIpToTidMapSrcNet,
           cfgQosIpToTidMapDestNet,
           cfgQosIpToTidMapProto,
           cfgQosIpToTidMapSrcPort,
           cfgQosIpToTidMapDestPort,
           cfgQosIpToTidMapPrecedence,
           cfgQosIpToTidMapEnabled,
           cfgQosIpToTidMapProtoFull
           }
        STATUS  current
        DESCRIPTION
            "QoS Flow Priority properties"
        ::= { groupCfgQos 4 }

    groupCfgQosEthertypeToL2Table OBJECT-GROUP
        OBJECTS {
           cfgQosEthertypeToL2Enabled,
           cfgQosEthertypeToL2Ethertype,
           cfgQosEthertypeToL2Tid
           }
        STATUS  current
        DESCRIPTION
            "QoS Ethertype properties"
        ::= { groupCfgQos 5 }


   groupCfgNlm OBJECT-GROUP
       OBJECTS {
          cfgNlmGlblEnabled,
          cfgNlmMonEnabled,
          cfgNlmMonInterval,
          cfgNlmMonCount,
          cfgNlmMonType,
          cfgNlmMonInterfaces,
          cfgNlmMonDestination,
          cfgNlmMonUpAction,
          cfgNlmMonDownAction,
          cfgNlmMonScanLoopInterval,
          cfgNlmMonCountUp,
          cfgNlmMonRssi,
          cfgNlmMonLogic,
          cfgNlmMonLogicInput,
          cfgNlmMonTrap,
          cfgNlmMonRouter
       }
       STATUS  current
       DESCRIPTION
           "Nlm properties"
       ::= { groupConfiguration 40 }

    groupCfgCli OBJECT-GROUP
       OBJECTS {
          cfgCliEnabled,
          cfgCliUsername,
          cfgCliPassword,
          cfgCliTelnetEnabled,
          cfgCliSshEnabled,
          cfgCliTelnetAddress,
          cfgCliSshAddress,
          cfgCliSshSessionTimeout,
          cfgCliPasswordHash
          }
       STATUS  current
       DESCRIPTION
           "CLI Properties"
       ::= { groupConfiguration 100 }

    groupCfgCellular OBJECT IDENTIFIER ::= { groupConfiguration 101 }

    groupCfgCellConnectionManagement OBJECT-GROUP
        OBJECTS {
           cfgCellConnMgmtSimRotationEnabled,
           cfgCellConnMgmtMonMode,
           cfgCellConnMgmtMonPeriod,
           cfgCellConnMgmtMonCount,
           cfgCellConnMgmtMonRemoteType,
           cfgCellConnMgmtMonRemoteAddress
           }
        STATUS  current
        DESCRIPTION
            "Cellular Connection Manager Properties"
        ::= { groupCfgCellular 3 }

    groupCfgCellDbg OBJECT-GROUP
        OBJECTS {
           cfgCellDbgSignal,
           cfgCellDbgConnection
           }
        STATUS  current
        DESCRIPTION
            "Cellular Debug Properties"
        ::= { groupCfgCellular 4 }

   groupCfgCellSimSlot OBJECT-GROUP
        OBJECTS {
            cfgCellSimSlotName,
            cfgCellSimSlotEnabled,
            cfgCellSimSlotPinEnabled,
            cfgCellSimSlotPin,
            cfgCellSimSlotPriority,
            cfgCellSimSlotUnlockTimeout
           }
        STATUS  current
        DESCRIPTION
            "Cellular SIM Properties"
        ::= { groupCfgCellular 5 }

   groupCfgCellDefaultBearer OBJECT-GROUP
        OBJECTS {
            cfgCellDefaultBearerSimSlots,
            cfgCellDefaultBearerApn,
            cfgCellDefaultBearerUsername,
            cfgCellDefaultBearerPassword,
            cfgCellDefaultBearerAuthType,
            cfgCellDefaultBearerRoaming
           }
        STATUS  current
        DESCRIPTION
            "Default Bearer Properties"
        ::= { groupCfgCellular 6 }

   groupCfgCellDevice OBJECT-GROUP
        OBJECTS {
           cfgCellDeviceName,
           cfgCellDeviceSearchMode,
           cfgCellDeviceOperatorMode,
           cfgCellDeviceOperatorSpn,
           cfgCellDeviceBandsWcdma,
           cfgCellDeviceBandsLte,
           cfgCellDeviceBands5gnsa,
           cfgCellDeviceBands5gsa,
           cfgCellDevice5gMode
           }
        STATUS  current
        DESCRIPTION
            "Cellular Device Properties"
        ::= { groupCfgCellular 7 }

   groupCfgCertificate OBJECT-GROUP
        OBJECTS {
            cfgCrtCrlCaId,
            cfgCrtCrlEnabled,
            cfgCrtCrlUrl,
            cfgCrtCrlTimeBeforeExpire,
            cfgCrtCrlRetryPeriod,
            cfgCrtMonEnabled,
            cfgCrtMonType,
            cfgCrtMonId,
            cfgCrtMonTimeBeforeExpire,
            cfgCrtMonRepeatPeriod,
            cfgCrtGlblDailyRefreshEnabled,
            cfgCrtGlblDailyRefreshTime
           }
        STATUS  current
        DESCRIPTION
            "Certificate configuration"
        ::= { groupConfiguration 1001 }

   groupCfgScep OBJECT-GROUP
       OBJECTS {
       cfgScepCaIdentifier,
       cfgScepChallengePassword,
       cfgScepPollingInterval,
       cfgScepPollingMaxTries,
       cfgScepAutoRenewEnabled,
       cfgScepAutoRenewTimeBeforeExpire,
       cfgScepAutoRenewRetryPeriod,
       cfgScepCsrCN,
       cfgScepServerUrl,
       cfgScepCsrC,
       cfgScepCsrST,
       cfgScepCsrL,
       cfgScepCsrO,
       cfgScepCsrOU,
       cfgScepCaId,
       cfgScepCertId,
       cfgScepRaId
       }
       STATUS  current
       DESCRIPTION
           "SCEP properties"
       ::= { groupConfiguration 1002 }

   groupCfgVpn OBJECT IDENTIFIER ::= { groupConfiguration 1003 }

   groupCfgVpnOpenvpn OBJECT-GROUP
       OBJECTS {
       cfgVpnOpenvpnMode,
       cfgVpnOpenvpnLocal,
       cfgVpnOpenvpnLPort,
       cfgVpnOpenvpnRemote,
       cfgVpnOpenvpnRPort,
       cfgVpnOpenvpnProto,
       cfgVpnOpenvpnAuth,
       cfgVpnOpenvpnCipher,
       cfgVpnOpenvpnDevType,
       cfgVpnOpenvpnKeepaliveInterval,
       cfgVpnOpenvpnKeepaliveTimeout,
       cfgVpnOpenvpnConnectRetry,
       cfgVpnOpenvpnConnectRetryLimit,
       cfgVpnOpenvpnCompress,
       cfgVpnOpenvpnVerb,
       cfgVpnOpenvpnKeyType,
       cfgVpnOpenvpnKeyDirection,
       cfgVpnOpenvpnRemoteCertTls,
       cfgVpnOpenvpnVerifyX509Name,
       cfgVpnOpenvpnVerifyX509String,
       cfgVpnOpenvpnUsername,
       cfgVpnOpenvpnPassword,
       cfgVpnOpenvpnCaIds,
       cfgVpnOpenvpnCertId,
       cfgVpnOpenvpnStaticKeyId,
       cfgVpnOpenvpnCustomOptions
       }
       STATUS  current
       DESCRIPTION
           "Openvpn properties"
       ::= { groupCfgVpn 1 }

   groupCfgVpnIpsec OBJECT-GROUP
       OBJECTS {
       cfgVpnIpsecLeft,
       cfgVpnIpsecRight,
       cfgVpnIpsecLeftSubnet,
       cfgVpnIpsecRightSubnet,
       cfgVpnIpsecLeftId,
       cfgVpnIpsecRightId,
       cfgVpnIpsecLeftAuth,
       cfgVpnIpsecRightAuth,
       cfgVpnIpsecType,
       cfgVpnIpsecAuto,
       cfgVpnIpsecKeyExchange,
       cfgVpnIpsecMobIke,
       cfgVpnIpsecIke,
       cfgVpnIpsecEsp,
       cfgVpnIpsecIkeLifetime,
       cfgVpnIpsecLifetime,
       cfgVpnIpsecKeyingTries,
       cfgVpnIpsecDpdAction,
       cfgVpnIpsecDpdDelay,
       cfgVpnIpsecDpdTimeout,
       cfgVpnIpsecPassword,
       cfgVpnIpsecCloseAction,
       cfgVpnIpsecReauth,
       cfgVpnIpsecCaIds,
       cfgVpnIpsecLeftCertId,
       cfgVpnIpsecRightCertId,
       cfgVpnIpsecLeftSigkeyId,
       cfgVpnIpsecRightSigkeyId,
       cfgVpnIpsecLeftKeyId,
       cfgVpnIpsecCustomOptions
       }
       STATUS  current
       DESCRIPTION
           "IPsec Properties"
       ::= { groupCfgVpn 2 }

   groupCfgVpnIpsecGlobal OBJECT-GROUP
       OBJECTS {
       cfgVpnIpsecGlblVirtualTunnelInterface,
       cfgVpnIpsecGlblCustomOptions
       }
       STATUS  current
       DESCRIPTION
           "Ipsec Global Properties"
       ::= { groupCfgVpn 3 }

   groupCfgVpnIpsecDebug OBJECT-GROUP
       OBJECTS {
       cfgVpnIpsecDbgAsn,
       cfgVpnIpsecDbgCfg,
       cfgVpnIpsecDbgChd,
       cfgVpnIpsecDbgDmn,
       cfgVpnIpsecDbgEnc,
       cfgVpnIpsecDbgEsp,
       cfgVpnIpsecDbgIke,
       cfgVpnIpsecDbgImc,
       cfgVpnIpsecDbgImv,
       cfgVpnIpsecDbgJob,
       cfgVpnIpsecDbgKnl,
       cfgVpnIpsecDbgLib,
       cfgVpnIpsecDbgMgr,
       cfgVpnIpsecDbgNet,
       cfgVpnIpsecDbgPts,
       cfgVpnIpsecDbgTls,
       cfgVpnIpsecDbgTnc
       }
       STATUS  current
       DESCRIPTION
           "IPsec Debug Properties"
       ::= { groupCfgVpn 4 }

   groupCfgVpnWireguard OBJECT-GROUP
       OBJECTS {
       cfgVpnWgName,
       cfgVpnWgListenPort,
       cfgVpnWgPrivateKey,
       cfgVpnWgPublicKey,
       cfgVpnWgMark
       }
       STATUS  current
       DESCRIPTION
           "Wireguard Properties"
       ::= { groupCfgVpn 5 }

   groupCfgVpnWireguardPeers OBJECT-GROUP
       OBJECTS {
       cfgVpnWgPEnabled,
       cfgVpnWgPInstance,
       cfgVpnWgPPeer,
       cfgVpnWgPEndpoint,
       cfgVpnWgPAllowedIps,
       cfgVpnWgPPsk,
       cfgVpnWgPPersistentKeepalive
       }
       STATUS  current
       DESCRIPTION
           "Wireguard Peers Properties"
       ::= { groupCfgVpn 6 }

   groupCfgVpnTunnelEndPoint OBJECT-GROUP
       OBJECTS {
       cfgVpnTepName,
       cfgVpnTepTunnelType,
       cfgVpnTepSource,
       cfgVpnTepDestination,
       cfgVpnTepTos,
       cfgVpnTepRxKeyId,
       cfgVpnTepTxKeyId,
       cfgVpnTepVnid,
       cfgVpnTepDestinationPort
       }
       STATUS  current
       DESCRIPTION
           "Tunnel Endpoint Properties"
       ::= { groupCfgVpn 7 }

   groupCfgLdap OBJECT-GROUP
       OBJECTS {
          cfgLdapEnabled,
          cfgLdapUrl1,
          cfgLdapUrl2,
          cfgLdapCaIds,
          cfgLdapUserBaseDn,
          cfgLdapAccessDn,
          cfgLdapAccessPassword,
          cfgLdapAccessFilter,
          cfgLdapUserRoleAttribute,
          cfgLdapAdminRoleDn,
          cfgLdapMonitorRoleDn,
          cfgLdapRequestTimeout,
          cfgLdapCrlExpiryExtension,
          cfgLdapTlsControlParams,
          cfgLdapTlsCiphers
          }
       STATUS  current
       DESCRIPTION
           "Lightweight Directory Access Protocol (LDAP) Properties"
       ::= { groupConfiguration 1005 }

    groupCfgRadsec OBJECT IDENTIFIER ::= { groupConfiguration 1008 }

    groupCfgRadsecInstance OBJECT-GROUP
        OBJECTS {
            cfgRadsecProxyInstEnabled,
            cfgRadsecProxyInstInstanceId,
            cfgRadsecProxyInstLocalAddress,
            cfgRadsecProxyInstLocalAuthSrvPort,
            cfgRadsecProxyInstLocalAcctSrvPort,
            cfgRadsecProxyInstLocalSecret
            }
        STATUS  current
        DESCRIPTION
            "RadSec Instance Properties"
        ::= { groupCfgRadsec 1 }

    groupCfgRadsecUpstreamServer OBJECT-GROUP
        OBJECTS {
            cfgRadsecProxyUpSrvEnabled,
            cfgRadsecProxyUpSrvInstanceId,
            cfgRadsecProxyUpSrvAuthAddress,
            cfgRadsecProxyUpSrvAcctAddress,
            cfgRadsecProxyUpSrvPort,
            cfgRadsecProxyUpSrvSecret,
            cfgRadsecProxyUpSrvCaCertId,
            cfgRadsecProxyUpSrvClientCertId,
            cfgRadsecProxyUpSrvClientKeyId,
            cfgRadsecProxyUpSrvRealms
            }
        STATUS  current
        DESCRIPTION
            "RadSec Upstream Server Properties"
        ::= { groupCfgRadsec 2 }

    groupCfgStunnel OBJECT-GROUP
        OBJECTS {
            cfgStunnelGlobalEnabled,
            cfgStunnelGlobalLogLevel,
            cfgStunnelInstEnabled,
            cfgStunnelInstMode,
            cfgStunnelInstListenAddress,
            cfgStunnelInstDestinationAddress,
            cfgStunnelInstTlsCertId,
            cfgStunnelInstTlsCaIds,
            cfgStunnelInstVerificationMode,
            cfgStunnelInstTlsTrustAnchorCerts,
            cfgStunnelInstTlsPeerIdentities
            }
        STATUS  current
        DESCRIPTION
            "Stunnel Properties"
        ::= { groupConfiguration 1010 }


-- RPC Groups
-- ==========

    groupRpcConfiguration OBJECT-GROUP
        OBJECTS {
           rpcCfgRevert,
           rpcCfgApply,
           rpcCfgFile
           }
        STATUS  current
        DESCRIPTION
            "RPCs for Configuration"
        ::= { groupRpc 1 }

    groupRpcFirmware OBJECT-GROUP
        OBJECTS {
           rpcFwFlash
           }
        STATUS  current
        DESCRIPTION
            "RPCs for Firmware"
        ::= { groupRpc 2 }

    groupRpcSystem OBJECT-GROUP
        OBJECTS {
           rpcSysReboot,
           rpcSysFactoryReset,
           rpcSysErrorReset,
           rpcSysKernelLogReset
           }
        STATUS  current
        DESCRIPTION
            "RPCs for the System"
        ::= { groupRpc 3 }

    groupRpcCertificate OBJECT-GROUP
        OBJECTS {
           rpcCrtFile,
           rpcCrtCrlGet,
           rpcCrtAttribute
           }
        STATUS  current
        DESCRIPTION
            "RPCs for Certificates"
        ::= { groupRpc 4 }

    groupRpcDriver OBJECT-GROUP
        OBJECTS {
           rpcDrvName,
           rpcDrvDfsSimulateRadar
           }
        STATUS  current
        DESCRIPTION
            "RPCs Software Driver"
        ::= { groupRpc 6 }

    groupRpcScep OBJECT-GROUP
        OBJECTS {
           rpcScepGetCaCrt,
           rpcScepEnroll
           }
        STATUS  current
        DESCRIPTION
            "RPC SCEP group."
        ::= { groupRpc 100 }

    groupRpcCellular OBJECT-GROUP
        OBJECTS {
           rpcCellModuleInit,
           rpcCellFwUpgrade,
           rpcCellFotaUpgrade
           }
        STATUS  current
        DESCRIPTION
            "RPC Cellular group."
        ::= { groupRpc 16 }

    groupRpcPartitions OBJECT-GROUP
        OBJECTS {
           rpcPartGenerateHashes
           }
        STATUS  current
        DESCRIPTION
            "RPC Partitions group."
        ::= { groupRpc 103 }

-- Settings Groups
-- ===============

    groupSetConfigurationFile OBJECT-GROUP
        OBJECTS {
           setCfgFileUrl,
           setCfgFileFormat,
           setCfgFileType,
           setCfgFilePassword
           }
        STATUS  current
        DESCRIPTION
            "Configuration File Settings"
        ::= { groupSettings 1 }

    groupSetWireless OBJECT-GROUP
        OBJECTS {
           setWlanDevName,
           setWlanDevRfOutput,
           setWlanDevFrequency,
           setWlanDevPower
           }
        STATUS  current
        DESCRIPTION
            "Wireless Settings"
        ::= { groupSettings 3 }

    groupSetWlanDbg OBJECT-GROUP
        OBJECTS {
           setWlanDbgIfaceName,
           setWlanDbgHandoff,
           setWlanDbgScan,
           setWlanDbgMlme,
           setWlanDbgEvents,
           setWlanDbgBeaconrssi,
           setWlanDbgAckrssi,
           setWlanDbgBeaconfiltered,
           setWlanDbgRatelimit,
           setWlanDbgBeacontsf,
           setWlanDbgRange,
           setWlanDbgReports
           }
        STATUS  current
        DESCRIPTION
            "Wireless Debug Properties"
        ::= { groupSettings 4 }

    groupSetFirmware OBJECT-GROUP
        OBJECTS {
           setFwFileUrl,
           setFwKeepConfig
           }
        STATUS  current
        DESCRIPTION
            "Firmware Settings"
        ::= { groupSettings 5 }

    groupSetCertificate OBJECT-GROUP
        OBJECTS {
           setCrtFileUrl,
           setCrtFileFormat,
           setCrtFileId,
           setCrtFileType,
           setCrtAttributeKey,
           setCrtAttributeValue,
           setCrtFilePassphrase
           }
        STATUS  current
        DESCRIPTION
            "HTTPS Certificate/Key File Settings"
        ::= { groupSettings 6 }

    groupSetSystem OBJECT-GROUP
        OBJECTS {
           setSysTime,
           setSysSfEncryptionEnabled,
           setSysSfEncryptionPassword
           }
        STATUS  current
        DESCRIPTION
            "System Settings"
        ::= { groupSettings 7 }

    groupSetTechPreview OBJECT-GROUP
        OBJECTS {
            setTechPreviewEnabled
        }
        STATUS  current
        DESCRIPTION
            "TechPreview Settings"
        ::= { groupSettings 8 }

    groupSetTlsClient OBJECT-GROUP
        OBJECTS {
           setTlsCltCaIds,
           setTlsCltCrlExpiryExtension,
           setTlsCltTlsControlParams,
           setTlsCltTlsCiphers
           }
        STATUS  current
        DESCRIPTION
            "TLS Client Settings"
        ::= { groupSettings 9 }

    groupSetCellular OBJECT-GROUP
        OBJECTS {
           setCellFwUrl,
           setCellSimSlot,
           setCellFotaUrl
           }
        STATUS  current
        DESCRIPTION
            "RPCs for Cellular"
        ::= { groupSettings 50 }

-- Hardware Groups
-- ===============

    groupHwSystem OBJECT-GROUP
        OBJECTS {
           hwSysProduct,
           hwSysSerial,
           hwSysRevision,
           hwSysVersion
           }
        STATUS  current
        DESCRIPTION
            "Hardware System"
        ::= { groupHardware 1 }

    groupHwNetwork OBJECT-GROUP
        OBJECTS {
           hwNetEthName,
           hwNetEthAssembled,
           hwNetEthMacAddress,
           hwNetEthOperation,
           hwNetEthSpeed,
           hwNetEthHwIndex
           }
        STATUS  current
        DESCRIPTION
            "Hardware Network"
        ::= { groupHardware 2 }

    groupHwWireless OBJECT-GROUP
        OBJECTS {
           hwWlanDevAssembled,
           hwWlanDevType,
           hwWlanDevSerial,
           hwWlanDevRevision,
           hwWlanDevVersion,
           hwWlanDevPcbId,
           hwWlanDevAssemblyId,
           hwWlanDevMacAddress,
           hwWlanDevAntennaProfileId,
           hwWlanDevAntennaGain,
           hwWlanDevCableLoss,
           hwWlanGlblRegulatoryRegionId
           }
        STATUS  current
        DESCRIPTION
            "Hardware Wireless"
        ::= { groupHardware 3 }

    groupHwBaseBoard OBJECT-GROUP
        OBJECTS {
           hwBbType,
           hwBbSerial,
           hwBbRevision,
           hwBbVersion,
           hwBbPcbId,
           hwBbAssemblyId
           }
        STATUS  current
        DESCRIPTION
            "Hardware Base Board"
        ::= { groupHardware 4 }

    groupHwIfaceBoard OBJECT-GROUP
        OBJECTS {
           hwIfBrdAssembled,
           hwIfBrdType,
           hwIfBrdSerial,
           hwIfBrdRevision,
           hwIfBrdVersion,
           hwIfBrdPcbId,
           hwIfBrdAssemblyId
           }
        STATUS  current
        DESCRIPTION
            "Hardware Interface Board"
        ::= { groupHardware 5 }

    groupHwSensor OBJECT-GROUP
        OBJECTS {
           hwSensorName,
           hwSensorUnit,
           hwSensorValue
           }
        STATUS  current
        DESCRIPTION
            "Hardware Sensors"
        ::= { groupHardware 7 }

    groupHwCellular OBJECT-GROUP
        OBJECTS {
            hwCellAssembled,
            hwCellType,
            hwCellSerial,
            hwCellImei,
            hwCellFwVersion,
            hwCellModuleInitialized,
            hwCellFwVersionPreferred,
            hwCellFwVersionPreferredVersion
        }
        STATUS  current
        DESCRIPTION
            "Cellular Hardware"
        ::= { groupHardware 10 }

    groupHwGnss OBJECT-GROUP
        OBJECTS {
            hwGnssAssembled,
            hwGnssType,
            hwGnssSerial
        }
        STATUS  current
        DESCRIPTION
            "GNSS Hardware"
        ::= { groupHardware 11 }

    groupHwPowerSupply OBJECT-GROUP
        OBJECTS {
            hwPsAssembled,
            hwPsType,
            hwPsSerial,
            hwPsInputRange
        }
        STATUS  current
        DESCRIPTION
            "Power Supply Hardware"
        ::= { groupHardware 12 }


-- Software Groups
-- ===============

    groupSwFirmware OBJECT-GROUP
        OBJECTS {
           swFwName,
           swFwVersion,
           swFwRevision,
           swFwPackageName
           }
        STATUS  current
        DESCRIPTION
            "Software Firmware"
        ::= { groupSoftware 1 }

    groupSwSystem OBJECT-GROUP
        OBJECTS {
           swSysRebootReason,
           swSysBootStatus,
           swSysInitialized,
           swSysMsgPriority,
           swSysMsgCode,
           swSysMsgText,
           swSysMsgEpoch,
           swSysMsgDate
           }
        STATUS  current
        DESCRIPTION
            "Software System"
        ::= { groupSoftware 2 }

    groupSwOperatingSystem OBJECT-GROUP
        OBJECTS {
           swOsName,
           swOsVersion,
           swOsRevision,
           swOsUptime,
           swOsPartDevice,
           swOsPartLabel,
           swOsPartHash
           }
        STATUS  current
        DESCRIPTION
            "Software System"
        ::= { groupSoftware 3 }

    groupSwDrvDfs OBJECT-GROUP
        OBJECTS {
           swDrvDfsName,
           swDrvDfsPulsesDetected,
           swDrvDfsPulsesProcessed,
           swDrvDfsRadarDetected
           }
        STATUS  current
        DESCRIPTION
            "Software Driver DFS Statistics"
        ::= { groupSoftware 4 }

    groupSwDrvCntWlanMac OBJECT-GROUP
        OBJECTS {
           swDrvCntWlanMacName,
           swDrvCntWlanMacTxHandlersDrop,
           swDrvCntWlanMacTxHandlersQueued,
           swDrvCntWlanMacTxHandlersDropUnencrypted,
           swDrvCntWlanMacTxHandlersDropFragment,
           swDrvCntWlanMacTxHandlersDropWep,
           swDrvCntWlanMacTxHandlersDropNotAssoc,
           swDrvCntWlanMacTxHandlersDropUnauthPort,
           swDrvCntWlanMacRxHandlersDrop,
           swDrvCntWlanMacRxHandlersQueued,
           swDrvCntWlanMacRxHandlersDropNullfunc,
           swDrvCntWlanMacRxHandlersDropDefrag,
           swDrvCntWlanMacRxHandlersDropShort,
           swDrvCntWlanMacTxExpandSkbHead,
           swDrvCntWlanMacTxExpandSkbHeadCloned,
           swDrvCntWlanMacRxExpandSkbHead,
           swDrvCntWlanMacRxExpandSkbHead2,
           swDrvCntWlanMacRxHandlersFragments,
           swDrvCntWlanMacTxstatusDrop
           }
        STATUS  current
        DESCRIPTION
            "Software Driver DFS Statistics"
        ::= { groupSoftware 7 }

    groupSwDrvCntWlanWmm OBJECT-GROUP
        OBJECTS {
           swDrvCntWlanWmmName,
           swDrvCntWlanWmmTx,
           swDrvCntWlanWmmRx,
           swDrvCntWlanWmmShortRetries,
           swDrvCntWlanWmmLongRetries,
           swDrvCntWlanWmmExceededRetries
           }
        STATUS  current
        DESCRIPTION
            "Software Driver WMM Statistics"
        ::= { groupSoftware 8 }

    groupSwDrvConStat OBJECT-GROUP
        OBJECTS {
           swDrvConStatWlanName,
           swDrvConStatMacName,
           swDrvConStatRxBrExtra,
           swDrvConStatRxBrValue,
           swDrvConStatRxBytes,
           swDrvConStatRxPackets,
           swDrvConStatTxBrExtra,
           swDrvConStatTxBrValue,
           swDrvConStatTxBytes,
           swDrvConStatTxPackets,
           swDrvConStatSigChain0,
           swDrvConStatSigChain1,
           swDrvConStatSigChain2,
           swDrvConStatSigChain3,
           swDrvConStatSigAvgChain0,
           swDrvConStatSigAvgChain1,
           swDrvConStatSigAvgChain2,
           swDrvConStatSigAvgChain3,
           swDrvConStatTxRetries,
           swDrvConStatTxFailed,
           swDrvConStatCacheNo,
           swDrvConStatSigCombined,
           swDrvConStatSigAvgCombined,
           swDrvConStatWlanIf,
           swDrvConStatConnectedTime
           }
        STATUS  current
        DESCRIPTION
            "Software Driver Connection Status"
        ::= { groupSoftware 9 }

    groupSwDrvCntWlanTable OBJECT-GROUP
        OBJECTS {
           swDrvCntWlanName,
           swDrvCntWlanAssocSuccess,
           swDrvCntWlanAssocFailure,
           swDrvCntWlanAssocFailureMaxSta,
           swDrvCntWlanNumAssocSta,
           swDrvCntWlanEapAuthStarted,
           swDrvCntWlanEapAuthFailed,
           swDrvCntWlanChannelActive,
           swDrvCntWlanChannelBusy,
           swDrvCntWlanChannelTransmit,
           swDrvCntWlanChannelReceive,
           swDrvCntWlanChannelNoise,
           swDrvCntWlanEapAuthStartedFT,
           swDrvCntWlanEapAuthStartedFILS,
           swDrvCntWlanEapAuthStartedPKMSA,
           swDrvCntWlanBeaconMiss,
           swDrvCntWlanBeaconRx,
           swDrvCntWlanApBeaconMiss,
           swDrvCntWlanPilotMiss,
           swDrvCntWlanPilotRx
           }
        STATUS  current
        DESCRIPTION
            "Software Driver Wlan Counters"
        ::= { groupSoftware 10 }

    groupSwRdm OBJECT-GROUP
        OBJECTS {
           swRdmMaxEirp,
           swRdmMaxApp
           }
        STATUS  current
        DESCRIPTION
            "Software RDM"
        ::= { groupSoftware 11 }

    groupSwCertificate OBJECT-GROUP
        OBJECTS {
           swCrtExpirationTime,
           swCrtFingerprint,
           swCrtCertId,
           swCrtCertLabel,
           swCrtCertExpirationTime,
           swCrtCertFingerprint,
           swCrtCrlId,
           swCrtCrlLabel,
           swCrtCrlExpirationTime,
           swCrtCrlFingerprint
           }
        STATUS  current
        DESCRIPTION
            "Certificate Information"
        ::= { groupSoftware 14 }

    groupSwBootloader OBJECT-GROUP
        OBJECTS {
           swBootName,
           swBootVersion,
           swBootBuildDate
           }
        STATUS  current
        DESCRIPTION
            "Bootloader Informations"
        ::= { groupSoftware 20 }

    groupSwConfiguration OBJECT-GROUP
        OBJECTS {
            swCfgChangesCount,
            swCfgHash
            }
        STATUS  current
        DESCRIPTION
            "Device Configuration Information"
        ::= { groupSoftware 30 }

    groupSwCellular OBJECT-GROUP
        OBJECTS {
            swCellWwanName,
            swCellSimSlot,
            swCellSimStatus,
            swCellSimPrimary,
            swCellSimRoaming,
            swCellServiceName,
            swCellServiceMcc,
            swCellServiceMnc,
            swCellConnectionStatus,
            swCellConnectionMessage,
            swCellSignalType,
            swCellSignalRssi,
            swCellSignalRsrq,
            swCellSignalRsrp,
            swCellSignalSinr,
            swCellSignalRscp,
            swCellSignalEcio,
            swCellLteMode,
            swCellEarfcn,
            swCellCellId,
            swCellBandwidthUl,
            swCellBandwidthDl,
            swCellSimIccid,
            swCellServingCellState,
            swCellFullNetworkName,
            swCellConnectedTime,
            swCellSupports5g,
            swCellWcdmaWwanName,
            swCellWcdmaRscp,
            swCellWcdmaEcio,
            swCellWcdmaUarfcn,
            swCellWcdmaCellId,
            swCellWcdmaRac,
            swCellWcdmaLac,
            swCellWcdmaPhyCh,
            swCellWcdmaCpm,
            swCellWcdmaSpeechCode,
            swCellWcdmaSlot,
            swCellWcdmaSf,
            swCellWcdmaPsc,
            swCellWcdmaActiveBands,
            swCellLteWwanName,
            swCellLteRssi,
            swCellLteRsrq,
            swCellLteRsrp,
            swCellLteSinr,
            swCellLteDuplexMode,
            swCellLteEarfcn,
            swCellLteCellId,
            swCellLteBandwidthUl,
            swCellLteBandwidthDl,
            swCellLteTac,
            swCellLtePcid,
            swCellLteSrxlev,
            swCellLteTxPower,
            swCellLteCqi,
            swCellLteBand,
            swCellLteActiveBands,
            swCell5gnsaWwanName,
            swCell5gnsaRsrq,
            swCell5gnsaRsrp,
            swCell5gnsaSinr,
            swCell5gnsaArfcn,
            swCell5gnsaBandwidthDl,
            swCell5gnsaScs,
            swCell5gnsaPcid,
            swCell5gnsaBand,
            swCell5gnsaActiveBands,
            swCell5gsaWwanName,
            swCell5gsaRsrq,
            swCell5gsaRsrp,
            swCell5gsaSinr,
            swCell5gsaDuplexMode,
            swCell5gsaArfcn,
            swCell5gsaCellId,
            swCell5gsaBandwidthDl,
            swCell5gsaTac,
            swCell5gsaScs,
            swCell5gsaPcid,
            swCell5gsaSrxlev,
            swCell5gsaBand,
            swCell5gsaActiveBands
            }
        STATUS  current
        DESCRIPTION
            "Cellular Status Information"
        ::= { groupSoftware 50 }

    groupSwNlm OBJECT-GROUP
        OBJECTS {
            swNlmMonState
            }
        STATUS  current
        DESCRIPTION
            "NLM Monitor Status Information"
        ::= { groupSoftware 52 }


-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End GROUPS
-- **********************************************************************

-- **********************************************************************
-- *  Begin COMPLIANCE STATEMENTS
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

    compliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "Implementation Requirements for DT50 bindings"
    MODULE  -- this module
        MANDATORY-GROUPS {
            groupCfgSysGeneral,
            groupCfgSysNameserver,
            groupCfgNetEthernet,
            groupCfgNetWlan,
            groupCfgNetVlan,
            groupCfgNetIp,
            groupCfgNetCarp,
            groupCfgNetMacVLan,
            groupCfgNetEth802dot1x,
            groupCfgNetWwan,
            groupCfgNetOpenvpn,
            groupCfgNetIpsec,
            groupCfgNetFlowController,
            groupCfgNetTunnelEndPoint,
            groupCfgNetWireguard,
            groupCfgWlanDevice,
            groupCfgWlanInterface,
            groupCfgWlanHandoff,
            groupCfgWlanScanFreq,
            groupCfgWlanWme,
            groupCfgWlanDbg,
            groupCfgWlanAclBlack,
            groupCfgWlanAclWhite,
            groupCfgWlanGlobal,
            groupCfgWlan802dot1x,
            groupCfgWlan802dot1xAuth,
            groupCfgWlan802dot1xAcct,
            groupCfgWlan802dot11r,
            groupCfgWlanNeighbour,
            groupCfgWlanRapd,
            groupCfgRouteDefault,
            groupCfgRouteTable,
            groupCfgMRouteTable,
            groupCfgRouteRuleTable,
            groupCfgRouteDhcpTable,
            groupCfgRouteGlobal,
            groupCfgLogging,
            groupCfgSnmpd,
            groupCfgSnmpTrap,
            groupCfgDhcpGlobal,
            groupCfgDhcpDnsmasq,
            groupCfgDhcpScope,
            groupCfgDhcpDomainOverrides,
            groupCfgDhcpHostOverrides,
            groupCfgDhcpRelay,
            groupCfgDhcpTag,
            groupCfgNtp,
            groupCfgHttp,
            groupCfgLldp,
            groupCfgMdns,
            groupCfgSsdp,
            groupCfgScep,
            groupCfgQos,
            groupCfgQosGlobal,
            groupCfgQosDscpToTidMapTable,
            groupCfgQosVlanToTidMapTable,
            groupCfgQosIpToTidMapTable,
            groupCfgQosEthertypeToL2Table,
            groupCfgNlm,
            groupCfgCli,
            groupCfgCellConnectionManagement,
            groupCfgCellDbg,
            groupCfgCellSimSlot,
            groupCfgCellDefaultBearer,
            groupCfgCellDevice,
            groupCfgCertificate,
            groupCfgVpn,
            groupCfgVpnOpenvpn,
            groupCfgVpnIpsec,
            groupCfgVpnIpsecGlobal,
            groupCfgVpnIpsecDebug,
            groupCfgVpnWireguard,
            groupCfgVpnWireguardPeers,
            groupCfgVpnTunnelEndPoint,
            groupCfgLdap,
            groupCfgRadsec,
            groupCfgRadsecInstance,
            groupCfgRadsecUpstreamServer,
            groupCfgStunnel,

            groupRpcConfiguration,
            groupRpcFirmware,
            groupRpcSystem,
            groupRpcCertificate,
            groupRpcDriver,
            groupRpcScep,
            groupRpcCellular,
            groupRpcPartitions,

            groupSetConfigurationFile,
            groupSetWireless,
            groupSetWlanDbg,
            groupSetFirmware,
            groupSetCertificate,
            groupSetSystem,
            groupSetTechPreview,
            groupSetTlsClient,
            groupSetCellular,

            groupHwSystem,
            groupHwNetwork,
            groupHwWireless,
            groupHwBaseBoard,
            groupHwIfaceBoard,
            groupHwSensor,
            groupHwCellular,
            groupHwGnss,
            groupHwPowerSupply,

            groupSwFirmware,
            groupSwSystem,
            groupSwOperatingSystem,
            groupSwDrvDfs,
            groupSwDrvCntWlanMac,
            groupSwDrvCntWlanWmm,
            groupSwDrvConStat,
            groupSwDrvCntWlanTable,
            groupSwRdm,
            groupSwCertificate,
            groupSwBootloader,
            groupSwConfiguration,
            groupSwCellular,
            groupSwNlm
        }
    ::= { compliances 1 }

-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End COMPLIANCE STATEMENTS
-- **********************************************************************

-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End of MIB DEFINITION
-- **********************************************************************
END


-- **********************************************************************
-- **********************************************************************
