restructured mib, learned from IF-MIB

This commit is contained in:
Wolfgang Hottgenroth 2025-02-21 16:19:27 +01:00
parent 30f7a980c7
commit 2751e7c005
2 changed files with 72 additions and 34 deletions

View File

@ -112,13 +112,19 @@ version OBJECT-TYPE
::= { local 19 } ::= { local 19 }
peerNumber OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Number of Peers."
::= { peers 1 }
peerTable OBJECT-TYPE peerTable OBJECT-TYPE
SYNTAX SEQUENCE OF PeerEntry SYNTAX SEQUENCE OF PeerEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION "Tabelle mit NTP-Peers." DESCRIPTION "Tabelle mit NTP-Peers."
::= { peers 1 } ::= { peers 2 }
peerEntry OBJECT-TYPE peerEntry OBJECT-TYPE
SYNTAX PeerEntry SYNTAX PeerEntry
@ -129,73 +135,81 @@ peerEntry OBJECT-TYPE
::= { peerTable 1 } ::= { peerTable 1 }
PeerEntry ::= SEQUENCE { PeerEntry ::= SEQUENCE {
associd Integer32, index INTEGER,
associd INTEGER,
srcadr IpAddress, srcadr IpAddress,
srcport Integer32, srcport INTEGER,
dstadr IpAddress, dstadr IpAddress,
dstport Integer32, dstport INTEGER,
leap Integer32, leap INTEGER,
hmode Integer32, hmode INTEGER,
stratum Integer32, stratum INTEGER,
ppoll Integer32, ppoll INTEGER,
hpoll Integer32, hpoll INTEGER,
precision Integer32, precision INTEGER,
rootdelay Integer32, rootdelay INTEGER,
rootdisp Integer32, rootdisp INTEGER,
refid DisplayString, refid DisplayString,
reftime DisplayString, reftime DisplayString,
rec DisplayString, rec DisplayString,
xmt DisplayString, xmt DisplayString,
reach Integer32, reach INTEGER,
unreach Integer32, unreach INTEGER,
delay_s DisplayString, delay_s DisplayString,
delay Integer32, delay INTEGER,
offset Integer32, offset INTEGER,
jitter Integer32, jitter INTEGER,
dispersion Integer32, dispersion INTEGER,
keyid Integer32, keyid INTEGER,
filtdelay DisplayString, filtdelay DisplayString,
filtoffset DisplayString, filtoffset DisplayString,
pmode Integer32, pmode INTEGER,
filtdisp DisplayString, filtdisp DisplayString,
flash Integer32, flash INTEGER,
headway Integer32, headway INTEGER,
ntscookies Integer32 ntscookies INTEGER
} }
index OBJECT-TYPE
SYNTAX INTEGER
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Peer-Index."
::= { peerEntry 1 }
associd OBJECT-TYPE associd OBJECT-TYPE
SYNTAX Integer32 SYNTAX INTEGER
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION "Peer-Identifikationsnummer." DESCRIPTION "Peer-Identifikationsnummer."
::= { peerEntry 1 } ::= { peerEntry 2 }
srcadr OBJECT-TYPE srcadr OBJECT-TYPE
SYNTAX IpAddress SYNTAX IpAddress
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION "Quell-IP-Adresse des Peers." DESCRIPTION "Quell-IP-Adresse des Peers."
::= { peerEntry 2 } ::= { peerEntry 3 }
srcport OBJECT-TYPE srcport OBJECT-TYPE
SYNTAX Integer32 SYNTAX INTEGER
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION "Quellport des Peers." DESCRIPTION "Quellport des Peers."
::= { peerEntry 3 } ::= { peerEntry 4 }
dstadr OBJECT-TYPE dstadr OBJECT-TYPE
SYNTAX IpAddress SYNTAX IpAddress
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION "Ziel-IP-Adresse des Peers." DESCRIPTION "Ziel-IP-Adresse des Peers."
::= { peerEntry 4 } ::= { peerEntry 5 }
dstport OBJECT-TYPE dstport OBJECT-TYPE
SYNTAX Integer32 SYNTAX INTEGER
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION "Zielport des Peers." DESCRIPTION "Zielport des Peers."
::= { peerEntry 5 } ::= { peerEntry 6 }
END END

View File

@ -17,8 +17,18 @@ import ipaddress
BASE_OID_ENTERPRISE = '1.3.6.1.4.1' BASE_OID_ENTERPRISE = '1.3.6.1.4.1'
BASE_OID_HOTTIS = BASE_OID_ENTERPRISE + '.9676' BASE_OID_HOTTIS = BASE_OID_ENTERPRISE + '.9676'
BASE_OID_HOTTIS_NTPSEC = BASE_OID_HOTTIS + '.123' BASE_OID_HOTTIS_NTPSEC = BASE_OID_HOTTIS + '.123'
# just the prefix where the objects are below
LOCAL_PREFIX = '1' LOCAL_PREFIX = '1'
PEERS_PREFIX = '2' PEERS_PREFIX = '2'
NUMBER_OF_PEERS_PREFIX = PEERS_PREFIX + '.1'
# this is for a table
# 2 is the prefix
# the first 1 is for the table in the mib
# the second 1 is for the entries in the table in the mib
TABLE_OF_PEERS_PREFIX = PEERS_PREFIX + '.2.1'
def int_scale1k(x): def int_scale1k(x):
@ -171,17 +181,31 @@ class NtpsecDataUpdater(pyagentx3.Updater):
'type': data_spec[1], 'type': data_spec[1],
'value': data_spec[2](ds.data['local'][data_spec[0]]) 'value': data_spec[2](ds.data['local'][data_spec[0]])
} }
number_of_peers = len(ds.data['peers'])
logger.debug(f"number of peers: {number_of_peers}")
number_of_peers_oid_prefix = f"{NUMBER_OF_PEERS_PREFIX}"
self._data[number_of_peers_oid_prefix] = {
'name': number_of_peers_oid_prefix,
'type': pyagentx3.TYPE_INTEGER,
'value': number_of_peers
}
for peer_index, (associd, peer) in enumerate(ds.data['peers'].items(), start=1): for peer_index, (associd, peer) in enumerate(ds.data['peers'].items(), start=1):
logger.debug(f"peer: {peer}") logger.debug(f"peer: {peer}")
index_oid_prefix = f"{PEERS_PREFIX}.1.{peer_index}" index_oid_prefix = f"{TABLE_OF_PEERS_PREFIX}.1.{peer_index}"
self._data[index_oid_prefix] = { self._data[index_oid_prefix] = {
'name': index_oid_prefix, 'name': index_oid_prefix,
'type': pyagentx3.TYPE_INTEGER, 'type': pyagentx3.TYPE_INTEGER,
'value': peer_index
}
associd_oid_prefix = f"{TABLE_OF_PEERS_PREFIX}.2.{peer_index}"
self._data[associd_oid_prefix] = {
'name': associd_oid_prefix,
'type': pyagentx3.TYPE_INTEGER,
'value': associd 'value': associd
} }
for key_index, data_spec in enumerate(PEER_KEYS, start=2): for key_index, data_spec in enumerate(PEER_KEYS, start=3):
logger.debug(f"peer: {associd=} {key_index=} {data_spec=}") logger.debug(f"peer: {associd=} {key_index=} {data_spec=}")
oid_prefix = f"{PEERS_PREFIX}.{key_index}.{peer_index}" oid_prefix = f"{TABLE_OF_PEERS_PREFIX}.{key_index}.{peer_index}"
self._data[oid_prefix] = { self._data[oid_prefix] = {
'name': oid_prefix, 'name': oid_prefix,
'type': data_spec[1], 'type': data_spec[1],