class InterfacesMIB(metaclass=MIBMeta, prefix='.1.3.6.1.2.1.2'): """ 'interfaces' https://tools.ietf.org/html/rfc1213#section-3.5 """ if_updater = InterfacesUpdater() oidtree_updater = mibs.RedisOidTreeUpdater(prefix_str='1.3.6.1.2.1.2') # (subtree, value_type, callable_, *args, handler=None) ifNumber = MIBEntry('1', ValueType.INTEGER, if_updater.get_if_number) # ifTable ::= { interfaces 2 } # ifEntry ::= { ifTable 1 } ifIndex = \ SubtreeMIBEntry('2.1.1', if_updater, ValueType.INTEGER, if_updater.if_index) ifDescr = \ SubtreeMIBEntry('2.1.2', if_updater, ValueType.OCTET_STRING, if_updater.interface_description) ifType = \ SubtreeMIBEntry('2.1.3', if_updater, ValueType.INTEGER, if_updater.get_if_type) ifMtu = \ SubtreeMIBEntry('2.1.4', if_updater, ValueType.INTEGER, if_updater.get_mtu) ifSpeed = \ SubtreeMIBEntry('2.1.5', if_updater, ValueType.GAUGE_32, if_updater.get_speed_bps) # FIXME Placeholder. ifPhysAddress = \ SubtreeMIBEntry('2.1.6', if_updater, ValueType.OCTET_STRING, lambda sub_id: '') ifAdminStatus = \ SubtreeMIBEntry('2.1.7', if_updater, ValueType.INTEGER, if_updater.get_admin_status) ifOperStatus = \ SubtreeMIBEntry('2.1.8', if_updater, ValueType.INTEGER, if_updater.get_oper_status) # FIXME Placeholder. ifLastChange = \ SubtreeMIBEntry('2.1.9', if_updater, ValueType.TIME_TICKS, lambda sub_id: 0) ifInOctets = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.10', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(10)), OidMIBEntry('2.1.10', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifInUcastPkts = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.11', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(11)), OidMIBEntry('2.1.11', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifInNUcastPkts = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.12', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(12)), OidMIBEntry('2.1.12', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifInDiscards = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.13', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(13)), OidMIBEntry('2.1.13', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifInErrors = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.14', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(14)), OidMIBEntry('2.1.14', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifInUnknownProtos = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.15', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(15)), OidMIBEntry('2.1.15', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutOctets = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.16', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(16)), OidMIBEntry('2.1.16', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutUcastPkts = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.17', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(17)), OidMIBEntry('2.1.17', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutNUcastPkts = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.18', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(18)), OidMIBEntry('2.1.18', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutDiscards = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.19', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(19)), OidMIBEntry('2.1.19', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutErrors = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.20', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(20)), OidMIBEntry('2.1.20', ValueType.COUNTER_32, oidtree_updater.get_oidvalue) ) ifOutQLen = \ OverlayAdpaterMIBEntry( SubtreeMIBEntry('2.1.21', if_updater, ValueType.GAUGE_32, if_updater.get_counter, DbTables(21)), OidMIBEntry('2.1.21', ValueType.GAUGE_32, oidtree_updater.get_oidvalue) ) # FIXME Placeholder ifSpecific = \ SubtreeMIBEntry('2.1.22', if_updater, ValueType.OBJECT_IDENTIFIER, lambda sub_id: ObjectIdentifier.null_oid())
class InterfacesMIB(metaclass=MIBMeta, prefix='.1.3.6.1.2.1.2'): """ 'interfaces' https://tools.ietf.org/html/rfc1213#section-3.5 """ if_updater = InterfacesUpdater() _ifNumber = len(if_updater.if_name_map) # OID sub-identifiers are 1-based, while the actual interfaces are zero-based. # offset the interface range when registering the OIDs if_range = if_updater.oid_sai_map.keys() # (subtree, value_type, callable_, *args, handler=None) ifNumber = MIBEntry('1', ValueType.INTEGER, lambda: InterfacesMIB._ifNumber) # ifTable ::= { interfaces 2 } # ifEntry ::= { ifTable 1 } ifIndex = \ ContextualMIBEntry('2.1.1', if_range, ValueType.INTEGER, lambda sub_id: sub_id - 1) ifDescr = \ ContextualMIBEntry('2.1.2', if_range, ValueType.OCTET_STRING, if_updater.interface_description) # FIXME: Placeholder # ethernetCsmacd(6), -- for all ethernet-like interfaces, # -- regardless of speed, as per RFC3635 ifType = \ ContextualMIBEntry('2.1.3', if_range, ValueType.INTEGER, lambda sub_id: 6) # FIXME Placeholder. ACS switches only use the MTU value of 9196 ifMtu = \ ContextualMIBEntry('2.1.4', if_range, ValueType.INTEGER, lambda sub_id: 9196) # FIXME Placeholder. # "If the bandwidth of the interface is greater # than the maximum value reportable by this object, # then this object should report its maximum value # (4.294,967,295) and ifHighSpeed must be used to # report the interface's speed." ifSpeed = \ ContextualMIBEntry('2.1.5', if_range, ValueType.GAUGE_32, lambda sub_id: 4294967295) # FIXME Placeholder. ifPhysAddress = \ ContextualMIBEntry('2.1.6', if_range, ValueType.OCTET_STRING, lambda sub_id: '') # FIXME Placeholder. 1 -- up; 2 -- down; 3 -- testing ifAdminStatus = \ ContextualMIBEntry('2.1.7', if_range, ValueType.INTEGER, lambda sub_id: 1) # FIXME Placeholder. 1 -- up; 2 -- down; 3 -- testing ifOperStatus = \ ContextualMIBEntry('2.1.8', if_range, ValueType.INTEGER, lambda sub_id: 1) # FIXME Placeholder. ifLastChange = \ ContextualMIBEntry('2.1.9', if_range, ValueType.TIME_TICKS, lambda sub_id: 0) ifInOctets = \ ContextualMIBEntry('2.1.10', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(10)) ifInUcastPkts = \ ContextualMIBEntry('2.1.11', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(11)) ifInNUcastPkts = \ ContextualMIBEntry('2.1.12', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(12)) ifInDiscards = \ ContextualMIBEntry('2.1.13', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(13)) ifInErrors = \ ContextualMIBEntry('2.1.14', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(14)) ifInUnknownProtos = \ ContextualMIBEntry('2.1.15', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(15)) ifOutOctets = \ ContextualMIBEntry('2.1.16', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(16)) ifOutUcastPkts = \ ContextualMIBEntry('2.1.17', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(17)) ifOutNUcastPkts = \ ContextualMIBEntry('2.1.18', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(18)) ifOutDiscards = \ ContextualMIBEntry('2.1.19', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(19)) ifOutErrors = \ ContextualMIBEntry('2.1.20', if_range, ValueType.COUNTER_32, if_updater.get_counter, DbTables(20)) ifOutQLen = \ ContextualMIBEntry('2.1.21', if_range, ValueType.GAUGE_32, if_updater.get_counter, DbTables(21)) # FIXME Placeholder ifSpecific = \ ContextualMIBEntry('2.1.22', if_range, ValueType.OBJECT_IDENTIFIER, lambda sub_id: ObjectIdentifier.null_oid())
class InterfacesMIB(metaclass=MIBMeta, prefix='.1.3.6.1.2.1.2'): """ 'interfaces' https://tools.ietf.org/html/rfc1213#section-3.5 """ if_updater = InterfacesUpdater() # (subtree, value_type, callable_, *args, handler=None) ifNumber = MIBEntry('1', ValueType.INTEGER, if_updater.get_if_number) # ifTable ::= { interfaces 2 } # ifEntry ::= { ifTable 1 } ifIndex = \ SubtreeMIBEntry('2.1.1', if_updater, ValueType.INTEGER, if_updater.if_index) ifDescr = \ SubtreeMIBEntry('2.1.2', if_updater, ValueType.OCTET_STRING, if_updater.interface_description) # FIXME: Placeholder # ethernetCsmacd(6), -- for all ethernet-like interfaces, # -- regardless of speed, as per RFC3635 ifType = \ SubtreeMIBEntry('2.1.3', if_updater, ValueType.INTEGER, lambda sub_id: 6) ifMtu = \ SubtreeMIBEntry('2.1.4', if_updater, ValueType.INTEGER, if_updater.get_mtu) # FIXME Placeholder. # "If the bandwidth of the interface is greater # than the maximum value reportable by this object, # then this object should report its maximum value # (4.294,967,295) and ifHighSpeed must be used to # report the interface's speed." ifSpeed = \ SubtreeMIBEntry('2.1.5', if_updater, ValueType.GAUGE_32, lambda sub_id: 4294967295) # FIXME Placeholder. ifPhysAddress = \ SubtreeMIBEntry('2.1.6', if_updater, ValueType.OCTET_STRING, lambda sub_id: '') ifAdminStatus = \ SubtreeMIBEntry('2.1.7', if_updater, ValueType.INTEGER, if_updater.get_admin_status) ifOperStatus = \ SubtreeMIBEntry('2.1.8', if_updater, ValueType.INTEGER, if_updater.get_oper_status) # FIXME Placeholder. ifLastChange = \ SubtreeMIBEntry('2.1.9', if_updater, ValueType.TIME_TICKS, lambda sub_id: 0) ifInOctets = \ SubtreeMIBEntry('2.1.10', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(10)) ifInUcastPkts = \ SubtreeMIBEntry('2.1.11', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(11)) ifInNUcastPkts = \ SubtreeMIBEntry('2.1.12', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(12)) ifInDiscards = \ SubtreeMIBEntry('2.1.13', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(13)) ifInErrors = \ SubtreeMIBEntry('2.1.14', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(14)) ifInUnknownProtos = \ SubtreeMIBEntry('2.1.15', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(15)) ifOutOctets = \ SubtreeMIBEntry('2.1.16', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(16)) ifOutUcastPkts = \ SubtreeMIBEntry('2.1.17', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(17)) ifOutNUcastPkts = \ SubtreeMIBEntry('2.1.18', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(18)) ifOutDiscards = \ SubtreeMIBEntry('2.1.19', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(19)) ifOutErrors = \ SubtreeMIBEntry('2.1.20', if_updater, ValueType.COUNTER_32, if_updater.get_counter, DbTables(20)) ifOutQLen = \ SubtreeMIBEntry('2.1.21', if_updater, ValueType.GAUGE_32, if_updater.get_counter, DbTables(21)) # FIXME Placeholder ifSpecific = \ SubtreeMIBEntry('2.1.22', if_updater, ValueType.OBJECT_IDENTIFIER, lambda sub_id: ObjectIdentifier.null_oid())