--
--  LigoWave 802.11 Extension MIB
--

LIGO-802DOT11-EXT-MIB DEFINITIONS ::= BEGIN
IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
    Counter32, Integer32, Gauge32
        FROM SNMPv2-SMI
    MacAddress, TruthValue
        FROM SNMPv2-TC
    sysLocation
        FROM SNMPv2-MIB
    ifIndex, InterfaceIndex, ifPhysAddress
        FROM IF-MIB
    ligoMgmt
        FROM LIGOWAVE-MIB;

ligo802dot11ExtMIB MODULE-IDENTITY
    LAST-UPDATED    "201003310000Z"
    ORGANIZATION    "LigoWave"
    CONTACT-INFO    "
        LigoWave Customer Support
        E-mail: support@ligowave.com"
    DESCRIPTION
        "The LigoWave 802.11 Extension MIB."
    REVISION    "201003310000Z"
    DESCRIPTION
        "Added ligoDot11IfAssocNodeCount."
    REVISION    "200905150000Z"
    DESCRIPTION
        "Added ligoDot11RemoteNodeStatsTable and ligoRemoteNodeConnected, 
        ligoRemoteNodeDisconnected notifications."
    REVISION    "200812120000Z"
    DESCRIPTION
        "First revision."
    ::= { ligoMgmt 5 }

ligo802dot11ExtMIBObjects
        OBJECT IDENTIFIER ::= { ligo802dot11ExtMIB 1 }

ligoDot11Notifs
        OBJECT IDENTIFIER ::= { ligo802dot11ExtMIBObjects 0 }
ligoDot11Info
        OBJECT IDENTIFIER ::= { ligo802dot11ExtMIBObjects 1 }
ligoDot11Conf
        OBJECT IDENTIFIER ::= { ligo802dot11ExtMIBObjects 2 }
ligoDot11Stats
        OBJECT IDENTIFIER ::= { ligo802dot11ExtMIBObjects 3 }

ligoDot11IfConfTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF LigoDot11IfConfEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Wireless interface configuration table."
    ::= { ligoDot11Conf 1 }

ligoDot11IfConfEntry OBJECT-TYPE
    SYNTAX  LigoDot11IfConfEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Wireless interface configuration table entry."
    INDEX { ifIndex }
    ::= { ligoDot11IfConfTable 1 }

LigoDot11IfConfEntry ::=
    SEQUENCE {
        ligoDot11IfParentIndex          InterfaceIndex,
        ligoDot11IfProtocol             OCTET STRING,
        ligoDot11IfMode                 INTEGER,
        ligoDot11IfESSID                OCTET STRING,
        ligoDot11IfAccessPoint          MacAddress,
        ligoDot11IfCountryCode          Integer32,
        ligoDot11IfFrequency            Integer32,
        ligoDot11IfChannel              Integer32,
        ligoDot11IfChannelBandwidth     Integer32,
        ligoDot11IfTxPower              Gauge32,
        ligoDot11IfBitRate              Gauge32,
        ligoDot11IfLinkQuality          Gauge32,
        ligoDot11IfMaxLinkQuality       Gauge32,
        ligoDot11IfSignalLevel          Integer32,
        ligoDot11IfNoiseLevel           Integer32,
        ligoDot11IfAssocNodeCount       Gauge32
    }

ligoDot11IfParentIndex OBJECT-TYPE
    SYNTAX      InterfaceIndex
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Wireless interface's parent index, which corresponds to ifIndex in MIB-II interfaces table.
         This is only applicable if the interface is virtual and it is created under some other interface, like 
        it is for Atheros cards when using MadWiFi driver, where parent interfaces are wifi0, wifi1, etc."
    ::= { ligoDot11IfConfEntry 1 }

ligoDot11IfProtocol OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(0..15))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Protocol string, for example 'IEEE 802.11g'."
    ::= { ligoDot11IfConfEntry 2 }

ligoDot11IfMode OBJECT-TYPE
    SYNTAX      INTEGER {
                    auto(0),
                    adhoc(1),
                    managed(2),
                    master(3),
                    repeater(4),
                    secondary(5),
                    monitor(6)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Wireless interface operation mode"
    ::= { ligoDot11IfConfEntry 3 }

ligoDot11IfESSID OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "ESSID"
    ::= { ligoDot11IfConfEntry 4 }

ligoDot11IfAccessPoint OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Access point's MAC address if working in managed mode and connected.
         Current interface's MAC address, when working in master mode."
    ::= { ligoDot11IfConfEntry 5 }

ligoDot11IfCountryCode OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Country code."
    ::= { ligoDot11IfConfEntry 6 }

ligoDot11IfFrequency OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "MHz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Current frequency as reported by driver."
    ::= { ligoDot11IfConfEntry 7 }

ligoDot11IfChannel OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Channel number."
    ::= { ligoDot11IfConfEntry 8 }

ligoDot11IfChannelBandwidth OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "MHz"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Channel bandwidth."
    ::= { ligoDot11IfConfEntry 9 }

ligoDot11IfTxPower OBJECT-TYPE
    SYNTAX      Gauge32
    UNITS       "dBm"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Transmit power in dBm."
    ::= { ligoDot11IfConfEntry 10 }

ligoDot11IfBitRate OBJECT-TYPE
    SYNTAX      Gauge32
    UNITS       "kbit/s"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Transmission bitrate."
    ::= { ligoDot11IfConfEntry 11 }

ligoDot11IfLinkQuality OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Link quality value."
    ::= { ligoDot11IfConfEntry 12 }

ligoDot11IfMaxLinkQuality OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Maximum possible link quality value for current wireless card."
    ::= { ligoDot11IfConfEntry 13 }

ligoDot11IfSignalLevel OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "dBm"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Signal level."
    ::= { ligoDot11IfConfEntry 14 }

ligoDot11IfNoiseLevel OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "dBm"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Noise level."
    ::= { ligoDot11IfConfEntry 15 }

ligoDot11IfAssocNodeCount OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of associated nodes when working in access point mode. 
         1 - if associated to remote access point in client mode."
    ::= { ligoDot11IfConfEntry 16 }

ligoDot11IfErrStatsTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF LigoDot11IfErrStatsEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Wireless interface statistics table."
    ::= { ligoDot11Stats 1 }

ligoDot11IfErrStatsEntry OBJECT-TYPE
    SYNTAX  LigoDot11IfErrStatsEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Wireless interface statistics table entry."
    INDEX { ifIndex }
    ::= { ligoDot11IfErrStatsTable 1 }

LigoDot11IfErrStatsEntry ::=
    SEQUENCE {
        ligoDot11IfRxInvalidNWID        Counter32,
        ligoDot11IfRxInvalidCrypt       Counter32,
        ligoDot11IfRxInvalidFrag        Counter32,
        ligoDot11IfTxExcessiveRetries   Counter32,
        ligoDot11IfInvalidMisc          Counter32,
        ligoDot11IfMissedBeacons        Counter32
    }

ligoDot11IfRxInvalidNWID OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of received packets with invalid NWID/ESSID. Increasing value usually means that there are 
        other stations transmitting on the same channel or adjacent channels."
    ::= { ligoDot11IfErrStatsEntry 1 }

ligoDot11IfRxInvalidCrypt OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of received packets the hardware was unable to decrypt."
    ::= { ligoDot11IfErrStatsEntry 2 }

ligoDot11IfRxInvalidFrag OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of received packets that were missing link layer fragments for complete re-assembly."
    ::= { ligoDot11IfErrStatsEntry 3 }

ligoDot11IfTxExcessiveRetries OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of packets hardware failed to deliver."
    ::= { ligoDot11IfErrStatsEntry 4 }

ligoDot11IfInvalidMisc OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Other packets lost in relation with specific wireless operations."
    ::= { ligoDot11IfErrStatsEntry 5 }

ligoDot11IfMissedBeacons OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Number of beacons that should have been sent by remote access point but were not received.
        Increasing number usually means that communicating peers moved out of range."
    ::= { ligoDot11IfErrStatsEntry 6 }

ligoDot11RemoteNodeStatsTable OBJECT-TYPE
    SYNTAX  SEQUENCE OF LigoDot11RemoteNodeStatsEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Remote node statistics table. This table shows statistics for associated or already disconnected clients 
        on wireless interfaces which are operating in access point mode. For interfaces operating in client mode and
        associated to remote access point information about access point is shown."
    ::= { ligoDot11Stats 2 }

ligoDot11RemoteNodeStatsEntry OBJECT-TYPE
    SYNTAX  LigoDot11RemoteNodeStatsEntry
    MAX-ACCESS  not-accessible
    STATUS  current
    DESCRIPTION
        "Wireless remote node statistics table entry."
    INDEX { ifIndex, ligoDot11RmtNodeMacAddress }
    ::= { ligoDot11RemoteNodeStatsTable 1 }

LigoDot11RemoteNodeStatsEntry ::=
    SEQUENCE {
        ligoDot11RmtNodeMacAddress             MacAddress,
        ligoDot11RmtNodeAssociated             TruthValue,
        ligoDot11RmtNodeTxBytes                Counter32,
        ligoDot11RmtNodeRxBytes                Counter32,
        ligoDot11RmtNodeAssocTime              Integer32,
        ligoDot11RmtNodeDisassocTime           Integer32
    }

ligoDot11RmtNodeMacAddress OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Remote node MAC address."
    ::= { ligoDot11RemoteNodeStatsEntry 1 }

ligoDot11RmtNodeAssociated OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Remote node is currently associated."
    ::= { ligoDot11RemoteNodeStatsEntry 2 }

ligoDot11RmtNodeTxBytes OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "bytes"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Bytes transmitted to remote node. This object is optional."
    ::= { ligoDot11RemoteNodeStatsEntry 3 }

ligoDot11RmtNodeRxBytes OBJECT-TYPE
    SYNTAX      Counter32
    UNITS       "bytes"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Bytes received from remote node. This object is optional."
    ::= { ligoDot11RemoteNodeStatsEntry 4 }

ligoDot11RmtNodeAssocTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "UNIX timestamp of the association. This object is optional."
    ::= { ligoDot11RemoteNodeStatsEntry 5 }

ligoDot11RmtNodeDisassocTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "UNIX timestamp of the disassociation (if remote node recently dissasociated). 
        This object is optional."
    ::= { ligoDot11RemoteNodeStatsEntry 6 }

--
-- Notifications
--

ligoFrequencyChange NOTIFICATION-TYPE
    OBJECTS {
        sysLocation,
        ifIndex,
        ligoDot11IfFrequency
    }
    STATUS      current
    DESCRIPTION
        "This notification is sent on frequency change."
    ::= { ligoDot11Notifs 1 }

ligoNoiseThresholdReached NOTIFICATION-TYPE
    OBJECTS {
        sysLocation,
        ifIndex,
        ligoDot11IfNoiseLevel
    }
    STATUS      current
    DESCRIPTION
        "This notification is sent when noise becomes bigger than threshold."
    ::= { ligoDot11Notifs 2 }

ligoRemoteNodeConnected NOTIFICATION-TYPE
    OBJECTS {
        sysLocation,
        ifPhysAddress,
        ifIndex,
        ligoDot11RmtNodeMacAddress
    }
    STATUS      current
    DESCRIPTION
        "This notification is sent when remote node associates."
    ::= { ligoDot11Notifs 3 }

ligoRemoteNodeDisconnected NOTIFICATION-TYPE
    OBJECTS {
        sysLocation,
        ifPhysAddress,
        ifIndex,
        ligoDot11RmtNodeMacAddress
    }
    STATUS      current
    DESCRIPTION
        "This notification is sent when remote node dissasociates."
    ::= { ligoDot11Notifs 4 }

ligoLinkQualThresholdReached NOTIFICATION-TYPE
    OBJECTS {
        sysLocation,
        ifIndex,
        ligoDot11IfLinkQuality
    }
    STATUS      current
    DESCRIPTION
        "This notification is sent when link quality crosses the specified threshold."
    ::= { ligoDot11Notifs 5 }

END
