-- *****************************************************************
-- 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 "202111250000Z"

    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     "202111250000Z"
    DESCRIPTION  "Release 6.9.6-RC1"

    ::= { 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 }
     cfgNlm              OBJECT IDENTIFIER ::= { configuration 40 }
     cfgCli              OBJECT IDENTIFIER ::= { configuration 100 }
     cfgCellular         OBJECT IDENTIFIER ::= { configuration 101 }
     cfgVpn              OBJECT IDENTIFIER ::= { configuration 1003 }

--  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 }
     rpcCellular         OBJECT IDENTIFIER ::= { rpc 101 }

--  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 }
      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 }

--  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 }
     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..255))
        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 with a hyphen.

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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.

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

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

    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.

             Applies to AP and STA."
        ::= { 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`

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

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

    cfgSysNameserverTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgSysNameserverTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Nameserver configuration."
        ::= { 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
                 }

    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) }
        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`

             Applies to AP and STA."
        ::= { 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)**.

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

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

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

             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

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

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

-- 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
                 }

    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.

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

    cfgNetEthEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Ethernet interface disabled or enabled.

             Applies to AP and STA."
        ::= { 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

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

    cfgNetEthAutoneg OBJECT-TYPE
        SYNTAX INTEGER { forced(0), auto(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable or Disable 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 requires the mode to be
                auto.
             * **auto(1):**  Advertises the supported auto negotiation
               defined by `cfgNetEthSpeed`.

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

    cfgNetEthSpeed OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Defines 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

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

             **Examples:**

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

             When `cfgNetEthSpeed` 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 (1 + 2 + 4 + 8 + 32)

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

    cfgNetEthTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Eth 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 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'

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

    cfgNetEthTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Eth 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.

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

    cfgNetEthVlanMode OBJECT-TYPE
        SYNTAX INTEGER { trunk(0), access(1), nativeuntagged(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Eth 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).

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

    cfgNetEthProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Eth 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
            "When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation.

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

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

             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

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

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

    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
                 }

    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

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

    cfgNetWlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless interface disabled or enabled

             Applies to AP and STA."
        ::= { 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

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

    cfgNetWlanTrunk OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wlan 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 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'

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

    cfgNetWlanTag OBJECT-TYPE
        SYNTAX Integer32 (-1..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wlan 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
            "WLAN 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
            "WLAN 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
            "When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation.

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

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

             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

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

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

    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.

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

    cfgNetVlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN interface disabled or enabled.

             Applies to AP and STA."
        ::= { 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`.

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

    cfgNetVlanParent OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN 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).

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

    cfgNetVlanVid OBJECT-TYPE
        SYNTAX Integer32 (0..4094)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN ID

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

    cfgNetVlanProtected OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "VLAN 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
            "The MTU of the VLAN Interface

             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.

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

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

             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
        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 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..255))
        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
        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 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

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

    cfgNetCarpVhid OBJECT-TYPE
        SYNTAX Integer32 (1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The 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.

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

    cfgNetCarpPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The 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.

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

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

             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.

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

    cfgNetCarpAdvskew OBJECT-TYPE
        SYNTAX Integer32 (0..254)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Advertisement base in 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.

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

    cfgNetCarpAdvdivider OBJECT-TYPE
        SYNTAX Integer32 (1..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "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.

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

    cfgNetCarpRatio OBJECT-TYPE
        SYNTAX Integer32 (1..100)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The dead 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.

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

    cfgNetCarpPreempt OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "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.

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

    cfgNetCarpPreemptdemote OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Preempt other master 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.

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

    cfgNetCarpLocalInterfaceGroup OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The local carp interface group the carp interface belongs to.

             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.

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

    cfgNetCarpSyncInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Name of the CARP control interface.

             This interface is used to transmit and receive CARP advertisements.

             This interface is required to have its own unique IP address.

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

    cfgNetCarpMcastIp OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Multicast address on which CARP advertisments are transmitted.

             The default multicast address for CARP is 224.0.0.18.

             Use this parameter to specify a custom multicast destination.

             Applies to AP and STA."
        ::= { 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.

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

    cfgNetMacVlanEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "MACVLAN interface disabled or enabled.

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

    cfgNetMacVlanParent OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Name of the parent interface on which the MACVLAN resides.

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

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

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

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

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

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

             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.

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

    cfgNetMacVlanComment OBJECT-TYPE
        SYNTAX DisplayString
        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 MacVlan."
        ::= { cfgNetMacVlanTableEntry 19 }
-- -----------------------------------------------------------------------------

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

    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)
        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`.

             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

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

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

             Applies to AP and STA."
        ::= { 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).

             Applies to AP and STA."
        ::= { 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 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'

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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).

             Applies to AP and STA."
        ::= { 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
            "LLDP Port Operation

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation.

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

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

             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).

             Applies to AP and STA."
        ::= { 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

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

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

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

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

             When VTI is enabled (see `cfgVpnIpsecGlblVirtualTunnelInterface`),
             this allows to manually set the MTU of the IPsec tunnel.

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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 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'

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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).

             Applies to AP and STA."
        ::= { 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:** LLDP Disabled or Enabled

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation.

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

    cfgNetFcFlowMode OBJECT-TYPE
        SYNTAX INTEGER { normal(0), fullduplex(1) }
        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.

             Applies to AP and STA."
        ::= { 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

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

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

             Applies to AP and STA."
        ::= { 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):**

             Applies to AP and STA."
        ::= { 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 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'

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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).

             Applies to AP and STA."
        ::= { 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 Operation on Port

             When `cfgLldpEnabled` is enabled, this parameter controls if
             the interface takes part in LLDP operation.

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

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

             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

             Applies to AP and STA."
        ::= { 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
            "The MTU of the Wireguard Interface

             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..1)
        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)}
        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.

             **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) }
        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 mode)
             * **bw160(6):** 160MHz wide channel (only in 11ac mode)
             * **bw8080(7):** 80+80MHz wide channel (only in 11ac mode)
             * **bwAuto(8):** automatic channel width (only in 11ac 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, the `cfgWlanIfaceScanList` is used to configure which
             frequencies are to be scanned.

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

    cfgWlanDevPower OBJECT-TYPE
        SYNTAX Integer32 (6..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. 802.11n products only."
        ::= { cfgWlanDeviceTableEntry 12 }

    cfgWlanDevShortRetry OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of times the transmission of the RTS frame will be retried
             if there is no CTS received from the AP.

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

    cfgWlanDevLongRetry OBJECT-TYPE
        SYNTAX Integer32 (1..10)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Number of times the unicast data frames will be retried if there is
             no ACK from the receiver.

             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. 802.11n products only."
        ::= { cfgWlanDeviceTableEntry 24 }

    cfgWlanDevQmrrString OBJECT-TYPE
        SYNTAX DisplayString
        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,
                    cfgWlanIfaceL2nat INTEGER,
                    cfgWlanIfaceL2natLearningMode INTEGER,
                    cfgWlanIfaceL2natDefaultDestination DisplayString,
                    cfgWlanIfaceTimeAdvertisement INTEGER,
                    cfgWlanIfaceApIsolate INTEGER,
                    cfgWlanIfaceLlcBroadcastVlan DisplayString,
                    cfgWlanIfaceAtfSsidEnabled INTEGER,
                    cfgWlanIfaceAtfSsidAirtime Integer32
                 }

    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)}
        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) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Wireless Encryption Mode

             Supported encryption modes:

             * **open(0)** means open network whiteout encryption.
             * **psk(3)** means WPA-PSK security standard (IEEE 802.11i, AES-CCMP)
             * **eap(6)** WPA-EAP (EAP-TLS/TTLS/PEAP)
             * **sae(7)** enables SAE (WPA3-Personal)
             * **owe(8)** Opportunistic Wireless Encryption (WPA3 Enhanced Open)
             * **saepsk(9)** enables WP3-Personal Transition mode  (SAE + PSK)

             WPA-EAP enables 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
        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
            "Time in kus (1.024 ms) between the sending of beacon frames

             Applies to AP. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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.

             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. 802.11n products only."
        ::= { 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."
        ::= { 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 TU = 1.024 ms; for MFP)
             (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 TU = 1.024 ms; for MFP)
             (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 }

    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 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 802.11ac products in AP mode."
        ::= { 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 802.11ac products in AP mode."
        ::= { cfgWlanInterfaceTableEntry 122 }

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

    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 { t2gv1(1), 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.

            **t2gv1(1)** Train to Ground v1 (legacy)

            Legacy profile for DT30 compatibility.
            It does not provide advanced security features.
            The handoff decision is based on low RSSI measurements.
            An AP is blacklisted after a defined number of attempts
            and recovers after a defined timeout.

            * Encryption: psk/eap (WPA2)
            * Scanning: Foreground
            * Neighbour reporting: None
            * Associated Parameters:
            `cfgWlanHoScanningLevel`,
            `cfgWlanHoScanRateLimitTime`,
            `cfgWlanHoScanRateLimitTries`

            **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.

            * 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. 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 RSSI current value.
             It must be greater than or equal to `cfgWlanHoFilterLongY`.

             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 the previous average value.
             It must be smaller than or equal to `cfgWlanHoFilterLongX`.

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

    cfgWlanHoScanRateLimitTime OBJECT-TYPE
        SYNTAX Integer32(4..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scan Rate Limit Time

             Time in milliseconds (4ms steps) in which a number of attempts to
             connect to an AP can be tried. The option only affects t2gv1
             (see `cfgWlanHoProfile`).

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

    cfgWlanHoScanRateLimitTries OBJECT-TYPE
        SYNTAX Integer32(1..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scan Rate Limit Tries

             Number of attempts to connect to an AP before the AP is blacklisted
             and ignored. The AP is removed from the blacklist after
             `cfgWlanHoScanRateLimitTime` since the first attempt. This option
             only affects t2gv1 (see `cfgWlanHoProfile`).

             Applies to STA. 802.11n products only."
        ::= { 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.

             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

             When the RSSI level to the current connected AP is higher or equal
             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.

             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 level near

             When the measured distance (units) to the current connected AP
             is lower or equal 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:** 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 level far

             When the measured distance (units) to the current connected AP is
             greater or equal 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:** 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 in milliseconds.

             Setting zero disables distance handoff. This value is only active
             when `cfgWlanHoProfile` is set to T2Gv3.

             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.

             Parameter X is the weighting for the previous average distance value.
             It must be smaller than or equal to `cfgWlanHoDistanceFilterY`.

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

             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.

             Parameter Y is the weighting for the current distance value.
             It must be greater than or equal to `cfgWlanHoDistanceFilterX`.

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

             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 (0..12)
        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 (0..12)
        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 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. 802.11n products only."
        ::= { cfgWlanAclWhiteTableEntry 2 }

    cfgWlanAclWhiteInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { cfgWlanAclBlackTableEntry 2 }

    cfgWlanAclBlackInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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. 802.11n products only."
        ::= { 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(4..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.

             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. 802.11n products only."
        ::= { 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,
                    cfgWlan802dot1xCiphers DisplayString
                 }

    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

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

    cfgWlan802dot1xOwnIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The 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.

             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 parameters 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 parameters 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

             RADIUS client code will automatically try to use the
             next server when the current server is not replying to requests.
             If this interval is set, primary server will be retried after
             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 (larger than 0) and acct_server is configured,
             hostapd will send interim accounting updates every N seconds. Set
             to 0 to disable.

             **Note:** If set, this overrides possible Acct-Interim-Interval
             attribute in Access-Accept message. Thus, this value should not
             be configured in hostapd.conf if RADIUS server is used to control
             the interim interval. This value should not be less 600
             (10 minutes) and must not be less than 60 (1 minute).

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 7 }

    cfgWlan802dot1xNasId OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..48))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Optional NAS Identifier string for RADIUS messages

             When used, this should be unique to the NAS within the scope of
             the RADIUS server. For example, a fully qualified domain name can
             be used here. When using IEEE 802.11r, nas_identifier must be set
             and must be between 1 and 48 octets long.

             Applies to AP."
        ::= { cfgWlan802dot1xTableEntry 8 }

    cfgWlan802dot1xEapType OBJECT-TYPE
        SYNTAX INTEGER { tls(0), peap(1), ttls(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Specify the EAP type

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 9 }

    cfgWlan802dot1xIdentity OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The identity string for EAP

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 10 }

    cfgWlan802dot1xClientKeyPassword OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "The password to unlock the private key

             This is only required if the key is encrypted.

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 17 }

    cfgWlan802dot1xTlsControlParams OBJECT-TYPE
        SYNTAX Integer32 (0..3)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Bitfield to control TLS behaviour

             * **0x1** ignore certificate validity time
             * **0x2** ignore ca certificate

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 18 }

    cfgWlan802dot1xCiphers OBJECT-TYPE
        SYNTAX DisplayString
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "OpenSSL Cipher String for the 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 = eap(6).

             **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

             Applies to STA."
        ::= { cfgWlan802dot1xTableEntry 21 }

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

    cfgWlan802dot1xAuthServerTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgWlan802dot1xAuthServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Wireless 802dot1x AuthServer"
        ::= { cfgWireless 11 }

    cfgWlan802dot1xAuthServerTableEntry OBJECT-TYPE
        SYNTAX  CfgWlan802dot1xAuthServerTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "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
            "Enable this entry in the auth server list

             Applies to AP."
        ::= { cfgWlan802dot1xAuthServerTableEntry 2 }

    cfgWlan802dot1xAuthSrvId OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "ID of the authorisation server table

             The configuration item `cfgWlan802dot1xAuthServerParameter`
             references to this ID.

             Applies to AP."
        ::= { cfgWlan802dot1xAuthServerTableEntry 3 }

    cfgWlan802dot1xAuthSrvIpAddr OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "IP of the RADIUS server against which will be authenticated

             Applies to AP."
        ::= { cfgWlan802dot1xAuthServerTableEntry 4 }

    cfgWlan802dot1xAuthSrvPort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Port of the RADIUS server against which will be authenticated

             Applies to AP."
        ::= { 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

             Applies to AP."
        ::= { 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

             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 000102030405 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 }
-- =============================================================================

-- 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 DisplayString,
                    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
        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 DisplayString (SIZE(5..50))
        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
        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 be of type route (see `cfgNlmMonType`).

             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
        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 IpAddress,
                    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
            "Enable/Disable this multicast route entry

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

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

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


    cfgMRouteTableSource OBJECT-TYPE
        SYNTAX  IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Unicast source address to listen to

             If it is set to 0.0.0.0 all multicast traffic will be forwarded.

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

    cfgMRouteTableGroup OBJECT-TYPE
        SYNTAX  IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Multicast group to forward

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

    cfgMRouteTableOutput OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Output interface(s)

             Can be a list of interface names separated by spaces.

             Applies to AP and STA."
        ::= { 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`)

             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,
                    cfgRouteRuleLookupTable Integer32
                 }

    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
        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
        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 }

    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 }

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

    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
        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 (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.

             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     OCTET STRING,
                    cfgQosIpToTidMapDestNet    OCTET STRING,
                    cfgQosIpToTidMapProto      INTEGER,
                    cfgQosIpToTidMapSrcPort    Integer32,
                    cfgQosIpToTidMapDestPort   Integer32,
                    cfgQosIpToTidMapPrecedence Integer32,
                    cfgQosIpToTidMapEnabled    INTEGER}

    cfgQosIpToTidMapTableIndex OBJECT-TYPE
        SYNTAX  Integer32 (0..127)
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "IP To TID Priority Table Index"
        ::= { cfgQosIpToTidMapTableEntry 1 }

    cfgQosIpToTidMapSrcNet OBJECT-TYPE
        SYNTAX  OCTET STRING
        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  OCTET STRING
        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
            "Protocol For IP Prioritization Rule

             Allowed protocols are:

             * **any(0)**
             * **udp(1)**
             * **tcp(2)**

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 4 }

    cfgQosIpToTidMapSrcPort OBJECT-TYPE
        SYNTAX  Integer32 (-1..65536)
        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 protocol is set to udp or tcp.

             Applies to AP and STA. 802.11n products only."
        ::= { cfgQosIpToTidMapTableEntry 5 }

    cfgQosIpToTidMapDestPort OBJECT-TYPE
        SYNTAX  Integer32 (-1..65536)
        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 protocol is set to udp or tcp.

             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 }

    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 OCTET STRING,
                    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  OCTET STRING (SIZE(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
                 }

    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
            "Log Syslog messages to a remote server in accordance to RFC 5424.

             Applies to AP and STA."
        ::= { 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).

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

    cfgLogRemoteProtocol OBJECT-TYPE
        SYNTAX INTEGER { udp(0), tcp(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Protocol to Send Log Messages

             The udp(0) protocol complies with the standard syslog protocol.

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

    cfgLogRemoteIp OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote IP address.

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

    cfgLogRemotePort OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remote Port

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

    cfgLogRemoteType OBJECT-TYPE
        SYNTAX Integer32 (0..255)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "**TECHPREVIEW:** Bitfield to Control Remote Syslog Type

             * **0x00** - no remote syslog
             * **0x01** - standard syslog
             * **0x02** - security syslog
             * **0x04** - commissioning syslog

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

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

-- 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 read-write
        STATUS     current
        DESCRIPTION
            "Password for the maintainer.

             This is the community or the passphrase for the user maintainer
             depending on the cfgSnmpdVersion:

             * **v2c:** community string for maintainer
             * **v3usm:** passphrase for authentication and privacy for user
               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
                 }

    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..8)
        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>`.

             **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
        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 }


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

    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
                 }

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

    cfgDhcpScopeId OBJECT-TYPE
        SYNTAX Integer32 (0..8)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scope ID

             This is used in conjunction with the DHCP parameter
             `cfgDhcpDnsmasqScopeParameter`.

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

    cfgDhcpScopeInterface OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        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

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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

              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.

              Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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.

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

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

    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 DisplayString
                 }

    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 DisplayString (SIZE(1..255))
        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 }


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

-- 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
            "NTP Server 1

             The primary NTP server to update the time from.

             If the IP is set to `0.0.0.0` the NTP client will only listen to
             broadcast packages and `cfgNtpServer2` is ignored.

             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.

             **Examples:**

             * pool.ntp.org
             * 192.168.1.2
             * 0.0.0.0"
        ::= { cfgNtp 2 }

    cfgNtpServer2 OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NTP Server 2

             The secondary NTP server to update the time from. Used as a
             fallback when server 1 can not be reached.

             When `cfgNtpServer1` is set to `0.0.0.0` this entry is ignored.

             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.

             **Examples:**

             * pool.ntp.org
             * 192.168.1.2
             * 0.0.0.0"
        ::= { cfgNtp 3 }

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

-- HTTP

    cfgHttpUser OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Web administrator username.

             Applies to AP and STA."
        ::= { cfgHttp 1 }

    cfgHttpPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(5..126))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Web administrator password.

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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.

             Applies to AP and STA."
        ::= { 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

             Applies to AP and STA."
        ::= { 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

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

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

-- 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(0..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

             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 }

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

-- 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.

             Applies to AP and STA."
        ::= { 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
                 }

    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.

             In case of an event driven monitor (e.g. `cfgNlmMonType` set to
             **wlan(2)**), this defines a timeout."
        ::= { cfgNlmMonitorTableEntry 3 }

    cfgNlmMonCount OBJECT-TYPE
        SYNTAX Integer32 (0..65535)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Count

             The number of times the measured criteria has to be down, until
             the monitor is reported as down."
        ::= { cfgNlmMonitorTableEntry 4 }

    cfgNlmMonType OBJECT-TYPE
        SYNTAX INTEGER { phy(0), icmp(1), wlan(2), route(3) }
        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.
             * **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.
             * **wlan(2)** monitor listens to link status events of the wireless
               interface defined by `cfgNlmMonInterfaces`.

               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 is icmp(1), but it binds the
                            source interface statically. It can only be used
                            with actions `8000` and `8001` to bring up and tear
                            down routes dynamically. 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.

             **Note:** WLAN 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 specifies the name of the interface(s) which 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)

             All other modes ignore this parameter.

             **Examples:**

             * eth0, eth1
             * wlan0"
        ::= { cfgNlmMonitorTableEntry 6 }

    cfgNlmMonDestination OBJECT-TYPE
        SYNTAX IpAddress
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "NLM Monitor Destination

             This parameter specifies the IPv4 address which is to be monitored.

             It will only be used when `cfgNlmMonType` is set to **icmp(1)**."
        ::= { cfgNlmMonitorTableEntry 7 }

    cfgNlmMonUpAction OBJECT-TYPE
        SYNTAX Integer32 (0..8001)
        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:

             **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 15)
             Enable Access Point operation on the wireless interface.
             Note: Currently all wireless interfaces on radio0 are enabled.

             **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..8001)
        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:

             **1xxx** (offset: 1000, x: CARP group from 1 to 255)
             Demote CARP group defined by `cfgNetCarpLocalInterfaceGroup`

             **20xx** (offset: 2000, x: wlan interface from 0 to 15)
             Disable Access Point operation on the wireless interface.
             Note: Currently all wireless interfaces on radio0 are disabled.

             **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 (0..2147483647)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Scan Loop Debounce Interval In Milliseconds

             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 }


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

-- CLI

    cfgCliEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI feature support configuration.

             Applies to AP and STA."
        ::= { cfgCli 1 }

    cfgCliUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..31))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI username.

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

    cfgCliPassword OBJECT-TYPE
        SYNTAX DisplayString (SIZE(0..63))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI password.

             For SSH, a password is mandatory. Accessing the device via telnet
             without using a password is done by setting the password to an
             empty string (zero string).

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

    cfgCliTelnetEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI telnet support configuration.

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

    cfgCliSshEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "CLI ssh support configuration.

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

    cfgCliTelnetAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Address to which the telnet server for CLI binds.

             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

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

    cfgCliSshAddress OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Address to which the ssh server for CLI binds.

             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

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


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

-- Cellular

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

    cfgCellSimTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellSimTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Parameter Table

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

    cfgCellSimTableEntry OBJECT-TYPE
        SYNTAX  CfgCellSimTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Parameter Table Entry

             Applies to cellular products only."
        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     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellSimTableEntry 1 }

    cfgCellSimSlot1 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SIM Slot 1

             This value references the index of the desired SIM profile in the
             `cfgCellSimProfileTable` for the SIM card in slot 1. A value of -1
             disables slot 1.

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

    cfgCellSimSlot2 OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "SIM Slot 2

             This value references the index of the desired SIM profile in the
             `cfgCellSimProfileTable` for the SIM card in slot 2. A value of -1
             disables slot 2.

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

    cfgCellSimPrimarySlot OBJECT-TYPE
        SYNTAX INTEGER { slot1(1), slot2(2) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Primary SIM Slot

             First connection attempts are always done with the SIM card in the
             primary slot. Choose either

             * **slot1(1)**
             * **slot2(2)**

             as primary SIM slot.

             **Note:** If only one slot is activated, this parameter
             has no effect.

             Applies to cellular products only."
        ::= { cfgCellSimTableEntry 4 }

    cfgCellSimUnlockTimeout 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 SIMs 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."
        ::= { cfgCellSimTableEntry 5 }

    cfgCellSimProfileTable OBJECT-TYPE
        SYNTAX  SEQUENCE OF CfgCellSimProfileTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Profiles

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

    cfgCellSimProfileTableEntry OBJECT-TYPE
        SYNTAX  CfgCellSimProfileTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "SIM Profile

             Applies to cellular products only."
        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     current
        DESCRIPTION
            "Table Entry Index"
        ::= { cfgCellSimProfileTableEntry 1 }

    cfgCellSimProfileApn OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Access Point Name

             If a specific Access Point Name (APN) is required by the service
             provider, it can be defined using this entry, otherwise it can be
             left at its default value **auto**.

             **Note:** If this entry is set to **auto** the authentication
             entries `cfgCellSimProfileUsername`, `cfgCellSimProfilePassword`
             and `cfgCellSimProfileAuthType` are ingored.

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

    cfgCellSimProfileUsername OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Username

             If the service provider requries authentication, the username can
             be specified by this entry. If no authentication type is selected,
             see `cfgCellSimProfileAuthType`, this entry is ignored.

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

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

             Set the password for the user defined with
             `cfgCellSimProfileUsername`.

             Applies to cellular products only."
        ::= { cfgCellSimProfileTableEntry 4 }

    cfgCellSimProfilePinEnabled 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."
        ::= { cfgCellSimProfileTableEntry 5 }

    cfgCellSimProfilePin 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
             `cfgCellSimProfilePinEnabled`.

             Applies to cellular products only."
        ::= { cfgCellSimProfileTableEntry 6 }

    cfgCellSimProfileAuthType OBJECT-TYPE
        SYNTAX INTEGER { none(0), pap(1), chap(2), both(3) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Authentication Type

             Select the authentication type, which is required by the service
             provider. 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."
        ::= { cfgCellSimProfileTableEntry 7 }

    cfgCellSimProfileRoaming OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "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."
        ::= { 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)** for rotating between primary and
             secondary SIM after a connection loss.

             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`.

             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.

             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 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 }

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

-- 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 DisplayString,
                    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,
                    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 DisplayString (SIZE(7..15))
        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(6..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
        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
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Packet Encryption

             Encrypt packets with the given cipher algorithm.

             **Examples:**

             * **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 read-write
        STATUS     current
        DESCRIPTION
            "Password to Unlock Private Key

             This is only required if the key is encrypted."
        ::= { cfgVpnOpenvpnTableEntry 17 }

    cfgVpnOpenvpnKeyType OBJECT-TYPE
        SYNTAX INTEGER { asymmectric(0), symmetric(1), combined(2) }
        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.
             * **combined(2)**: Use asymmetric encryption and encrypt the
                                control channel with a static key.

             **Note:** The key material for the asymmectric encryption is
             managed by the Certificate Store, see `setCrtFileSelector`."
        ::= { 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
        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 }

    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,
                    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
        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
        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 read-write
        STATUS     current
        DESCRIPTION
            "Password to Unlock Private Key

             This is only required if the key is encrypted."
        ::= { cfgVpnIpsecTableEntry 112 }

    cfgVpnIpsecPassword OBJECT-TYPE
        SYNTAX DisplayString
        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 }

    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."

        ::= { cfgVpnIpsecGlobal 1 }

    cfgVpnIpsecGlblCustomOptions OBJECT-TYPE
        SYNTAX DisplayString
        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
                 }

    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 }


    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
        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
        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 DisplayString,
                    cfgVpnTepDestination DisplayString,
                    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 DisplayString (SIZE(7..15))
        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 DisplayString (SIZE(7..15))
        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
            "**TECHPREVIEW:** 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
            "**TECHPREVIEW:** 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 }

-- *****************************************************************************

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

-- Configuration Management Control

    rpcCfgRevert OBJECT-TYPE
        SYNTAX INTEGER { allError(-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 { allError(-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 { flashError(-2), downloadError(-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 **flashError(-2)** indicates that the flash
             process failed during writing. A return value of
             **downloadError(-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) }
        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.

             **Note:** You will not be able to communicate with the device
             until the factory reset has finished and the device has been
             rebooted.

             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 { 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.

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

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

  -- Certificate

    rpcCrtFile OBJECT-TYPE
        SYNTAX INTEGER { validateerror(-4), deleteerror(-3), exporterror(-2), importerror(-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 INTEGER { errorRestartHttps(-10001), errorRestartNetwork(-10000),
                         errorAll(-1), nop(0), all(1), restartNetwork(10000),
                         restartHttps(10001) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Refresh Certificates

             RPC to manipulate key material in the Certificate Store (CS).
             Also allows to restart services to use newly installed material.

             * **negative values** Represents a failed operation corresponding
                                   with its positive value.
             * **nop(0)** No Operation in progress.
             * **all(1)** Move all available certificates from CS Location
                          'next' to CS Location 'current'.
             * **restartNetwork(10000)** Same as **all(1)** but additionally
                                         restart the network (to use all
                                         'current' certificates).
             * **restartHttps(10001)** Restart uhttpd to use new key/certificate
                                       for https.

             **Note:** The RPC will fail if there are pending config changes.

             Applies to STA."
        ::= { rpcCertificate 2 }

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

  -- 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 }

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

  -- Cellular

    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."

        ::= { rpcCellular 3 }

-- *****************************************************************************

-- 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 protocols are
            supported. For export from the device to a server only the
            TFTP protocol is supported.

            **Example:**

            * tftp://192.168.1.1/device.cfg
            * http://192.168.1.1/device.cfg

            Applies to AP and STA."
        ::= { 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.

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

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

-- 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..1)
        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
        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
        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 and HTTP.

            **Example:**

            * tftp://192.168.1.1/firmware.img
            * http://192.168.1.1/firmware.img

            Applies to AP and STA."
        ::= { 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.

            For import files to the device the TFTP and HTTP protocols
            are supported. For export from the device to a server only the
            TFTP protocol is supported.

            **Example:**

            * tftp://192.168.1.1/uttpd.crt
            * http://192.168.1.1/uttpd.crt

            Applies to AP and STA."
        ::= { setCertificate 1 }

    setCrtFileSelector OBJECT-TYPE
        SYNTAX Integer32 (0..90000)
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Set this field to select which file should be downloaded/uploaded
            via the rpcCrtFile.

            * **0** means legacy HTTPS. Upload/download certificate and key from
            the same url with a .crt and .key extension.
            * **1** means HTTPS certificate
            * **2** means HTTPS key
            * **100** means certificate for wlan0, 101 for wlan1 and so on
            * **200** means private key for wlan0, 201 for wlan1 and so on
            * **300** means CA certificate for wlan0, 301 for wlan1 and so on
            * **400** means CA2 certificate for wlan0, 401 for wlan1 and so on
            * **500** means CRL certificate for wlan0, 501 for wlan1 and so on
            * **600** means CRL2 certificate for wlan0, 601 for wlan1 and so on
            * **700** means PKCS#12 container for wlan0, 701 for wlan1 and so
            on
            * **10xxx** means upload/download the 'next' file which will be
            installed during next reboot or by calling `rpcCrtRefresh`. So a
            value of **10203** means next private key for wlan3.
             * **20100** means certificate for ovpn0, 20101 for ovpn1 and so on
             * **20200** means private key for ovpn0, 20201 for ovpn1 and so on
             * **20300** means CA certificate for ovpn0, 20301 for ovpn1 and so on
             * **20400** means static key for ovpn0, 20401 for ovpn1 and so on
             * **30100** means CA certificate for ipsec0, 30301 for ipsec1 and so on
             * **30200** means left certificate for ipsec0, 30201 for ipsec1 and so on
             * **30300** means right certificate for ipsec0, 30301 for ipsec1 and so on
             * **30400** means left sigkey for ipsec0, 30401 for ipsec1 and so on
             * **30500** means right sigkey for ipsec0, 30501 for ipsec1 and so on
             * **30600** means left private key for ipsec0, 30201 for ipsec1 and so on

            For static keys the `setCrtFileFormat` will be ignored so they must be
            in PEM format.

            Applies to AP and STA."
        ::= { 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.

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

    setCrtFilePkcs12Passphrase OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Set the PKCS#12 passphrase used to import with `rpcCertFile`

            This passphrase will be used during the import to decrypt the
            container data. The `cfgWlan802dot1xClientKeyPassword` will then be
            used to encrypt the client key on the device.

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

-- -----------------------------------------------------------------------------
-- System

    setSysTime OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "System time as epoch"
        ::= { setSystem 1 }

-- -----------------------------------------------------------------------------
-- TechPreview

    setTechPreviewEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Technical Preview disabled or enabled

            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.

            Applies to AP and STA."
        ::= { setTechPreview 1 }

-- -----------------------------------------------------------------------------
-- 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 }

-- *****************************************************************************

-- 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..1)
        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 }

  -- 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 }


-- *****************************************************************************

-- 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 }

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

-- 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 }

    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 }


-- 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(4..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.

             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
                 }

    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 Extra

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

    swDrvConStatRxBrType OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Bitrate Type

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

    swDrvConStatRxBrValue OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station RX Bitrate Value in Mbps

             Multiplied by 10 if `swDrvConStatRxBrType` is 'legacy' or '11AC'.

             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 Extra

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

    swDrvConStatTxBrType OBJECT-TYPE
        SYNTAX     DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Bitrate Type

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

    swDrvConStatTxBrValue OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Station TX Bitrate Value in Mbps

             Multiplied by 10 if `swDrvConStatRxBrType` is 'legacy' or '11AC'.

             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 }

--------------------------------------------------------------------------------
    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
                 }

    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 Dev"
        ::= { 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
             the AP has been started.

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

    swDrvCntWlanEapAuthFailed OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of EAP authentication sessions that have
             failed since the AP has been started.

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

    swDrvCntWlanChannelActive OBJECT-TYPE
        SYNTAX Counter32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Time in ms during which the device has been on the current channel.

             On STA when it's no associated the current channel is the lowest
             channel of 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 during which the medium has been considered 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 during which the device has been in transmit mode 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 during which the device has been in receive mode 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 steps.

             **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 }

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

  -- 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 }

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

  -- Bootloader

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

             Applies to AP and STA."
        ::= { swBootloader 1 }

    swBootVersion OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Version of the Bootloader

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

    swBootBuildDate OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Date when the Bootloader was Built

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

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

-- Configuration

    swCfgChangesCount OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Number of not yet Applied Device Configuration Changes

             Applies to AP and STA."
        ::= { 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
                 }

    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(4..5))
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Name of the Cellular Network Interface

             This is name of the corresponding network interface.

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

    swCellSimSlot OBJECT-TYPE
        SYNTAX INTEGER { slot1(1), slot2(2) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Active SIM Slot

             * **slot1(1)**
             * **slot2(2)**

             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

             Applies to cellular products only."
        ::= { swCellTableEntry 7 }

    swCellServiceMcc OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Mobile Country Code

             Mobile Country Code (MCC) are 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

             Mobile Network Code (MNC) are defined by the ITU-T Recommendation
             E.212.

             Applies to cellular products only."
        ::= { swCellTableEntry 9 }

    swCellConnectionStatus OBJECT-TYPE
        SYNTAX INTEGER { unknown(0), disabled(1), simSwitching(2), netDown(3),
                         resetting(4), netUp(5), connecting(6), connected(7),
                         disconnected(8), invalid(9) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Connection Status

             * **unknown(0)**
             * **disabled(1)**
             * **simSwitching(2)**: Switching the SIM card.
             * **netDown(3)**: Network is down.
             * **resetting(4)**
             * **netUp(5)**: Network is up.
             * **connecting(6)**
             * **connected(7)**
             * **disconnected(8)**
             * **invalid(9)**

             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) }
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Signal Type

             **unknown(0)**: Unknown signal type
             **wcdma(3)**: UMTS (3G)
             **lte(4)**: LTE (4G)

             Applies to cellular products only."
        ::= { swCellTableEntry 12 }

    swCellSignalRssi OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Strength Indication

             Given 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

             Given in dB and only applies to signals of type **lte(1)**.

             Applies to cellular products only."
        ::= { swCellTableEntry 14 }

    swCellSignalRsrp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Reference Signal Received Power

             Given in dBm and only applies to signals of type **lte(1)**.

             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

             The signal-to-interference-plus-noise ratio (SINR) in dB is
             calculated from the value *v* of this entry using the following
             equation:

             SINR = (v / 5) - 20

             **Example:**

             *   **0**: SINR = -20dB
             * **100**: SINR = 0dB
             * **250**: SINR = 30dB

             This only applies to signals of type **lte(1)**.

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

    swCellSignalRscp OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Received Signal Code Power

             Given in dBm and only applies to signals of type **wcdma(0)**.

             Applies to cellular products only."
        ::= { swCellTableEntry 17 }

    swCellSignalEcio OBJECT-TYPE
        SYNTAX     Integer32
        MAX-ACCESS read-only
        STATUS     current
        DESCRIPTION
            "Carrier to Noise Ratio

             Given in dB and only applies to signals of type **wcdma(0)**.

             Applies to cellular products only."
        ::= { swCellTableEntry 18 }

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

-- 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
           }
        STATUS  current
        DESCRIPTION
            "System Settings"
        ::= { groupCfgSystem 1 }

    groupCfgSysNameserver OBJECT-GROUP
        OBJECTS {
           cfgSysDomain,
           cfgSysSdSearch,
           cfgSysNsType,
           cfgSysNsServer,
           cfgSysNsDhcpInterface
           }
        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
           }
        STATUS  current
        DESCRIPTION
            "Network Ethernet Properties"
        ::= { groupCfgNetwork 1 }

    groupCfgNetWlan OBJECT-GROUP
        OBJECTS {
           cfgNetWlanName,
           cfgNetWlanEnabled,
           cfgNetWlanBridge,
           cfgNetWlanTrunk,
           cfgNetWlanTag,
           cfgNetWlanVlanMode,
           cfgNetWlanProtected,
           cfgNetWlanLldpEnabled,
           cfgNetWlanMtu
           }
        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 }

    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,
           cfgWlanIfaceL2nat,
           cfgWlanIfaceL2natLearningMode,
           cfgWlanIfaceL2natDefaultDestination,
           cfgWlanIfaceTimeAdvertisement,
           cfgWlanIfaceApIsolate,
           cfgWlanIfaceLlcBroadcastVlan,
           cfgWlanIfaceAtfSsidEnabled,
           cfgWlanIfaceAtfSsidAirtime
           }
        STATUS  current
        DESCRIPTION
            "Wireless Interface Properties"
        ::= { groupCfgWireless 2 }

    groupCfgWlanHandoff OBJECT-GROUP
        OBJECTS {
           cfgWlanHoIfaceName,
           cfgWlanHoProfile,
           cfgWlanHoScanningLevel,
           cfgWlanHoBeacons,
           cfgWlanHoRecovery,
           cfgWlanHoFilterLongX,
           cfgWlanHoFilterLongY,
           cfgWlanHoScanRateLimitTime,
           cfgWlanHoScanRateLimitTries,
           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,
           cfgWlan802dot1xClientKeyPassword,
           cfgWlan802dot1xTlsControlParams,
           cfgWlan802dot1xCiphers
           }
        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 }

    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,
           cfgRouteRuleLookupTable
           }
        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
           }
        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,
           cfgSnmpdComMaintainer,
           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
           }
        STATUS  current
        DESCRIPTION
            "Dnsmasq Properties"
        ::= { groupCfgDhcp 2 }

    groupCfgDhcpScope OBJECT-GROUP
        OBJECTS {
           cfgDhcpScopeId,
           cfgDhcpScopeInterface,
           cfgDhcpScopeStart,
           cfgDhcpScopeLimit,
           cfgDhcpScopeLeasetime,
           cfgDhcpScopeGateway,
           cfgDhcpScopeDnsServer1,
           cfgDhcpScopeDnsServer2,
           cfgDhcpScopeDhcpOptions,
           cfgDhcpScopeAutoGateway,
           cfgDhcpScopeAutoDns
           }
        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 }

   groupCfgNtp OBJECT-GROUP
       OBJECTS {
          cfgNtpEnabled,
          cfgNtpServer1,
          cfgNtpServer2
          }
       STATUS  current
       DESCRIPTION
           "NTP Client Properties"
       ::= { groupConfiguration 14 }

   groupCfgHttp OBJECT-GROUP
       OBJECTS {
          cfgHttpUser,
          cfgHttpPassword,
          cfgHttpEnabled,
          cfgHttpRedirectEnabled,
          cfgHttpHttpAddress,
          cfgHttpHttpsAddress
          }
       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 }

    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
           }
        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
       }
       STATUS  current
       DESCRIPTION
           "Nlm properties"
       ::= { groupConfiguration 40 }

    groupCfgCli OBJECT-GROUP
       OBJECTS {
          cfgCliEnabled,
          cfgCliUsername,
          cfgCliPassword,
          cfgCliTelnetEnabled,
          cfgCliSshEnabled,
          cfgCliTelnetAddress,
          cfgCliSshAddress
          }
       STATUS  current
       DESCRIPTION
           "CLI Properties"
       ::= { groupConfiguration 100 }

    groupCfgCellular OBJECT IDENTIFIER ::= { groupConfiguration 101 }

    groupCfgCellSim OBJECT-GROUP
        OBJECTS {
           cfgCellSimSlot1,
           cfgCellSimSlot2,
           cfgCellSimPrimarySlot,
           cfgCellSimUnlockTimeout
           }
        STATUS  current
        DESCRIPTION
            "Cellular SIM Properties"
        ::= { groupCfgCellular 1 }

    groupCfgCellSimProfile OBJECT-GROUP
        OBJECTS {
           cfgCellSimProfileApn,
           cfgCellSimProfileUsername,
           cfgCellSimProfilePassword,
           cfgCellSimProfilePinEnabled,
           cfgCellSimProfilePin,
           cfgCellSimProfileAuthType,
           cfgCellSimProfileRoaming
           }
        STATUS  current
        DESCRIPTION
            "Cellular SIM Properties"
        ::= { groupCfgCellular 2 }

    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 }

   groupCfgVpn OBJECT IDENTIFIER ::= { groupConfiguration 1003 }

   groupCfgVpnOpenvpn OBJECT-GROUP
       OBJECTS {
       cfgVpnOpenvpnMode,
       cfgVpnOpenvpnLocal,
       cfgVpnOpenvpnLPort,
       cfgVpnOpenvpnRemote,
       cfgVpnOpenvpnRPort,
       cfgVpnOpenvpnProto,
       cfgVpnOpenvpnAuth,
       cfgVpnOpenvpnCipher,
       cfgVpnOpenvpnDevType,
       cfgVpnOpenvpnKeepaliveInterval,
       cfgVpnOpenvpnKeepaliveTimeout,
       cfgVpnOpenvpnConnectRetry,
       cfgVpnOpenvpnConnectRetryLimit,
       cfgVpnOpenvpnCompress,
       cfgVpnOpenvpnVerb,
       cfgVpnOpenvpnKeyPassword,
       cfgVpnOpenvpnKeyType,
       cfgVpnOpenvpnKeyDirection,
       cfgVpnOpenvpnRemoteCertTls,
       cfgVpnOpenvpnVerifyX509Name,
       cfgVpnOpenvpnVerifyX509String,
       cfgVpnOpenvpnUsername,
       cfgVpnOpenvpnPassword,
       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,
       cfgVpnIpsecKeyPassword,
       cfgVpnIpsecPassword,
       cfgVpnIpsecCloseAction,
       cfgVpnIpsecReauth,
       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
       }
       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 }

-- 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,
           rpcCrtRefresh
           }
        STATUS  current
        DESCRIPTION
            "RPCs for Certificates"
        ::= { groupRpc 4 }

    groupRpcDriver OBJECT-GROUP
        OBJECTS {
           rpcDrvName,
           rpcDrvDfsSimulateRadar
           }
        STATUS  current
        DESCRIPTION
            "RPCs Software Driver"
        ::= { groupRpc 6 }

    groupRpcCellular OBJECT-GROUP
        OBJECTS {
           rpcCellFwUpgrade
           }
        STATUS  current
        DESCRIPTION
            "RPC Cellular group."
        ::= { groupRpc 16 }
-- Settings Groups
-- ===============

    groupSetConfigurationFile OBJECT-GROUP
        OBJECTS {
           setCfgFileUrl,
           setCfgFileFormat
           }
        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 6 }

    groupSetCertificate OBJECT-GROUP
        OBJECTS {
           setCrtFileUrl,
           setCrtFileSelector,
           setCrtFileFormat,
           setCrtFilePkcs12Passphrase
           }
        STATUS  current
        DESCRIPTION
            "HTTPS Certificate/Key File Settings"
        ::= { groupSettings 7 }

    groupSetSystem OBJECT-GROUP
        OBJECTS {
           setSysTime
           }
        STATUS  current
        DESCRIPTION
            "System Settings"
        ::= { groupSettings 8 }

    groupSetTechPreview OBJECT-GROUP
        OBJECTS {
            setTechPreviewEnabled
        }
        STATUS  current
        DESCRIPTION
            "TechPreview Settings"
        ::= { groupSettings 9 }

    groupSetCellular OBJECT-GROUP
        OBJECTS {
           setCellFwUrl,
           setCellSimSlot
           }
        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
        }
        STATUS  current
        DESCRIPTION
            "Cellular Hardware"
        ::= { groupHardware 10 }

    groupHwGnss OBJECT-GROUP
        OBJECTS {
            hwGnssAssembled,
            hwGnssType,
            hwGnssSerial
        }
        STATUS  current
        DESCRIPTION
            "GNSS Hardware"
        ::= { groupHardware 11 }


-- Software Groups
-- ===============

    groupSwFirmware OBJECT-GROUP
        OBJECTS {
           swFwName,
           swFwVersion,
           swFwRevision
           }
        STATUS  current
        DESCRIPTION
            "Software Firmware"
        ::= { groupSoftware 1 }

    groupSwSystem OBJECT-GROUP
        OBJECTS {
           swSysRebootReason,
           swSysBootStatus,
           swSysMsgPriority,
           swSysMsgCode,
           swSysMsgText,
           swSysMsgEpoch,
           swSysMsgDate
           }
        STATUS  current
        DESCRIPTION
            "Software System"
        ::= { groupSoftware 2 }

    groupSwOperatingSystem OBJECT-GROUP
        OBJECTS {
           swOsName,
           swOsVersion,
           swOsRevision,
           swOsUptime
           }
        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,
           swDrvConStatRxBrType,
           swDrvConStatRxBrValue,
           swDrvConStatRxBytes,
           swDrvConStatRxPackets,
           swDrvConStatTxBrExtra,
           swDrvConStatTxBrType,
           swDrvConStatTxBrValue,
           swDrvConStatTxBytes,
           swDrvConStatTxPackets,
           swDrvConStatSigChain0,
           swDrvConStatSigChain1,
           swDrvConStatSigChain2,
           swDrvConStatSigAvgChain0,
           swDrvConStatSigAvgChain1,
           swDrvConStatSigAvgChain2,
           swDrvConStatTxRetries,
           swDrvConStatTxFailed,
           swDrvConStatCacheNo,
           swDrvConStatSigCombined,
           swDrvConStatSigAvgCombined,
           swDrvConStatWlanIf
           }
        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
           }
        STATUS  current
        DESCRIPTION
            "Software Driver Wlan Counters"
        ::= { groupSoftware 10 }

    groupSwRdm OBJECT-GROUP
        OBJECTS {
           swRdmMaxEirp,
           swRdmMaxApp
           }
        STATUS  current
        DESCRIPTION
            "Software RDM"
        ::= { groupSoftware 11 }

    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
            }
        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,
            groupCfgNetWwan,
            groupCfgNetOpenvpn,
            groupCfgNetIpsec,
            groupCfgNetFlowController,
            groupCfgNetTunnelEndPoint,
            groupCfgNetWireguard,
            groupCfgWlanDevice,
            groupCfgWlanInterface,
            groupCfgWlanHandoff,
            groupCfgWlanScanFreq,
            groupCfgWlanWme,
            groupCfgWlanDbg,
            groupCfgWlanAclBlack,
            groupCfgWlanAclWhite,
            groupCfgWlanGlobal,
            groupCfgWlan802dot1x,
            groupCfgWlan802dot1xAuth,
            groupCfgWlan802dot1xAcct,
            groupCfgWlan802dot11r,
            groupCfgWlanNeighbour,
            groupCfgRouteDefault,
            groupCfgRouteTable,
            groupCfgMRouteTable,
            groupCfgRouteRuleTable,
            groupCfgRouteDhcpTable,
            groupCfgRouteGlobal,
            groupCfgLogging,
            groupCfgSnmpd,
            groupCfgSnmpTrap,
            groupCfgDhcpGlobal,
            groupCfgDhcpDnsmasq,
            groupCfgDhcpScope,
            groupCfgDhcpDomainOverrides,
            groupCfgDhcpHostOverrides,
            groupCfgNtp,
            groupCfgHttp,
            groupCfgLldp,
            groupCfgMdns,
            groupCfgQos,
            groupCfgQosGlobal,
            groupCfgQosDscpToTidMapTable,
            groupCfgQosVlanToTidMapTable,
            groupCfgQosIpToTidMapTable,
            groupCfgQosEthertypeToL2Table,
            groupCfgNlm,
            groupCfgCli,
            groupCfgCellSim,
            groupCfgCellSimProfile,
            groupCfgCellConnectionManagement,
            groupCfgCellDbg,
            groupCfgVpn,
            groupCfgVpnOpenvpn,
            groupCfgVpnIpsec,
            groupCfgVpnIpsecGlobal,
            groupCfgVpnIpsecDebug,
            groupCfgVpnWireguard,
            groupCfgVpnWireguardPeers,
            groupCfgVpnTunnelEndPoint,

            groupRpcConfiguration,
            groupRpcFirmware,
            groupRpcSystem,
            groupRpcCertificate,
            groupRpcDriver,
            groupRpcCellular,

            groupSetConfigurationFile,
            groupSetWireless,
            groupSetWlanDbg,
            groupSetFirmware,
            groupSetCertificate,
            groupSetSystem,
            groupSetTechPreview,
            groupSetCellular,

            groupHwSystem,
            groupHwNetwork,
            groupHwWireless,
            groupHwBaseBoard,
            groupHwIfaceBoard,
            groupHwSensor,
            groupHwCellular,
            groupHwGnss,

            groupSwFirmware,
            groupSwSystem,
            groupSwOperatingSystem,
            groupSwDrvDfs,
            groupSwDrvCntWlanMac,
            groupSwDrvCntWlanWmm,
            groupSwDrvConStat,
            groupSwDrvCntWlanTable,
            groupSwRdm,
            groupSwBootloader,
            groupSwConfiguration,
            groupSwCellular,
            groupSwNlm
        }
    ::= { compliances 1 }

-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End COMPLIANCE STATEMENTS
-- **********************************************************************

-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End of MIB DEFINITION
-- **********************************************************************
END


-- **********************************************************************
-- **********************************************************************
