NTGR-718-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Counter32, Counter64, Gauge32,
    OBJECT-IDENTITY, enterprises
        FROM SNMPv2-SMI
    TEXTUAL-CONVENTION, RowStatus, DisplayString
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF;

ntgr718MIB MODULE-IDENTITY
    LAST-UPDATED "202503280000Z"
    ORGANIZATION "Netgear"
    CONTACT-INFO "Netgear Support - email: senthilb@netgear.com"
    DESCRIPTION "MIB for NTGR-718 Wired and Wireless Network Management"
    REVISION "202503280000Z"
    DESCRIPTION "Merged version combining wired and wireless management"
    ::= { enterprises 4526 100 7 39 }

-- =========================================================================
-- WIRELESS NETWORK OBJECTS (maintaining original OIDs from wireless MIB)
-- =========================================================================

-- Top level wireless objects container (OID: .1.3.6.1.4.1.4526.100.7.39.1)
ntgrWirelessObjects OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION "Root object identifier for wireless network objects"
    ::= { ntgr718MIB 1 }

-- Radio Table (original OID: .1.3.6.1.4.1.4526.100.7.39.1.1)
radioTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF RadioEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of radio devices in OpenWrt"
    ::= { ntgrWirelessObjects 1 }

radioEntry OBJECT-TYPE
    SYNTAX      RadioEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row describing a radio device"
    INDEX { radioIndex }
    ::= { radioTable 1 }

RadioEntry ::= SEQUENCE {
    radioIndex      Integer32,
    radioName       DisplayString,
    radioChannel    Integer32,
    radioMode       DisplayString,
    radioTxPower    Integer32
}

radioIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value for each radio."
    ::= { radioEntry 1 }

radioName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The name of the radio device."
    ::= { radioEntry 2 }

radioChannel OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current channel of the radio device."
    ::= { radioEntry 3 }

radioMode OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The operating mode of the radio (e.g., 11g, 11n, 11ac)."
    ::= { radioEntry 4 }

radioTxPower OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The transmit power in dBm."
    ::= { radioEntry 5 }

-- SSID Table (original OID: .1.3.6.1.4.1.4526.100.7.39.1.2)
ssidTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SsidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of SSIDs configured in OpenWrt"
    ::= { ntgrWirelessObjects 2 }

ssidEntry OBJECT-TYPE
    SYNTAX      SsidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row describing an SSID"
    INDEX { ssidIndex }
    ::= { ssidTable 1 }

SsidEntry ::= SEQUENCE {
    ssidIndex       Integer32,
    ssidRadio       DisplayString,
    ssidName        DisplayString,
    ssidEncryption  DisplayString,
    ssidHidden      Integer32
}

ssidIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value for each SSID."
    ::= { ssidEntry 1 }

ssidRadio OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The radio device this SSID is associated with."
    ::= { ssidEntry 2 }

ssidName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The SSID name."
    ::= { ssidEntry 3 }

ssidEncryption OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The encryption type used for this SSID."
    ::= { ssidEntry 4 }

ssidHidden OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Whether the SSID is hidden (1) or not (0)."
    ::= { ssidEntry 5 }

-- Wireless Client Table (original OID: .1.3.6.1.4.1.4526.100.7.39.1.3)
wirelessClientTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF WirelessClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of connected wireless clients"
    ::= { ntgr718MIB 1 3 }

wirelessClientEntry OBJECT-TYPE
    SYNTAX      WirelessClientEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A row describing a connected wireless client"
    INDEX { wirelessClientIndex }
    ::= { wirelessClientTable 1 }

WirelessClientEntry ::= SEQUENCE {
    wirelessClientIndex         Integer32,
    wirelessClientMac           DisplayString,
    wirelessClientIp            DisplayString,
    wirelessClientHostname      DisplayString,
    wirelessClientSignal        Integer32,
    wirelessClientSnr           Integer32,
    wirelessClientIdle          Counter32,
    wirelessClientActive        Counter32,
    wirelessClientRxBytes       Counter32,
    wirelessClientTxBytes       Counter32,
    wirelessClientBssid         DisplayString,
    wirelessClientVlan          Integer32,
    wirelessClientRadiusName    DisplayString
}

wirelessClientIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..2147483647)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A unique value for each wireless client."
    ::= { wirelessClientEntry 1 }

wirelessClientMac OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The MAC address of the wireless client."
    ::= { wirelessClientEntry 2 }

wirelessClientIp OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The IP address of the wireless client."
    ::= { wirelessClientEntry 3 }

wirelessClientHostname OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The hostname of the wireless client if available."
    ::= { wirelessClientEntry 4 }

wirelessClientSignal OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The signal strength in dBm."
    ::= { wirelessClientEntry 5 }

wirelessClientSnr OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The signal-to-noise ratio in dB."
    ::= { wirelessClientEntry 6 }

wirelessClientIdle OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The idle time in seconds."
    ::= { wirelessClientEntry 7 }

wirelessClientActive OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The active time in seconds."
    ::= { wirelessClientEntry 8 }

wirelessClientRxBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of bytes received from this wireless client."
    ::= { wirelessClientEntry 9 }

wirelessClientTxBytes OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The number of bytes transmitted to this wireless client."
    ::= { wirelessClientEntry 10 }

wirelessClientBssid OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The BSSID the wireless client is connected to."
    ::= { wirelessClientEntry 11 }

wirelessClientVlan OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The VLAN ID associated with this wireless client, if any."
    ::= { wirelessClientEntry 12 }

wirelessClientRadiusName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The RADIUS username for this wireless client, if available."
    ::= { wirelessClientEntry 13 }

-- Device Info Table (original OID: .1.3.6.1.4.1.4526.100.7.39.1.4)
deviceInfoTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF DeviceInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "NTGR-718 device information"
    ::= { ntgr718MIB 1 4 }

deviceInfoEntry OBJECT-TYPE
    SYNTAX      DeviceInfoEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Device information entry"
    INDEX       { deviceInfoIndex }
    ::= { deviceInfoTable 1 }

DeviceInfoEntry ::= SEQUENCE {
    deviceInfoIndex   Integer32,
    deviceModel       DisplayString,
    deviceFirmware    DisplayString,
    deviceSerial      DisplayString,
    deviceMac         DisplayString,
    deviceRamUsed     Gauge32,
    deviceRamTotal    Gauge32,
    deviceCpuLoad     DisplayString,
    devicePoeMode     DisplayString
}

deviceInfoIndex OBJECT-TYPE
    SYNTAX      Integer32 (1..100)
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Always 1 - only one device info entry is available"
    ::= { deviceInfoEntry 1 }

deviceModel OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The device model name."
    ::= { deviceInfoEntry 2 }

deviceFirmware OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The firmware version running on the device."
    ::= { deviceInfoEntry 3 }

deviceSerial OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The serial number of the device, if available."
    ::= { deviceInfoEntry 4 }

deviceMac OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The MAC address of the device."
    ::= { deviceInfoEntry 5 }

deviceRamUsed OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The amount of RAM currently used in KB."
    ::= { deviceInfoEntry 7 }

deviceRamTotal OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The total amount of RAM in KB."
    ::= { deviceInfoEntry 8 }

deviceCpuLoad OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current CPU load average."
    ::= { deviceInfoEntry 9 }

devicePoeMode OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The PoE mode of the device, if applicable."
    ::= { deviceInfoEntry 10 }

-- =========================================================================
-- CONFORMANCE INFORMATION
-- =========================================================================

ntgr718Conformance OBJECT IDENTIFIER ::= { ntgr718MIB 10 }
ntgr718Compliances OBJECT IDENTIFIER ::= { ntgr718Conformance 1 }
ntgr718Groups OBJECT IDENTIFIER ::= { ntgr718Conformance 2 }

-- Compliance statements
ntgr718Compliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for SNMP entities which implement the
         NTGR-718-MIB."
    MODULE      -- this module
        MANDATORY-GROUPS {
            radioGroup,
            ssidGroup,
            wirelessClientGroup,
            deviceInfoGroup
        }
    ::= { ntgr718Compliances 1 }

-- Units of conformance
radioGroup OBJECT-GROUP
    OBJECTS {
        radioName,
        radioChannel,
        radioMode,
        radioTxPower
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information about radio devices."
    ::= { ntgr718Groups 4 }

ssidGroup OBJECT-GROUP
    OBJECTS {
        ssidRadio,
        ssidName,
        ssidEncryption,
        ssidHidden
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information about configured SSIDs."
    ::= { ntgr718Groups 5 }

wirelessClientGroup OBJECT-GROUP
    OBJECTS {
        wirelessClientMac,
        wirelessClientIp,
        wirelessClientHostname,
        wirelessClientSignal,
        wirelessClientSnr,
        wirelessClientIdle,
        wirelessClientActive,
        wirelessClientRxBytes,
        wirelessClientTxBytes,
        wirelessClientBssid,
        wirelessClientVlan,
        wirelessClientRadiusName
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information about wireless clients."
    ::= { ntgr718Groups 6 }

deviceInfoGroup OBJECT-GROUP
    OBJECTS {
        deviceModel,
        deviceFirmware,
        deviceSerial,
        deviceMac,
        deviceRamUsed,
        deviceRamTotal,
        deviceCpuLoad,
        devicePoeMode
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing information about the device."
    ::= { ntgr718Groups 7 }

END
