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

View File

@ -17,8 +17,18 @@ import ipaddress
BASE_OID_ENTERPRISE = '1.3.6.1.4.1'
BASE_OID_HOTTIS = BASE_OID_ENTERPRISE + '.9676'
BASE_OID_HOTTIS_NTPSEC = BASE_OID_HOTTIS + '.123'
# just the prefix where the objects are below
LOCAL_PREFIX = '1'
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):
@ -171,17 +181,31 @@ class NtpsecDataUpdater(pyagentx3.Updater):
'type': data_spec[1],
'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):
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] = {
'name': index_oid_prefix,
'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
}
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=}")
oid_prefix = f"{PEERS_PREFIX}.{key_index}.{peer_index}"
oid_prefix = f"{TABLE_OF_PEERS_PREFIX}.{key_index}.{peer_index}"
self._data[oid_prefix] = {
'name': oid_prefix,
'type': data_spec[1],