-- *****************************************************************
-- WESTERMO-SW6-PWN-MIB :
-- SNMP feature 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-PWN-MIB
-- Ensure that all needed MIBS are located in the SMIPATH.
-- *****************************************************************

-- **********************************************************************
-- * PWN MIB
-- **********************************************************************

WESTERMO-SW6-PWN-MIB DEFINITIONS ::= BEGIN

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

-- **********************************************************************
-- *  MODULE IDENTITY
-- **********************************************************************
pwn MODULE-IDENTITY
    LAST-UPDATED "202510160000Z"
    ORGANIZATION "Westermo Network Technologies AB"
    CONTACT-INFO "E-mail: info@westermo.com"
    DESCRIPTION
            "MIB Module for the Westermo RT-300 Radio Modem Device - PWN
            definitions"

    REVISION     "202510160000Z"
    DESCRIPTION  "Release 6.11.6-0"

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

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

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

configuration                   OBJECT IDENTIFIER ::= { pwn 1 }
    cfgWireless                 OBJECT IDENTIFIER ::= { configuration 1 }

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

conformance                     OBJECT IDENTIFIER ::= { pwn 10000 }
    groups                      OBJECT IDENTIFIER ::= { conformance 1 }
        groupConfiguration      OBJECT IDENTIFIER ::= { groups 1 }
    compliances                 OBJECT IDENTIFIER ::= { conformance 2 }

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

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


cfgWlanBandsteering OBJECT IDENTIFIER ::= { cfgWireless 1 }
cfgWlanClientSteering OBJECT IDENTIFIER ::= { cfgWireless 2 }

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

-- Band Steering

    cfgWlanBsteerEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Enable Band Steering

             Band steering is a technique used in dual-band (2G4 and 5G) wireless
             setups to encourage dual-band STAs to use the less-congested band.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanBandsteering 1 }

    cfgWlanBsteerMatchingSsid OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS not-accessible
        STATUS     obsolete
        DESCRIPTION
            "**OBSOLETE:** List of Matching SSIDs

             This parameter is obsolete and has been replaced by
             `cfgWlanBsteerMatchingWlan`."
        ::= { cfgWlanBandsteering 2 }

    cfgWlanBsteerMatchingWlan OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "WLAN Interface Indices for Band Steering

             Multiple indices in `cfgWlanInterfaceTable` may be referenced as a
             space and/or comma separated list.

             All referenced wlan interfaces are used in band steering.

             A value of `-1` implicitly disables bandsteering.

             **Examples:**

             * 0 1
             * 1, 3
             * 1,2 3,4

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanBandsteering 3 }

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

-- Client Steering

    cfgWlanClientSteeringTable OBJECT-TYPE
        SYNTAX SEQUENCE OF CfgWlanClientSteeringTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Client Steering Table

             Client steering is a technique used to encourage STAs to use a
             less-congested AP.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteering 1 }

    cfgWlanClientSteeringTableEntry OBJECT-TYPE
        SYNTAX CfgWlanClientSteeringTableSeq
        MAX-ACCESS not-accessible
        STATUS     current
        DESCRIPTION
            "Client Steering Table Entry

             Client steering is a technique used to encourage STAs to use a
             less-congested AP.

             Applies to AP. 802.11ac products only."
        INDEX { cfgWlanCsteerIndex }
        ::= { cfgWlanClientSteeringTable 1 }

    CfgWlanClientSteeringTableSeq ::=
    SEQUENCE {  cfgWlanCsteerIndex Integer32,
                cfgWlanCsteerEnabled INTEGER,
                cfgWlanCsteerMatchingWlan DisplayString,
                cfgWlanCsteerInterfaces DisplayString,
                cfgWlanCsteerDebugLevel INTEGER,
                cfgWlanCsteerLoadBalNrStaDiff Integer32,
                cfgWlanCsteerBandSteeringNrStaDiff Integer32,
                cfgWlanCsteerAssocSteeringEnabled INTEGER,
                cfgWlanCsteerConnectLevel Integer32,
                cfgWlanCsteerRemainLevel Integer32,
                cfgWlanCsteerRoamScanLevel Integer32,
                cfgWlanCsteerRoamTriggerLevel Integer32,
                cfgWlanCsteerRoamKickTimeout Integer32,
                cfgWlanCsteerSignalLevelDiff Integer32,
                cfgWlanCsteerInitConnectTimeout Integer32,
                cfgWlanCsteerLoadBalEnabled INTEGER,
                cfgWlanCsteerLoadBalMinLoad Integer32,
                cfgWlanCsteerLoadBalMinNrStas Integer32,
                cfgWlanCsteerScanBand2GhzOpClass Integer32,
                cfgWlanCsteerScanBand5GhzOpClass Integer32
             }

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

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 1 }

    cfgWlanCsteerEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Client Steering

             Client Steering makes use of the Radio Resource (802.11k)
             and the BSS Transition Management (802.11v) standards
             in order to steer clients (STAs) among various
             Basic Service Sets (BSS) to achieve an overall improved wireless
             performance for all participating STAs in the same
             Extended Service Set (ESS).

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 2 }

    cfgWlanCsteerMatchingWlan OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "WLAN Interface Indices for Client Steering

             Multiple indices in `cfgWlanInterfaceTable` may be referenced as a
             space and/or comma separated list.

             All referenced wireless interfaces that are involved in the Client
             Steering process.

             **Examples:**

             * 0
             * 1, 3
             * 1,2 3,4

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 4 }

    cfgWlanCsteerInterfaces OBJECT-TYPE
        SYNTAX DisplayString (SIZE(1..255))
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Network Interfaces

             The network interfaces to search for other Client Steering
             instances. The Client Steering process uses a Data Link (L2)
             protocol to look for other instances.

             One or more network interfaces can specifed in a space and/or comma
             separated list.

             **Example:**

             * br0.vlan0
             * br0.vlan100, br0.vlan101, br0.vlan102

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 5 }

    cfgWlanCsteerDebugLevel OBJECT-TYPE
        SYNTAX INTEGER { fatal(0), info(1), verbose(2), debug(3), network(4), full(5) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Minimum Level of Logged Messages

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 7 }

    cfgWlanCsteerLoadBalNrStaDiff OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Load Balancing STA Difference

             Minimal difference of connected STAs between an other AP before
             load balancing policy is active.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 13 }

    cfgWlanCsteerBandSteeringNrStaDiff OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Band Steering STA Difference

             Minimal difference of connected STAs between bands before band
             steering policy is active.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 14 }

    cfgWlanCsteerAssocSteeringEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Association Steering

             Allow rejecting association requests for steering purposes, see
             also `cfgWlanCsteerConnectLevel`.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 16 }

    cfgWlanCsteerConnectLevel OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Connect Level

             Minimum signal level (dBm) to allow connections. The AP will not
             response to probe requests of STAs that are below this level. If
             `cfgWlanCsteerAssocSteeringEnabled` is enabled, it will not answer
             association requests either. 

             If this parameter is set to `0`, all STAs are allowed to connect
             regardless of their signal level.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 17 }

    cfgWlanCsteerRemainLevel OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Remain Level

             Minimum signal level (dBm) to remain connected.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 18 }

    cfgWlanCsteerRoamScanLevel OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Roaming Scan Level

             Minimum signal level (dBm) before the AP requests a Beacon Report
             (802.11k) from the STA.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 19 }

    cfgWlanCsteerRoamTriggerLevel OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Roaming Trigger Level

             Minimum signal level (dBm) before the AP sends a BSS Transition
             Management Request (802.11v) to the STA.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 22 }

    cfgWlanCsteerRoamKickTimeout OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Roaming Kick Timeout

             Timeout (in millisecons) before the AP requests the STA to
             dissasociate STA after an unsuccessful BSS Transition Management
             Request.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 24 }

    cfgWlanCsteerSignalLevelDiff OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Signal Level Difference

             Minimum signal level difference (in dB) before any steering policy
             of the AP becomes active.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 25 }

    cfgWlanCsteerInitConnectTimeout OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Initial Connection Timeout

             Initial timeout (in millisecons) before responding to probe
             requests. This forces the STA to search for other APs and allows
             the other APs to see packets as well.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 26 }

    cfgWlanCsteerLoadBalEnabled OBJECT-TYPE
        SYNTAX INTEGER { disabled(0), enabled(1) }
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Disable or Enable Load-based Steering

             Enable kicking of STAs on excessive channel load when
             the following conditions are met:

             * The channel load of the current AP must be equal or higher than
               the defined value in `cfgWlanCsteerLoadBalMinLoad`.
             * At least the number of STAs defined in
               `cfgWlanCsteerLoadBalMinNrStas` must be associated to the AP.
             * The difference of client connections between the current and
               another AP must be at least the number defined in
               `cfgWlanCsteerLoadBalNrStaDiff`.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 27 }

    cfgWlanCsteerLoadBalMinLoad OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Minimal Load Before Steering

             Minimum load in percent before STAs are disassociated based on
             channel load.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 28 }

    cfgWlanCsteerLoadBalMinNrStas OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Minimum STAs for Load-based Kick

             Minimum number of connected STAs before disassociating them
             based on channel load.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 30 }

    cfgWlanCsteerScanBand2GhzOpClass OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Operating Class 2GHz for Beacon Reports

             Operating class used for Beacon Report requests (802.11k)
             for 2GHz band. It defines the  channel range to scan which
             is also depending on the used country code.

             Operating classes are defined in ANNEX E of IEEE 802.11
             standard.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 34 }

    cfgWlanCsteerScanBand5GhzOpClass OBJECT-TYPE
        SYNTAX Integer32
        MAX-ACCESS read-write
        STATUS     current
        DESCRIPTION
            "Operating Class 5GHz for Beacon Reports

             Operating class used for Beacon Report requests (802.11k)
             for 5GHz band. It defines the channel range to scan which
             is also depending on the used country code.

             Operating classes are defined in ANNEX E of IEEE 802.11
             standard.

             Applies to AP. 802.11ac products only."
        ::= { cfgWlanClientSteeringTableEntry 35 }


-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End of   Object Types
-- *********************************************************************

-- *********************************************************************
-- *  Begin GROUPS
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

groupCfgWlanBandsteering OBJECT-GROUP
    OBJECTS {
        cfgWlanBsteerEnabled,
        cfgWlanBsteerMatchingWlan
    }
    STATUS  current
    DESCRIPTION
        "Wireless Band Steering Configuration."
    ::= { groupConfiguration 1 }

groupCfgWlanClientSteering OBJECT-GROUP
    OBJECTS {
        cfgWlanCsteerEnabled,
        cfgWlanCsteerMatchingWlan,
        cfgWlanCsteerInterfaces,
        cfgWlanCsteerDebugLevel,
        cfgWlanCsteerLoadBalNrStaDiff,
        cfgWlanCsteerBandSteeringNrStaDiff,
        cfgWlanCsteerAssocSteeringEnabled,
        cfgWlanCsteerConnectLevel,
        cfgWlanCsteerRemainLevel,
        cfgWlanCsteerRoamScanLevel,
        cfgWlanCsteerRoamTriggerLevel,
        cfgWlanCsteerRoamKickTimeout,
        cfgWlanCsteerSignalLevelDiff,
        cfgWlanCsteerInitConnectTimeout,
        cfgWlanCsteerLoadBalEnabled,
        cfgWlanCsteerLoadBalMinLoad,
        cfgWlanCsteerLoadBalMinNrStas,
        cfgWlanCsteerScanBand2GhzOpClass,
        cfgWlanCsteerScanBand5GhzOpClass
    }
    STATUS  current
    DESCRIPTION
        "Wireless Client Steering Configuration."
    ::= { groupConfiguration 2 }


-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-- *  End GROUPS
-- *********************************************************************

-- *********************************************************************
-- *  Begin COMPLIANCE STATEMENTS
-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

compliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "Implementation Requirements for DT50 bindings"
    MODULE  -- this module
        MANDATORY-GROUPS {
            groupCfgWlanBandsteering,
            groupCfgWlanClientSteering
        }
    ::= { compliances 1 }

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

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