MODULE mibTables ();
DESCRIPTION "Interface INVENTORY information";
BEGIN
ALL-DEV BY DEV
{
SET-INDEX ifTable ( ifDescr [ ifIndex, INT ] );
WITH-INDEX ifTable
{
RMV(ifDescr; ifIndex);
}
};
END
##################################################################
# This is the static Fault Alarm Thrsholds for the critical resources on the managed elements
#
##################################################################
MODULE FaultAlarms ();
DESCRIPTION "Fault Management Process";
BEGIN
WITH-INDEX ciscoEnvMonFanStatusTable
{
POLL ( ciscoEnvMonFanState);
DEFINE FanState INT;
IF (FanState != 1)
THEN
MSG(“Device @1 reporting an abnormal Fan state”, DEV);
ENDIF;
};
WITH-INDEX ciscoEnvMonSupplyStatusTable
{
POLL (ciscoEnvMonSupplyState);
DEFINE SupplyState INT;
IF (SupplyState != 1)
THEN
MSG(“Device @1 reporting an abnormal Supply state”, DEV);
ENDIF;
};
WITH-INDEX ciscoEnvMonTemperatureStatusTable
{
POLL (ciscoEnvMonTemperatureState);
DEFINE TemperatureState INT;
IF (TemperatureState != 1)
THEN
MSG(“Device @1 reporting an abnormal Temperature”, DEV);
ENDIF;
};
WITH-INDEX ciscoEnvMonVoltageStatusTable
{
POLL (ciscoEnvMonVoltageState);
DEFINE VoltageState INT;
IF (VoltageState != 1)
THEN
MSG(“Device @1 reporting an abnormal Voltage”, DEV);
ENDIF;
};
WITH-INDEX ciscoMemoryPoolTable
{
POLL (ciscoMemoryPoolFree);
};
END
####################################################################
# This is the static Fault Alarm Thresholds for the critical Buffer memoryon managed elements
#
####################################################################
MODULE BufferData ();
DESCRIPTION "Fault Management Process";
BEGIN
ALL-DEV BY DEV
{
DEFINE bufferFailCountT1 MAP INT;
DEFINE bufferNoMemCountT1 MAP INT;
DEFINE bufferFail DB INT;
DEFINE bufferNoMem DB INT;
bufferFailCountT1 = bufferFail;
bufferNoMemCountT1 = bufferNoMem;
RMV (bufferFail; bufferNoMem);
POLL (bufferFail; bufferNoMem);
DEFINE bufferFailCountT2 MAP INT;
DEFINE bufferNoMemCountT2 MAP INT;
DEFINE bufferFailCount MAP INT;
DEFINE bufferNoMemCount MAP INT;
bufferFailCountT2 = bufferFail;
bufferNoMemCountT2 = bufferNoMem;
bufferFailCount = bufferFailCountT2 – bufferFailCountT1;
bufferNoMemCount = bufferNoMemCountT2 – bufferNoMemCountT1;
IF (bufferFailCount >= 5)
THEN
MSG(“Device @1 is reporting a Buffer allocation failure”, DEV);
ENDIF;
IF (bufferNoMemCount >= 1)
THEN
MSG(“Device @1 reporting a Buffer creation failure”, DEV);
ENDIF;
};
END
#########################################################
# This is the Module that contains the collection of indexes to be learned by the
# Parent management process
#
#########################################################
MODULE FaultMgmtIndexes ();
DESCRIPTION “”;
BEGIN
SET-INDEX ciscoEnvMonFanStatusTable
(ciscoEnvMonFanStatusDescr [ciscoEnvMonFanStatusIndex, INT]);
SET-INDEX ciscoEnvMonSupplyStatusTable
(ciscoEnvMonSupplyStatusDescr [ciscoEnvMonSupplyStatusIndex, INT]);
SET-INDEX ciscoEnvMonTemperatureStatusTable
(ciscoEnvMonTemperatureStatusDescr [ciscoEnvMonTemperatureStatusIndex, INT]);
SET-INDEX ciscoEnvMonVoltageStatusTable
(ciscoEnvMonVoltageStatusDescr [ciscoEnvMonVoltageStatusIndex, INT]);
SET-INDEX ciscoMemoryPoolTable
(ciscoMemoryPoolName [ciscoMemoryPoolType, INT]);
WITH-INDEX ifTable
{
POLL ( ifType; ifAdminStatus; ifOperStatus );
DEFINE ifAdminStatus DB DISPL;
DEFINE ifType DB DISPL;
DEFINE ifOperStatus DB DISPL;
IF (ifAdminStatus == "up" AND
ifOperStatus == "up" AND
ifType == "^ethernetCsmacd" )
THEN
STORE-INDEX "EthernetList";
ELSE
STORE-INDEX "OtherifList";
ENDIF;
RMV ( ifType; ifAdminStatus; ifOperStatus );
};
END
############################################################
# This is the First-Run values transient Module of the Fault management process
#
############################################################
MODULE FaultMgmt1 ();
DESCRIPTION “”;
BEGIN
ALL-DEV BY DEV
{
POLL (bufferFail; bufferNoMem);
##############################################
# dot3StatsTable & lifTable shares the same index with ifTable
# This assumes that ifTable indexes are already learned in
# a separate management process
#########################################
WITH-INDEX EthernetList
{
POLL ( dot3StatsCarrierSenseErrors;
dot3StatsDeferredTransmissions;
dot3StatsExcessiveCollisions;
dot3StatsInternalMacReceiveErrors;
dot3StatsInternalMacTransmitErrors;
ifCounterDiscontinuityTime;
locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifInUcastPkts;
ifInNUcastPkts;
ifOutUcastPkts;
ifOutNUcastPkts );
};
WITH-INDEX OtherifList
{
POLL ( locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifCounterDiscontinuityTime);
};
END
############################################################
# This is the Second-Run values transient Module of the Fault management process
#
############################################################
MODULE FaultMgmt2 ();
DESCRIPTION “”;
BEGIN
ALL-DEV BY DEV
{
####################################################
## dot3StatsTable & lifTable shares the same index with ifTable
##############################################
WITH-INDEX EthernetList
{
########################################################
###########Defining the First-Run Variables:
DEFINE CarrierSenseErrorsT1 MAP INT;
DEFINE DeferredTransmissionsT1 MAP INT;
DEFINE ExcessiveCollisionsT1 MAP INT;
DEFINE MacReceiveErrorsT1 MAP INT;
DEFINE MacTransmitErrorsT1 MAP INT;
DEFINE CounterDiscontinuityT1 MAP INT;
DEFINE locIfCarTransT1 MAP INT;
DEFINE locIfCollisionsT1 MAP INT;
DEFINE locIfInCRCT1 MAP INT;
DEFINE locIfResetsT1 MAP INT;
DEFINE ifInUcastPktsT1 MAP INT;
DEFINE ifInNUcastPktsT1 MAP INT;
DEFINE ifOutUcastPktsT1 MAP INT;
DEFINE ifOutNUcastPktsT1 MAP INT;
DEFINE dot3StatsCarrierSenseErrors DB INT;
DEFINE dot3StatsDeferredTransmissions DB INT;
DEFINE dot3StatsExcessiveCollisions DB INT;
DEFINE dot3StatsInternalMacReceiveErrors DB INT;
DEFINE dot3StatsInternalMacTransmitErrors DB INT;
DEFINE ifCounterDiscontinuityTime DB INT;
DEFINE locIfCarTrans DB INT;
DEFINE locIfCollisions DB INT;
DEFINE locIfInCRC DB INT;
DEFINE locIfResets DB INT;
DEFINE ifInUcastPkts DB INT;
DEFINE ifInNUcastPkts DB INT;
DEFINE ifOutUcastPkts DB INT;
DEFINE ifOutNUcastPkts DB INT;
########################################################
###########Populating the First-Run values:
CarrierSenseErrorsT1 = dot3StatsCarrierSenseErrors;
DeferredTransmissionsT1 = dot3StatsDeferredTransmissions;
ExcessiveCollisionsT1 = dot3StatsExcessiveCollisions;
MacReceiveErrorsT1 = dot3StatsInternalMacReceiveErrors;
MacTransmitErrorsT1 = dot3StatsInternalMacTransmitErrors;
CounterDiscontinuityT1 = ifCounterDiscontinuityTime;
locIfCarTransT1 = locIfCarTrans;
locIfCollisionsT1 = locIfCollisions;
locIfInCRCT1 = locIfInCRC;
locIfResetsT1 = locIfResets;
ifInUcastPktsT1 = ifInUcastPkts;
ifInNUcastPktsT1 = ifInNUcastPkts;
ifOutUcastPktsT1 = ifOutUcastPkts;
ifOutNUcastPktsT1 = ifOutNUcastPkts;
#################################################################
#Cleaning up the database from the excess transient First-Run values:
RMV ( dot3StatsCarrierSenseErrors;
dot3StatsDeferredTransmissions;
dot3StatsExcessiveCollisions;
dot3StatsInternalMacReceiveErrors;
dot3StatsInternalMacTransmitErrors;
ifCounterDiscontinuityTime;
locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifInUcastPkts;
ifInNUcastPkts;
ifOutUcastPkts;
ifOutNUcastPkts);
########################################################
###########Populating the Database with the Second-Run values:
POLL ( dot3StatsCarrierSenseErrors;
dot3StatsDeferredTransmissions;
dot3StatsExcessiveCollisions;
dot3StatsInternalMacReceiveErrors;
dot3StatsInternalMacTransmitErrors;
ifCounterDiscontinuityTime;
locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifInUcastPkts;
ifInNUcastPkts;
ifOutUcastPkts;
ifOutNUcastPkts);
########################################################
###########Defining the Second-Run Variables:
DEFINE CarrierSenseErrorsT2 MAP INT;
DEFINE DeferredTransmissionsT2 MAP INT;
DEFINE ExcessiveCollisionsT2 MAP INT;
DEFINE MacReceiveErrorsT2 MAP INT;
DEFINE MacTransmitErrorsT2 MAP INT;
DEFINE CounterDiscontinuityT2 MAP INT;
DEFINE locIfCarTransT2 MAP INT;
DEFINE locIfCollisionsT2 MAP INT;
DEFINE locIfInCRCT2 MAP INT;
DEFINE locIfResetsT2 MAP INT;
DEFINE ifInUcastPktsT2 MAP INT;
DEFINE ifInNUcastPktsT2 MAP INT;
DEFINE ifOutUcastPktsT2 MAP INT;
DEFINE ifOutNUcastPktsT2 MAP INT;
########################################################
###########Populating the Variables with the Second-Run values:
CarrierSenseErrorsT2 = dot3StatsCarrierSenseErrors;
DeferredTransmissionsT2 = dot3StatsDeferredTransmissions;
ExcessiveCollisionsT2 = dot3StatsExcessiveCollisions;
MacReceiveErrorsT2 = dot3StatsInternalMacReceiveErrors;
MacTransmitErrorsT2 = dot3StatsInternalMacTransmitErrors;
CounterDiscontinuityT2 = ifCounterDiscontinuityTime;
LocIfCarTransT2 = locIfCarTrans;
locIfCollisionsT2 = locIfCollisions;
locIfInCRCT2 = locIfInCRC;
locIfResetsT2 = locIfResets;
ifInUcastPktsT2 = ifInUcastPkts;
ifInNUcastPktsT2 = ifInNUcastPkts;
ifOutUcastPktsT2 = ifOutUcastPkts;
ifOutNUcastPktsT2 = ifOutNUcastPkts;
########################################################
###########Testing for interface counter resets/discontinuities:
IF (CounterDiscontinuityT2 == CounterDiscontinuityT1)
THEN
########################################################
#######Defining and calculating Variables for Populating the relevant database values:
CounterData ( DeltaCarrierSenseErrors,
CarrierSenseErrorsT1,
CarrierSenseErrorsT2);
CounterData ( DeltaDeferredTransmissions,
DeferredTransmissionsT1,
DeferredTransmissionsT2);
CounterData ( DeltaExcessiveCollisions,
ExcessiveCollisionsT1,
ExcessiveCollisionsT2);
CounterData ( DeltaMacReceiveErrors,
MacReceiveErrorsT1,
MacReceiveErrorsT2);
CounterData ( DeltaMacTransmitErrors,
MacTransmitErrorsT1,
MacTransmitErrorsT2);
CounterData ( DeltalocIfCarTrans,
locIfCarTransT1,
locIfCarTransT2);
CounterData ( DeltalocIfCollisions,
locIfCollisionsT1,
locIfCollisionsT2);
CounterData ( DeltalocIfInCRC,
locIfInCRCT1,
locIfInCRCT2);
CounterData ( DeltalocIfResets,
locIfResetsT1,
locIfResetsT2);
CounterData ( DeltaifInUcastPkts,
ifInUcastPktsT1,
ifInUcastPktsT2);
CounterData ( DeltaifInNUcastPkts,
ifInNUcastPktsT1,
ifInNUcastPktsT2);
CounterData ( DeltaifOutUcastPkts ,
ifOutUcastPktsT1,
ifOutUcastPktsT2);
CounterData ( DeltaifOutNUcastPkts,
ifOutNUcastPktsT1,
ifOutNUcastPktsT2);
#########################################################
# Defining Variables for setting the Thresholds the relevant database values.
#
# The Carrier Sense Loss condition:
#
IF (CarrierSenseErrors > “2”)
THEN
MSG(“Device @1 reporting a Carrier sense loss alarm”, DEV);
ENDIF;
DEFINE InTotalPkts MAP INT;
DEFINE OutTotalPkts MAP INT;
DEFINE ExcessiveCollisionsThershold MAP INT;
DEFINE MacReceiveErrorsThreshold MAP INT;
DEFINE MacTransmitErrorsThreshold MAP INT;
InTotalPkts = DeltaifInUcastPkts + DeltaifInNUcastPkts;
OutTotalPkts = DeltaifOutUcastPkts + DeltaifOutNUcastPkts;
########################################################
# Defining Variables for Populating the relevant database values.
#
# The Excessive Collisions condition:
ExcessiveCollisionsThershold = OutTotalPkts * 0.002;
IF (ExcessiveCollisions > ExcessiveCollisionsThershold)
THEN
MSG(“Device @1 is reporting Excessive collisions alarm”, DEV);
ENDIF;
##########################################################
# Defining Variables for Populating the relevant database values.
#
# The MAC sublayer receive errors condition:
MacReceiveErrorsThreshold = InTotalPkts * 0.01;
IF (ExcessiveCollisions > MacReceiveErrorsThreshold)
THEN
MSG(“Device @1 is reporting a MAC sublayer receive errors alarm”, DEV);
ENDIF;
##########################################################
# Defining Variables for Populating the relevant database values.
#
# The MAC sublayer transmit errors condition:
#
MacTransmitErrorsThreshold = OutTotalPkts * 0.01;
IF (ExcessiveCollisions > Mac TransmitErrorsThreshold)
THEN
MSG(“Device @1 is reporting a MAC sublayer transmit errors alarm”, DEV);
ENDIF;
ENDIF;
};
###############################################################
###########Populating the First and Second -Run values for non-Ethernet interfaces:
WITH-INDEX OtherifList
{
locIfCarTransT1 = locIfCarTrans;
locIfCollisionsT1 = locIfCollisions;
locIfInCRCT1 = locIfInCRC;
locIfResetsT1 = locIfResets;
CounterDiscontinuityT1 = ifCounterDiscontinuityTime;
RMV ( locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifCounterDiscontinuityTime);
POLL ( locIfCarTrans;
locIfCollisions;
locIfInCRC;
locIfResets;
ifCounterDiscontinuityTime);
locIfCarTransT2 = locIfCarTrans;
locIfCollisionsT2 = locIfCollisions;
locIfInCRCT2 = locIfInCRC;
locIfResetsT2 = locIfResets;
CounterDiscontinuityT2 = ifCounterDiscontinuityTime;
IF (CounterDiscontinuityT2 == CounterDiscontinuityT1)
THEN
DEFINE locIfCarTrans DB INT;
DEFINE locIfCollisions DB INT;
DEFINE locIfInCRC DB INT;
DEFINE locIfResets DB INT;
CounterData ( DeltalocIfCarTrans,
locIfCarTransT1,
locIfCarTransT2);
CounterData ( DeltalocIfCollisions,
locIfCollisionsT1,
locIfCollisionsT2);
CounterData ( DeltalocIfInCRC,
locIfInCRCT1,
locIfInCRCT2);
CounterData ( DeltalocIfResets,
locIfResetsT1,
locIfResetsT2);
ENDIF;
};
};
END