F5-OS-LLDP-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, Gauge32
        FROM SNMPv2-SMI
    DisplayString, TruthValue
        FROM SNMPv2-TC
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    l2networks
        FROM F5-OS-PLATFORM-SMI-MIB
    ;

--================================================================
f5OSLldp MODULE-IDENTITY
    LAST-UPDATED "202212200000Z"
    ORGANIZATION "F5 Inc."
    CONTACT-INFO
         "postal: F5 Inc.
                  801 Fifth Avenue
                  Seattle, WA 98104
          phone:  (206) 272-6500
          email:  support@f5.com"
    DESCRIPTION
        "Top-level infrastructure of the F5 enterprise MIB tree."
    ::= { l2networks 1 }

--================================================================
f5OSLldpObjects      OBJECT IDENTIFIER ::= { f5OSLldp 1 }
lldpConfiguration    OBJECT IDENTIFIER ::= { f5OSLldpObjects 1 }
lldpState            OBJECT IDENTIFIER ::= { f5OSLldpObjects 2 }
lldpIfConfig         OBJECT IDENTIFIER ::= { f5OSLldpObjects 3 }
lldpNeighbors        OBJECT IDENTIFIER ::= { f5OSLldpObjects 4 }

--==================================================================
-- LLDP Configuration
--==================================================================
lldpConfigurationEnabled OBJECT-TYPE
        SYNTAX          TruthValue
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION     "Indicates system LLDP configuration is enable or not."
        ::= { lldpConfiguration 1 }

lldpMessageTxInterval OBJECT-TYPE
        SYNTAX          Integer32 (5..32768)
        UNITS           "seconds"
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
            "The interval at which LLDP frames are transmitted on
             behalf of this LLDP agent.
             The default value for lldpMessageTxInterval object is
             30 seconds."
        DEFVAL          { 30 } 
        ::= { lldpConfiguration 2 }

lldpMessageTxHoldMultiplier OBJECT-TYPE
        SYNTAX          Integer32 (2..10)
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
             "The time-to-live value expressed as a multiple of the
              lldpMessageTxInterval object.  The actual time-to-live value
              used in LLDP frames, transmitted on behalf of this LLDP agent,
              can be expressed by the following formula: TTL = min(65535,
              (lldpMessageTxInterval * lldpMessageTxHoldMultiplier)) For
              example, if the value of lldpMessageTxInterval is '30', and
              the value of lldpMessageTxHoldMultiplier is '4', then the
              value '120' is encoded in the TTL field in the LLDP header.

              The default value for lldpMessageTxHoldMultiplier object is 4."
        DEFVAL          { 4 } 
        ::= { lldpConfiguration 3 }

lldpReinitDelay OBJECT-TYPE
        SYNTAX          Integer32 (1..10)
        UNITS           "seconds"
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
             "The lldpReinitDelay indicates the delay (in units of
              seconds) from when lldpIfTlvAdvertisement object of a
              particular port becomes 'disabled' until re-initialization
              will be attempted.

              The default value for lldpReintDelay object is two seconds."
        DEFVAL          { 2 } 
        ::= { lldpConfiguration 4 }

lldpTxDelay OBJECT-TYPE
        SYNTAX          Integer32 (1..8192)
        UNITS           "seconds"
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
             "The lldpTxDelay indicates the delay (in units
              of seconds) between successive LLDP frame transmissions 
              initiated by value/status changes in the LLDP local systems
              MIB.

              The default value for lldpTxDelay object is two seconds."
        DEFVAL          { 2 } 
        ::= { lldpConfiguration 5 }

lldpMaxNeighborsPerPort OBJECT-TYPE
        SYNTAX          Integer32 (1..10)
        UNITS           "neighbor"
        MAX-ACCESS      read-write
        STATUS          current
        DESCRIPTION
             "The lldpMaxNeighborsPerPort indicates the limit of Maximum LLDP 
              neighbors per port.
              The default value for lldpMaxNeighborsPerPort object is 10."
        DEFVAL          { 10 }
        ::= { lldpConfiguration 6 }

--==================================================================
-- Lldp Statistics
--==================================================================
lldpEnabled OBJECT-TYPE
        SYNTAX          TruthValue
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "Indicates system LLDP configuration is enable or not."
        ::= { lldpState 1 }

lldpSystemId OBJECT-TYPE
        SYNTAX          DisplayString
        MAX-ACCESS      read-only
        STATUS          current
        DESCRIPTION     "Indicates the system serial number."
        ::= { lldpState 2 }

lldpNeighborsNumber OBJECT-TYPE 
	SYNTAX          Integer32
	MAX-ACCESS      read-only
	STATUS          current
	DESCRIPTION     "The number of LLDP Neighbors connected to the system."
	::= { lldpState 3 } 

--==================================================================
-- Lldp Interface configuration
--==================================================================
lldpIfConfigTable OBJECT-TYPE
        SYNTAX          SEQUENCE OF LldpIfConfigEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "A table containing information of LLDP interface configuration."
        ::= { lldpIfConfig 1 }

lldpIfConfigEntry OBJECT-TYPE
        SYNTAX          LldpIfConfigEntry
        MAX-ACCESS      not-accessible
        STATUS          current
        DESCRIPTION     "Columns in the LldpInterfaceConfigTable"
        INDEX { lldpIfName }
        ::= { lldpIfConfigTable 1 }

LldpIfConfigEntry ::=
        SEQUENCE {
                lldpIfName                               DisplayString,
                lldpIfEnabled                            TruthValue,
                lldpIfTlvAdvertisement                   INTEGER,
                lldpIfTlvmap                             Integer32
        }

lldpIfName OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION    "The port name of LLDP Interface configuration."
        ::= { lldpIfConfigEntry 1 }

lldpIfEnabled OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION    "LLDP configuration is enabled/disabled for interface."
        ::= { lldpIfConfigEntry 2 }

lldpIfTlvAdvertisement OBJECT-TYPE
        SYNTAX         INTEGER { none(0), txonly(1), rxonly(2), txrx(3) }
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION    "LLDP interface tlv advertisement configuration."
        ::= { lldpIfConfigEntry 3 }

lldpIfTlvmap OBJECT-TYPE
        SYNTAX         Integer32
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION    "LLDP interface tlvmap configuration."
        ::= { lldpIfConfigEntry 4 }

--==================================================================
-- Lldp neighbors
--==================================================================
lldpNeighborsTable OBJECT-TYPE
	SYNTAX          SEQUENCE OF LldpNeighborsEntry
	MAX-ACCESS      not-accessible
	STATUS          current
	DESCRIPTION     "A table containing information of LLDP neighbors."
	::= { lldpNeighbors 1 } 

lldpNeighborsEntry OBJECT-TYPE
	SYNTAX          LldpNeighborsEntry
	MAX-ACCESS      not-accessible
	STATUS          current
	DESCRIPTION     "Columns in the LldpNeighborsTable"
	INDEX {
		lldpLocalInterface,
		lldpNeighborPortId
	}
	::= { lldpNeighborsTable 1 } 

LldpNeighborsEntry ::= 
	SEQUENCE {
        	lldpLocalInterface                               DisplayString,
        	lldpNeighborPortId                               DisplayString,
        	lldpNeighborChassisId                            DisplayString,
        	lldpNeighborPortDesc                             DisplayString,
        	lldpNeighborSysName                              DisplayString,
        	lldpNeighborSysDesc                              DisplayString,
        	lldpNeighborSysCap                               Gauge32,
        	lldpNeighborMgmtAddr                             DisplayString,
        	lldpNeighborPvid                                 Integer32,
        	lldpNeighborPpvid                                Integer32,
                lldpNeighborVlanName                             DisplayString,
                lldpNeighborVlanTag                              Integer32,
        	lldpNeighborProtocolIdentity                     Integer32,
        	lldpNeighborAutoNego                             Integer32,
        	lldpNeighborPmd                                  Integer32,
        	lldpNeighborMau                                  Integer32,
        	lldpNeighborAggStatus                            Integer32,
        	lldpNeighborAggPortid                            Gauge32,
        	lldpNeighborMfs                                  Integer32,
        	lldpNeighborF5ProductModel                       DisplayString
	}

lldpLocalInterface OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "The local port ID to which the LLDP neighbor is connected."
        ::= { lldpNeighborsEntry 1 }

lldpNeighborPortId OBJECT-TYPE
        SYNTAX         DisplayString
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION    "The port ID of the LLDP neighbor."
        ::= { lldpNeighborsEntry 2 }

lldpNeighborChassisId OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The chassis ID of the LLDP neighbor."
	::= { lldpNeighborsEntry 3 } 

lldpNeighborPortDesc OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "A description of the port on the LLDP neighbor."
	::= { lldpNeighborsEntry 4 } 

lldpNeighborSysName OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The system name of the LLDP neighbor."
	::= { lldpNeighborsEntry 5 } 

lldpNeighborSysDesc OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "A description of the LLDP neighbor."
	::= { lldpNeighborsEntry 6 } 

lldpNeighborSysCap OBJECT-TYPE 
	SYNTAX         Gauge32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "System capabilities of the LLDP neighbor (switching, routing, etc.)"
	::= { lldpNeighborsEntry 7 } 

lldpNeighborMgmtAddr OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Management IP address of the LLDP neighbor."
	::= { lldpNeighborsEntry 8 } 

lldpNeighborPvid OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The VLAN ID associated with the port on the LLDP neighbor."
	::= { lldpNeighborsEntry 9 } 

lldpNeighborPpvid OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Indicates whether a PPVID TLV has been received by the LLDP neighbor."
	::= { lldpNeighborsEntry 10 } 

lldpNeighborVlanName OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The VLAN name associated with the port on the LLDP neighbor."
	::= { lldpNeighborsEntry 11 } 

lldpNeighborVlanTag OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The VLAN tag associated with the port on the LLDP neighbor."
	::= { lldpNeighborsEntry 12 } 

lldpNeighborProtocolIdentity OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Indicates whether a Protocol Identity TLV has been received by the LLDP neighbor."
	::= { lldpNeighborsEntry 13 } 

lldpNeighborAutoNego OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The MAC/PHY Auto-Negotiation status of the LLDP neighbor."
	::= { lldpNeighborsEntry 14 } 

lldpNeighborPmd OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The MAC/PHY Physical Medium Dependant (PMD) capability of the LLDP neighbor."
	::= { lldpNeighborsEntry 15 } 

lldpNeighborMau OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "The MAC/PHY Medium Attachment Unit (MAU) type of the LLDP neighbor."
	::= { lldpNeighborsEntry 16 } 

lldpNeighborAggStatus OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Link aggregation status/capability of LLDP neighbor port."
	::= { lldpNeighborsEntry 17 } 

lldpNeighborAggPortid OBJECT-TYPE 
	SYNTAX         Gauge32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "If the remote port is aggregated, indicates the aggregated port ID on the LLDP neighbor."
	::= { lldpNeighborsEntry 18 } 

lldpNeighborMfs OBJECT-TYPE 
	SYNTAX         Integer32
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Maximum frame size of the LLDP neighbor's MAC and PHY implementation."
	::= { lldpNeighborsEntry 19 } 

lldpNeighborF5ProductModel OBJECT-TYPE 
	SYNTAX         DisplayString
	MAX-ACCESS     read-only
	STATUS         current
	DESCRIPTION    "Displays the F5 product model name if the LLDP neighbor is an F5 product."
	::= { lldpNeighborsEntry 20 }

--
-- Platform Groups
--
platformConformance OBJECT IDENTIFIER ::= { f5OSLldp 2 }

platformGroups      OBJECT IDENTIFIER ::= { platformConformance 1 }
platformCompliances OBJECT IDENTIFIER ::= { platformConformance 2 }

platformCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
            "The compliance statement for SNMP entities which have
            LLDP statistics."

    MODULE
        MANDATORY-GROUPS { lldpConfigGroup, lldpStateGroup, 
                           lldpIfConfigGroup, lldpNeighborsTableGroup }
::= { platformCompliances 1 }

lldpConfigGroup OBJECT-GROUP
         OBJECTS {
                lldpConfigurationEnabled,
                lldpMessageTxInterval,
                lldpMessageTxHoldMultiplier,
                lldpReinitDelay,
                lldpTxDelay,
                lldpMaxNeighborsPerPort
        }
        STATUS   current
        DESCRIPTION
                "A collection of objects of LLDP Configuration."
        ::= { platformGroups 1 }

lldpStateGroup OBJECT-GROUP
         OBJECTS {
                lldpEnabled,
                lldpSystemId,
                lldpNeighborsNumber
        }
        STATUS   current
        DESCRIPTION
                "A collection of objects of LLDP state."
        ::= { platformGroups 2 }

lldpIfConfigGroup OBJECT-GROUP
         OBJECTS {
                lldpIfName,
                lldpIfEnabled,
                lldpIfTlvAdvertisement,
                lldpIfTlvmap
        }
        STATUS   current
        DESCRIPTION
                "A collection of objects of LLDP interface configuration."
        ::= { platformGroups 3 }

lldpNeighborsTableGroup OBJECT-GROUP
	 OBJECTS {
		lldpLocalInterface,
		lldpNeighborPortId,
		lldpNeighborChassisId,
		lldpNeighborPortDesc,
		lldpNeighborSysName,
		lldpNeighborSysDesc,
		lldpNeighborSysCap,
		lldpNeighborMgmtAddr,
		lldpNeighborPvid,
		lldpNeighborPpvid,
                lldpNeighborVlanName,
                lldpNeighborVlanTag,
		lldpNeighborProtocolIdentity,
		lldpNeighborAutoNego,
		lldpNeighborPmd,
		lldpNeighborMau,
		lldpNeighborAggStatus,
		lldpNeighborAggPortid,
		lldpNeighborMfs,
		lldpNeighborF5ProductModel
	}
	STATUS	 current
	DESCRIPTION
		"A collection of objects of lldpNeighbors MIB."
	::= { platformGroups 4 }

END
