From ec448dda962b016208735a3dab41d166f972f3c0 Mon Sep 17 00:00:00 2001 From: Adam Wujek <adam.wujek@cern.ch> Date: Tue, 23 Jul 2019 11:48:50 +0200 Subject: [PATCH] userspace/snmp: WIP add HA related changes to wrsPtpInstanceTable Signed-off-by: Adam Wujek <adam.wujek@cern.ch> --- userspace/snmpd/WR-SWITCH-MIB.txt | 247 ++++++++++++++++++-------- userspace/snmpd/wrsPtpInstanceTable.c | 74 ++++++-- userspace/snmpd/wrsPtpInstanceTable.h | 23 ++- 3 files changed, 250 insertions(+), 94 deletions(-) diff --git a/userspace/snmpd/WR-SWITCH-MIB.txt b/userspace/snmpd/WR-SWITCH-MIB.txt index fbb37d743..92c485085 100644 --- a/userspace/snmpd/WR-SWITCH-MIB.txt +++ b/userspace/snmpd/WR-SWITCH-MIB.txt @@ -1175,7 +1175,7 @@ wrsStartCntLdap OBJECT-TYPE STATUS current DESCRIPTION "Number of LDAP daemon starts" - ::= { wrsStartCntGroup 9 } + ::= { wrsStartCntGroup 10 } -- wrsSpllState (.7.3) wrsSpllState OBJECT IDENTIFIER ::= { wrsExpertStatus 3 } @@ -2615,7 +2615,7 @@ wrsPstatsHCNICTXFrames OBJECT-TYPE -- wrsPtpInstanceTable (.7.8) wrsPtpInstanceTable OBJECT-TYPE - SYNTAX SEQUENCE OF wrsPtpInstanceEntry + SYNTAX SEQUENCE OF WrsPtpInstanceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION @@ -2633,22 +2633,35 @@ wrsPtpInstanceEntry OBJECT-TYPE WrsPtpInstanceEntry ::= SEQUENCE { - wrsPtpInstancePortIndex Unsigned32, - wrsPtpInstanceOnPortIndex Unsigned32, - wrsPtpInstanceName DisplayString, - wrsPtpInstancePort INTEGER, - wrsPtpInstancePortInstance INTEGER, - wrsPtpInstancePortName DisplayString, - wrsPtpInstanceState INTEGER, - wrsPtpInstanceStateNext INTEGER, - wrsPtpInstanceRole INTEGER, - wrsPtpInstanceMechanism INTEGER, - wrsPtpInstanceProto INTEGER, - wrsPtpInstanceExt INTEGER, - wrsPtpInstancePeerMac PhysAddress, - wrsPtpInstancePeerVid INTEGER, - wrsPtpInstanceVlanNum INTEGER, - wrsPtpInstanceVlanListStr INTEGER, + wrsPtpInstancePortIndex Unsigned32, + wrsPtpInstanceOnPortIndex Unsigned32, + wrsPtpInstanceName DisplayString, + wrsPtpInstancePort INTEGER, + wrsPtpInstancePortInstance INTEGER, + wrsPtpInstancePortName DisplayString, + wrsPtpInstanceState INTEGER, + wrsPtpInstanceMasterOnly INTEGER, + wrsPtpInstanceExtPortCfgDesSt INTEGER, + wrsPtpInstanceMechanism INTEGER, + wrsPtpInstanceProfile INTEGER, + wrsPtpInstanceExtension INTEGER, + wrsPtpInstanceAsymEnabled INTEGER, + wrsPtpInstanceAsymConstAsym INTEGER, + wrsPtpInstanceAsymScDelayCoef Counter64, + wrsPtpInstanceAsymScDelayCoefHR DisplayString, + wrsPtpInstanceTSCorrEgressLat Counter64, + wrsPtpInstanceTSCorrEgressLatPS Counter64, + wrsPtpInstanceTSCorrIngLat Counter64, + wrsPtpInstanceTSCorrIngLatPS Counter64, + wrsPtpInstanceTSCorrSemistLat Counter64, + wrsPtpInstanceTSCorrSemistLatPS Counter64, + wrsPtpInstancePtpSupport INTEGER, + wrsPtpInstanceExtEnabled INTEGER, + wrsPtpInstanceProtoDetectState INTEGER, + wrsPtpInstancePeerMac PhysAddress, + wrsPtpInstancePeerVid INTEGER, + wrsPtpInstanceVlanNum INTEGER, + wrsPtpInstanceVlanListStr DisplayString --check-- } wrsPtpInstancePortIndex OBJECT-TYPE @@ -2736,124 +2749,214 @@ wrsPtpInstanceState OBJECT-TYPE "Name of instance" ::= { wrsPtpInstanceEntry 7 } -wrsPtpInstanceStateNext OBJECT-TYPE +wrsPtpInstanceMasterOnly OBJECT-TYPE SYNTAX INTEGER { na(0), - initializing(1), - faulty(2), - disabled(3), - listening(4), - preMaster(5), - master(6), - passive(7), - uncalibrated(8), - slave(9), - wrsPresent(100), - wrsSLock(101), - wrsMLock(102), - wrsLocked(103), - wrsCalibration(104), - wrsCalibrated(105), - wrsRespCalibReq(106), - wrsWrLinkOn(107), - wrPortCalibration0(108), - wrPortCalibration1(109), - wrPortCalibration2(110), - wrPortCalibration3(111), - wrPortCalibration4(112), - wrPortCalibration5(113), - wrPortCalibration6(114), - wrPortCalibration7(115), - wrPortCalibration8(116), - wrsAbscal(117) + x(1) + --????-- } MAX-ACCESS read-only STATUS current DESCRIPTION - "Name of instance" + "????" ::= { wrsPtpInstanceEntry 8 } -wrsPtpInstanceRole OBJECT-TYPE +wrsPtpInstanceExtPortCfgDesSt OBJECT-TYPE SYNTAX INTEGER { na(0), - auto(1), - master(2), - slave(3) + --????-- } MAX-ACCESS read-only STATUS current DESCRIPTION - "Role of instance" + "????" ::= { wrsPtpInstanceEntry 9 } -wrsPtpInstanceMechanism OBJECT-TYPE +wrsPtpInstanceMechanism OBJECT-TYPE SYNTAX INTEGER { na(0), - e2e(1), - p2p(2), + --????-- } MAX-ACCESS read-only STATUS current DESCRIPTION - "Mechanism used by an instance" + "????" ::= { wrsPtpInstanceEntry 10 } -wrsPtpInstanceProto OBJECT-TYPE +wrsPtpInstanceProfile OBJECT-TYPE SYNTAX INTEGER { na(0), - raw(1), - udp(2), - vlan(3), + --????-- } MAX-ACCESS read-only STATUS current DESCRIPTION - "Protocol used by an instance" + "????" ::= { wrsPtpInstanceEntry 11 } -wrsPtpInstanceExt OBJECT-TYPE +wrsPtpInstanceExtension OBJECT-TYPE SYNTAX INTEGER { na(0), - none(1), - wr(2), + --????-- } MAX-ACCESS read-only STATUS current DESCRIPTION - "Extension used by an instance" + "????" ::= { wrsPtpInstanceEntry 12 } +wrsPtpInstanceAsymEnabled OBJECT-TYPE + SYNTAX INTEGER { + na(0), + --????-- + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 13 } + +wrsPtpInstanceAsymConstAsym OBJECT-TYPE + SYNTAX INTEGER { + na(0), + x(1) + --????-- + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 14 } + +wrsPtpInstanceAsymScDelayCoef OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 15 } + +wrsPtpInstanceAsymScDelayCoefHR OBJECT-TYPE + SYNTAX DisplayString --size-- + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "The software version, as returned from 'git describe' at build time" + ::= { wrsPtpInstanceEntry 16 } + +wrsPtpInstanceTSCorrEgressLat OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 17 } + +wrsPtpInstanceTSCorrEgressLatPS OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 18 } + +wrsPtpInstanceTSCorrIngLat OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 19 } + +wrsPtpInstanceTSCorrIngLatPS OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 20 } + +wrsPtpInstanceTSCorrSemistLat OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 21 } + +wrsPtpInstanceTSCorrSemistLatPS OBJECT-TYPE + SYNTAX Counter64 + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 22 } + +wrsPtpInstancePtpSupport OBJECT-TYPE + SYNTAX INTEGER { + na(0), + --????-- + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 23 } + +wrsPtpInstanceExtEnabled OBJECT-TYPE + SYNTAX INTEGER { + na(0), + --????-- + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 24 } + +wrsPtpInstanceProtoDetectState OBJECT-TYPE + SYNTAX INTEGER { + na(0), + --????-- + } + MAX-ACCESS read-only + STATUS current + DESCRIPTION + "????" + ::= { wrsPtpInstanceEntry 25 } + + wrsPtpInstancePeerMac OBJECT-TYPE SYNTAX PhysAddress MAX-ACCESS read-only STATUS current DESCRIPTION "VID used by an instance" - ::= { wrsPtpInstanceEntry 13 } + ::= { wrsPtpInstanceEntry 26 } wrsPtpInstancePeerVid OBJECT-TYPE - SYNTAX Integer + SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "VID used by an instance" - ::= { wrsPtpInstanceEntry 14 } + ::= { wrsPtpInstanceEntry 27 } wrsPtpInstanceVlanNum OBJECT-TYPE - SYNTAX Integer + SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of VLANs used by an instance" - ::= { wrsPtpInstanceEntry 15 } + ::= { wrsPtpInstanceEntry 28 } wrsPtpInstanceVlanListStr OBJECT-TYPE - SYNTAX Integer + SYNTAX DisplayString --size?-- MAX-ACCESS read-only STATUS current DESCRIPTION "Coma separated list of VLANs used by an instance" - ::= { wrsPtpInstanceEntry 16 } + ::= { wrsPtpInstanceEntry 29 } --wrsNetworking --Configuration diff --git a/userspace/snmpd/wrsPtpInstanceTable.c b/userspace/snmpd/wrsPtpInstanceTable.c index ec71d6483..b014da608 100644 --- a/userspace/snmpd/wrsPtpInstanceTable.c +++ b/userspace/snmpd/wrsPtpInstanceTable.c @@ -3,25 +3,46 @@ #include "wrsPtpInstanceTable.h" struct wrsPtpInstanceTable_s wrsPtpInstanceTable_array[PP_MAX_LINKS]; +// global: +// defaultDS_t: +// --externalPortConfigurationEnabled +// --slaveOnly + static struct pickinfo wrsPtpInstanceTable_pickinfo[] = { /* Warning: strings are a special case for snmp format */ - FIELD(wrsPtpInstanceTable_s, ASN_UNSIGNED, wrsPtpInstancePortIndex), /* not reported */ - FIELD(wrsPtpInstanceTable_s, ASN_UNSIGNED, wrsPtpInstanceOnPortIndex), /* not reported */ + FIELD(wrsPtpInstanceTable_s, ASN_UNSIGNED, wrsPtpInstancePortIndex), /* not reported */ + FIELD(wrsPtpInstanceTable_s, ASN_UNSIGNED, wrsPtpInstanceOnPortIndex), /* not reported */ FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstanceName), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePort), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePortInstance), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePort), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePortInstance), FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstancePortName), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceState), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceStateNext), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceRole), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceMechanism), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceProto), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExt), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceState), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceMasterOnly), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtPortCfgDesSt), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceMechanism), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceProfile), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtension), + + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceAsymEnabled), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceAsymConstAsym), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceAsymScDelayCoef), + FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstanceAsymScDelayCoefHR), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrEgressLat), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrEgressLatPS), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrIngLat), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrIngLatPS), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrSemistLat), + FIELD(wrsPtpInstanceTable_s, ASN_COUNTER64, wrsPtpInstanceTSCorrSemistLatPS), + + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePtpSupport), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceExtEnabled), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceProtoDetectState), FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstancePeerMac), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePeerVid), - FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceVlanNum), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstancePeerVid), + FIELD(wrsPtpInstanceTable_s, ASN_INTEGER, wrsPtpInstanceVlanNum), FIELD(wrsPtpInstanceTable_s, ASN_OCTET_STR, wrsPtpInstanceVlanListStr), + }; static inline struct hal_port_state *pp_wrs_lookup_port(char *name) @@ -44,6 +65,7 @@ time_t wrsPtpInstanceTable_data_fill(unsigned int *n_rows) struct wrsPtpInstanceTable_s *i_a; struct pp_instance *ppsi_i; char *tmp_name; + portDS_t *portDS_i; struct hal_port_state *p; int phys_port; int last_port = 0; @@ -117,11 +139,29 @@ time_t wrsPtpInstanceTable_data_fill(unsigned int *n_rows) i_a[i].wrsPtpInstancePortInstance = instance_on_port; i_a[i].wrsPtpInstanceState = ppsi_i->state; - i_a[i].wrsPtpInstanceStateNext = ppsi_i->next_state; - i_a[i].wrsPtpInstanceRole = ppsi_i->role + 1; - i_a[i].wrsPtpInstanceMechanism = ppsi_i->mech + 1; - i_a[i].wrsPtpInstanceProto = ppsi_i->proto + 1; - i_a[i].wrsPtpInstanceExt = ppsi_i->cfg.ext + 1; + /* follow portDS */ + portDS_i = (portDS_t *) wrs_shm_follow(ppsi_head, + ppsi_i->portDS); + if (portDS_i) + i_a[i].wrsPtpInstanceMasterOnly = portDS_i->masterOnly; + + i_a[i].wrsPtpInstanceExtPortCfgDesSt = ppsi_i->externalPortConfigurationPortDS.desiredState; + i_a[i].wrsPtpInstanceMechanism = ppsi_i->delayMechanism; + i_a[i].wrsPtpInstanceProfile = ppsi_i->cfg.profile; + i_a[i].wrsPtpInstanceExtension = ppsi_i->protocol_extension; + i_a[i].wrsPtpInstanceAsymEnabled = ppsi_i->asymmetryCorrectionPortDS.enable + 1; + i_a[i].wrsPtpInstanceAsymConstAsym = ppsi_i->asymmetryCorrectionPortDS.constantAsymmetry; + i_a[i].wrsPtpInstanceAsymScDelayCoef = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient; + //i_a[i].wrsPtpInstanceAsymScDelayCoefHR = ppsi_i->asymmetryCorrectionPortDS.scaledDelayCoefficient (string) + i_a[i].wrsPtpInstanceTSCorrEgressLat = ppsi_i->timestampCorrectionPortDS.egressLatency; +// i_a[i].wrsPtpInstanceTSCorrEgressLatPS = ppsi_i->timestampCorrectionPortDS.egressLatency (ps) + i_a[i].wrsPtpInstanceTSCorrIngLat = ppsi_i->timestampCorrectionPortDS.ingressLatency; +// i_a[i].wrsPtpInstanceTSCorrIngLatPS = ppsi_i->timestampCorrectionPortDS.ingressLatency (ps) + i_a[i].wrsPtpInstanceTSCorrSemistLat = ppsi_i->timestampCorrectionPortDS.semistaticLatency; +// i_a[i].wrsPtpInstanceTSCorrSemistLatPS = ppsi_i->timestampCorrectionPortDS.semistaticLatency (ps)(bitslide) + i_a[i].wrsPtpInstancePtpSupport = ppsi_i->ptp_support; + i_a[i].wrsPtpInstanceExtEnabled = ppsi_i->extState; + i_a[i].wrsPtpInstanceProtoDetectState = ppsi_i->pdstate; memcpy(i_a[i].wrsPtpInstancePeerMac, ppsi_i->peer, ETH_ALEN); i_a[i].wrsPtpInstancePeerVid = ppsi_i->peer_vid; diff --git a/userspace/snmpd/wrsPtpInstanceTable.h b/userspace/snmpd/wrsPtpInstanceTable.h index 4e64311cd..5d65afd72 100644 --- a/userspace/snmpd/wrsPtpInstanceTable.h +++ b/userspace/snmpd/wrsPtpInstanceTable.h @@ -19,11 +19,24 @@ struct wrsPtpInstanceTable_s { int wrsPtpInstancePortInstance; /* serial of instance running on a given port */ char wrsPtpInstancePortName[16];/* port name on which ptp instance is running (wriX) */ int wrsPtpInstanceState; - int wrsPtpInstanceStateNext; - int wrsPtpInstanceRole; - int wrsPtpInstanceMechanism; - int wrsPtpInstanceProto; - int wrsPtpInstanceExt; + int wrsPtpInstanceMasterOnly; + int wrsPtpInstanceExtPortCfgDesSt; + int wrsPtpInstanceMechanism; /* ENDelayMechanism */ + int wrsPtpInstanceProfile; + int wrsPtpInstanceExtension; + int wrsPtpInstanceAsymEnabled; + int wrsPtpInstanceAsymConstAsym; + int wrsPtpInstanceAsymScDelayCoef; + char wrsPtpInstanceAsymScDelayCoefHR[64]; + int64_t wrsPtpInstanceTSCorrEgressLat; + int64_t wrsPtpInstanceTSCorrEgressLatPS; + int64_t wrsPtpInstanceTSCorrIngLat; + int64_t wrsPtpInstanceTSCorrIngLatPS; + int64_t wrsPtpInstanceTSCorrSemistLat; + int64_t wrsPtpInstanceTSCorrSemistLatPS; + int wrsPtpInstancePtpSupport; + int wrsPtpInstanceExtEnabled; + int wrsPtpInstanceProtoDetectState; char wrsPtpInstancePeerMac[ETH_ALEN]; int wrsPtpInstancePeerVid; int wrsPtpInstanceVlanNum; -- GitLab