350 lines
		
	
	
	
		
			9.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			350 lines
		
	
	
	
		
			9.6 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /******************************************************************************
 | ||
|  |  * | ||
|  |  *	(C)Copyright 1998,1999 SysKonnect, | ||
|  |  *	a business unit of Schneider & Koch & Co. Datensysteme GmbH. | ||
|  |  * | ||
|  |  *	This program is free software; you can redistribute it and/or modify | ||
|  |  *	it under the terms of the GNU General Public License as published by | ||
|  |  *	the Free Software Foundation; either version 2 of the License, or | ||
|  |  *	(at your option) any later version. | ||
|  |  * | ||
|  |  *	The information in this file is provided "AS IS" without warranty. | ||
|  |  * | ||
|  |  ******************************************************************************/ | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * FDDI MIB | ||
|  |  */ | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * typedefs | ||
|  |  */ | ||
|  | 
 | ||
|  | typedef	u_long	Counter ; | ||
|  | typedef u_char	TimeStamp[8] ; | ||
|  | typedef struct fddi_addr LongAddr ; | ||
|  | typedef	u_long	Timer_2 ; | ||
|  | typedef	u_long	Timer ; | ||
|  | typedef	u_short	ResId ; | ||
|  | typedef u_short	SMTEnum ; | ||
|  | typedef	u_char	SMTFlag ; | ||
|  | 
 | ||
|  | typedef struct { | ||
|  | 	Counter		count ; | ||
|  | 	TimeStamp	timestamp ; | ||
|  | } SetCountType ; | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * bits for bit string "available_path" | ||
|  |  */ | ||
|  | #define MIB_PATH_P	(1<<0)
 | ||
|  | #define MIB_PATH_S	(1<<1)
 | ||
|  | #define MIB_PATH_L	(1<<2)
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * bits for bit string PermittedPaths & RequestedPaths (SIZE(8)) | ||
|  |  */ | ||
|  | #define MIB_P_PATH_LOCAL	(1<<0)
 | ||
|  | #define MIB_P_PATH_SEC_ALTER	(1<<1)
 | ||
|  | #define MIB_P_PATH_PRIM_ALTER	(1<<2)
 | ||
|  | #define MIB_P_PATH_CON_ALTER	(1<<3)
 | ||
|  | #define MIB_P_PATH_SEC_PREFER	(1<<4)
 | ||
|  | #define MIB_P_PATH_PRIM_PREFER	(1<<5)
 | ||
|  | #define MIB_P_PATH_CON_PREFER	(1<<6)
 | ||
|  | #define MIB_P_PATH_THRU		(1<<7)
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * enum current path | ||
|  |  */ | ||
|  | #define MIB_PATH_ISOLATED	0
 | ||
|  | #define MIB_PATH_LOCAL		1
 | ||
|  | #define MIB_PATH_SECONDARY	2
 | ||
|  | #define MIB_PATH_PRIMARY	3
 | ||
|  | #define MIB_PATH_CONCATENATED	4
 | ||
|  | #define MIB_PATH_THRU		5
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * enum PMDClass | ||
|  |  */ | ||
|  | #define MIB_PMDCLASS_MULTI	0
 | ||
|  | #define MIB_PMDCLASS_SINGLE1	1
 | ||
|  | #define MIB_PMDCLASS_SINGLE2	2
 | ||
|  | #define MIB_PMDCLASS_SONET	3
 | ||
|  | #define MIB_PMDCLASS_LCF	4
 | ||
|  | #define MIB_PMDCLASS_TP		5
 | ||
|  | #define MIB_PMDCLASS_UNKNOWN	6
 | ||
|  | #define MIB_PMDCLASS_UNSPEC	7
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * enum SMTStationStatus | ||
|  |  */ | ||
|  | #define MIB_SMT_STASTA_CON	0
 | ||
|  | #define MIB_SMT_STASTA_SEPA	1
 | ||
|  | #define MIB_SMT_STASTA_THRU	2
 | ||
|  | 
 | ||
|  | 
 | ||
|  | struct fddi_mib { | ||
|  | 	/*
 | ||
|  | 	 * private | ||
|  | 	 */ | ||
|  | 	u_char			fddiPRPMFPasswd[8] ; | ||
|  | 	struct smt_sid		fddiPRPMFStation ; | ||
|  | 
 | ||
|  | #ifdef	ESS
 | ||
|  | 	/*
 | ||
|  | 	 * private variables for static allocation of the | ||
|  | 	 * End Station Support | ||
|  | 	 */ | ||
|  | 	u_long	fddiESSPayload ;	/* payload for static alloc */ | ||
|  | 	u_long	fddiESSOverhead ;	/* frame ov for static alloc */ | ||
|  | 	u_long	fddiESSMaxTNeg ;	/* maximum of T-NEG */ | ||
|  | 	u_long	fddiESSMinSegmentSize ;	/* min size of the sync frames */ | ||
|  | 	u_long	fddiESSCategory ;	/* category for the Alloc req */ | ||
|  | 	short	fddiESSSynchTxMode ;	/* send all LLC frames as sync */ | ||
|  | #endif	/* ESS */
 | ||
|  | #ifdef	SBA
 | ||
|  | 	/*
 | ||
|  | 	 * private variables for the Synchronous Bandwidth Allocator | ||
|  | 	 */ | ||
|  | 	char	fddiSBACommand ;	/* holds the parsed SBA cmd */ | ||
|  | 	u_char	fddiSBAAvailable ;	/* SBA allocatable value */ | ||
|  | #endif	/* SBA */
 | ||
|  | 
 | ||
|  | 	/*
 | ||
|  | 	 * SMT standard mib | ||
|  | 	 */ | ||
|  | 	struct smt_sid		fddiSMTStationId ; | ||
|  | 	u_short			fddiSMTOpVersionId ; | ||
|  | 	u_short			fddiSMTHiVersionId ; | ||
|  | 	u_short			fddiSMTLoVersionId ; | ||
|  | 	u_char			fddiSMTManufacturerData[32] ; | ||
|  | 	u_char			fddiSMTUserData[32] ; | ||
|  | 	u_short			fddiSMTMIBVersionId ; | ||
|  | 
 | ||
|  | 	/*
 | ||
|  | 	 * ConfigGrp | ||
|  | 	 */ | ||
|  | 	u_char			fddiSMTMac_Ct ; | ||
|  | 	u_char			fddiSMTNonMaster_Ct ; | ||
|  | 	u_char			fddiSMTMaster_Ct ; | ||
|  | 	u_char			fddiSMTAvailablePaths ; | ||
|  | 	u_short			fddiSMTConfigCapabilities ; | ||
|  | 	u_short			fddiSMTConfigPolicy ; | ||
|  | 	u_short			fddiSMTConnectionPolicy ; | ||
|  | 	u_short			fddiSMTTT_Notify ; | ||
|  | 	u_char			fddiSMTStatRptPolicy ; | ||
|  | 	u_long			fddiSMTTrace_MaxExpiration ; | ||
|  | 	u_short			fddiSMTPORTIndexes[NUMPHYS] ; | ||
|  | 	u_short			fddiSMTMACIndexes ; | ||
|  | 	u_char			fddiSMTBypassPresent ; | ||
|  | 
 | ||
|  | 	/*
 | ||
|  | 	 * StatusGrp | ||
|  | 	 */ | ||
|  | 	SMTEnum			fddiSMTECMState ; | ||
|  | 	SMTEnum			fddiSMTCF_State ; | ||
|  | 	SMTEnum			fddiSMTStationStatus ; | ||
|  | 	u_char			fddiSMTRemoteDisconnectFlag ; | ||
|  | 	u_char			fddiSMTPeerWrapFlag ; | ||
|  | 
 | ||
|  | 	/*
 | ||
|  | 	 * MIBOperationGrp | ||
|  | 	 */ | ||
|  | 	TimeStamp		fddiSMTTimeStamp ; | ||
|  | 	TimeStamp		fddiSMTTransitionTimeStamp ; | ||
|  | 	SetCountType		fddiSMTSetCount ; | ||
|  | 	struct smt_sid		fddiSMTLastSetStationId ; | ||
|  | 
 | ||
|  | 	struct fddi_mib_m { | ||
|  | 		u_short		fddiMACFrameStatusFunctions ; | ||
|  | 		Timer_2		fddiMACT_MaxCapabilitiy ; | ||
|  | 		Timer_2		fddiMACTVXCapabilitiy ; | ||
|  | 
 | ||
|  | 		/* ConfigGrp */ | ||
|  | 		u_char		fddiMACMultiple_N ;	/* private */ | ||
|  | 		u_char		fddiMACMultiple_P ;	/* private */ | ||
|  | 		u_char		fddiMACDuplicateAddressCond ;/* private */ | ||
|  | 		u_char		fddiMACAvailablePaths ; | ||
|  | 		u_short		fddiMACCurrentPath ; | ||
|  | 		LongAddr	fddiMACUpstreamNbr ; | ||
|  | 		LongAddr	fddiMACDownstreamNbr ; | ||
|  | 		LongAddr	fddiMACOldUpstreamNbr ; | ||
|  | 		LongAddr	fddiMACOldDownstreamNbr ; | ||
|  | 		SMTEnum		fddiMACDupAddressTest ; | ||
|  | 		u_short		fddiMACRequestedPaths ; | ||
|  | 		SMTEnum		fddiMACDownstreamPORTType ; | ||
|  | 		ResId		fddiMACIndex ; | ||
|  | 
 | ||
|  | 		/* AddressGrp */ | ||
|  | 		LongAddr	fddiMACSMTAddress ; | ||
|  | 
 | ||
|  | 		/* OperationGrp */ | ||
|  | 		Timer_2		fddiMACT_Min ;	/* private */ | ||
|  | 		Timer_2		fddiMACT_ReqMIB ; | ||
|  | 		Timer_2		fddiMACT_Req ;	/* private */ | ||
|  | 		Timer_2		fddiMACT_Neg ; | ||
|  | 		Timer_2		fddiMACT_MaxMIB ; | ||
|  | 		Timer_2		fddiMACT_Max ;	/* private */ | ||
|  | 		Timer_2		fddiMACTvxValueMIB ; | ||
|  | 		Timer_2		fddiMACTvxValue ; /* private */ | ||
|  | 		Timer_2		fddiMACT_Pri0 ; | ||
|  | 		Timer_2		fddiMACT_Pri1 ; | ||
|  | 		Timer_2		fddiMACT_Pri2 ; | ||
|  | 		Timer_2		fddiMACT_Pri3 ; | ||
|  | 		Timer_2		fddiMACT_Pri4 ; | ||
|  | 		Timer_2		fddiMACT_Pri5 ; | ||
|  | 		Timer_2		fddiMACT_Pri6 ; | ||
|  | 
 | ||
|  | 		/* CountersGrp */ | ||
|  | 		Counter		fddiMACFrame_Ct ; | ||
|  | 		Counter		fddiMACCopied_Ct ; | ||
|  | 		Counter		fddiMACTransmit_Ct ; | ||
|  | 		Counter		fddiMACToken_Ct ; | ||
|  | 		Counter		fddiMACError_Ct ; | ||
|  | 		Counter		fddiMACLost_Ct ; | ||
|  | 		Counter		fddiMACTvxExpired_Ct ; | ||
|  | 		Counter		fddiMACNotCopied_Ct ; | ||
|  | 		Counter		fddiMACRingOp_Ct ; | ||
|  | 
 | ||
|  | 		Counter		fddiMACSMTCopied_Ct ;		/* private */ | ||
|  | 		Counter		fddiMACSMTTransmit_Ct ;		/* private */ | ||
|  | 
 | ||
|  | 		/* private for delta ratio */ | ||
|  | 		Counter		fddiMACOld_Frame_Ct ; | ||
|  | 		Counter		fddiMACOld_Copied_Ct ; | ||
|  | 		Counter		fddiMACOld_Error_Ct ; | ||
|  | 		Counter		fddiMACOld_Lost_Ct ; | ||
|  | 		Counter		fddiMACOld_NotCopied_Ct ; | ||
|  | 
 | ||
|  | 		/* FrameErrorConditionGrp */ | ||
|  | 		u_short		fddiMACFrameErrorThreshold ; | ||
|  | 		u_short		fddiMACFrameErrorRatio ; | ||
|  | 
 | ||
|  | 		/* NotCopiedConditionGrp */ | ||
|  | 		u_short		fddiMACNotCopiedThreshold ; | ||
|  | 		u_short		fddiMACNotCopiedRatio ; | ||
|  | 
 | ||
|  | 		/* StatusGrp */ | ||
|  | 		SMTEnum		fddiMACRMTState ; | ||
|  | 		SMTFlag		fddiMACDA_Flag ; | ||
|  | 		SMTFlag		fddiMACUNDA_Flag ; | ||
|  | 		SMTFlag		fddiMACFrameErrorFlag ; | ||
|  | 		SMTFlag		fddiMACNotCopiedFlag ; | ||
|  | 		SMTFlag		fddiMACMA_UnitdataAvailable ; | ||
|  | 		SMTFlag		fddiMACHardwarePresent ; | ||
|  | 		SMTFlag		fddiMACMA_UnitdataEnable ; | ||
|  | 
 | ||
|  | 	} m[NUMMACS] ; | ||
|  | #define MAC0	0
 | ||
|  | 
 | ||
|  | 	struct fddi_mib_a { | ||
|  | 		ResId		fddiPATHIndex ; | ||
|  | 		u_long		fddiPATHSbaPayload ; | ||
|  | 		u_long		fddiPATHSbaOverhead ; | ||
|  | 		/* fddiPATHConfiguration is built on demand */ | ||
|  | 		/* u_long		fddiPATHConfiguration ; */ | ||
|  | 		Timer		fddiPATHT_Rmode ; | ||
|  | 		u_long		fddiPATHSbaAvailable ; | ||
|  | 		Timer_2		fddiPATHTVXLowerBound ; | ||
|  | 		Timer_2		fddiPATHT_MaxLowerBound ; | ||
|  | 		Timer_2		fddiPATHMaxT_Req ; | ||
|  | 	} a[NUMPATHS] ; | ||
|  | #define PATH0	0
 | ||
|  | 
 | ||
|  | 	struct fddi_mib_p { | ||
|  | 		/* ConfigGrp */ | ||
|  | 		SMTEnum		fddiPORTMy_Type ; | ||
|  | 		SMTEnum		fddiPORTNeighborType ; | ||
|  | 		u_char		fddiPORTConnectionPolicies ; | ||
|  | 		struct { | ||
|  | 			u_char	T_val ; | ||
|  | 			u_char	R_val ; | ||
|  | 		} fddiPORTMacIndicated ; | ||
|  | 		SMTEnum		fddiPORTCurrentPath ; | ||
|  | 		/* must be 4: is 32 bit in SMT format
 | ||
|  | 		 * indices : | ||
|  | 		 *	1	none | ||
|  | 		 *	2	tree | ||
|  | 		 *	3	peer | ||
|  | 		 */ | ||
|  | 		u_char		fddiPORTRequestedPaths[4] ; | ||
|  | 		u_short		fddiPORTMACPlacement ; | ||
|  | 		u_char		fddiPORTAvailablePaths ; | ||
|  | 		u_char		fddiPORTConnectionCapabilities ; | ||
|  | 		SMTEnum		fddiPORTPMDClass ; | ||
|  | 		ResId		fddiPORTIndex ; | ||
|  | 
 | ||
|  | 		/* OperationGrp */ | ||
|  | 		SMTEnum		fddiPORTMaint_LS ; | ||
|  | 		SMTEnum		fddiPORTPC_LS ; | ||
|  | 		u_char		fddiPORTBS_Flag ; | ||
|  | 
 | ||
|  | 		/* ErrorCtrsGrp */ | ||
|  | 		Counter		fddiPORTLCTFail_Ct ; | ||
|  | 		Counter		fddiPORTEBError_Ct ; | ||
|  | 		Counter		fddiPORTOldEBError_Ct ; | ||
|  | 
 | ||
|  | 		/* LerGrp */ | ||
|  | 		Counter		fddiPORTLem_Reject_Ct ; | ||
|  | 		Counter		fddiPORTLem_Ct ; | ||
|  | 		u_char		fddiPORTLer_Estimate ; | ||
|  | 		u_char		fddiPORTLer_Cutoff ; | ||
|  | 		u_char		fddiPORTLer_Alarm ; | ||
|  | 
 | ||
|  | 		/* StatusGrp */ | ||
|  | 		SMTEnum		fddiPORTConnectState ; | ||
|  | 		SMTEnum		fddiPORTPCMState ;	/* real value */ | ||
|  | 		SMTEnum		fddiPORTPCMStateX ;	/* value for MIB */ | ||
|  | 		SMTEnum		fddiPORTPC_Withhold ; | ||
|  | 		SMTFlag		fddiPORTHardwarePresent ; | ||
|  | 		u_char		fddiPORTLerFlag ; | ||
|  | 
 | ||
|  | 		u_char		fddiPORTMultiple_U ;	/* private */ | ||
|  | 		u_char		fddiPORTMultiple_P ;	/* private */ | ||
|  | 		u_char		fddiPORTEB_Condition ;	/* private */ | ||
|  | 	} p[NUMPHYS] ; | ||
|  | 	struct { | ||
|  | 		Counter		fddiPRIVECF_Req_Rx ;	/* ECF req received */ | ||
|  | 		Counter		fddiPRIVECF_Reply_Rx ;	/* ECF repl received */ | ||
|  | 		Counter		fddiPRIVECF_Req_Tx ;	/* ECF req transm */ | ||
|  | 		Counter		fddiPRIVECF_Reply_Tx ;	/* ECF repl transm */ | ||
|  | 		Counter		fddiPRIVPMF_Get_Rx ;	/* PMF Get rec */ | ||
|  | 		Counter		fddiPRIVPMF_Set_Rx ;	/* PMF Set rec */ | ||
|  | 		Counter		fddiPRIVRDF_Rx ;	/* RDF received */ | ||
|  | 		Counter		fddiPRIVRDF_Tx ;	/* RDF transmitted */ | ||
|  | 	} priv ; | ||
|  | } ; | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * OIDs for statistics | ||
|  |  */ | ||
|  | #define	SMT_OID_CF_STATE	1	/* fddiSMTCF_State */
 | ||
|  | #define	SMT_OID_PCM_STATE_A	2	/* fddiPORTPCMState port A */
 | ||
|  | #define	SMT_OID_PCM_STATE_B	17	/* fddiPORTPCMState port B */
 | ||
|  | #define	SMT_OID_RMT_STATE	3	/* fddiMACRMTState */
 | ||
|  | #define	SMT_OID_UNA		4	/* fddiMACUpstreamNbr */
 | ||
|  | #define	SMT_OID_DNA		5	/* fddiMACOldDownstreamNbr */
 | ||
|  | #define	SMT_OID_ERROR_CT	6	/* fddiMACError_Ct */
 | ||
|  | #define	SMT_OID_LOST_CT		7	/* fddiMACLost_Ct */
 | ||
|  | #define	SMT_OID_LEM_CT		8	/* fddiPORTLem_Ct */
 | ||
|  | #define	SMT_OID_LEM_CT_A	11	/* fddiPORTLem_Ct port A */
 | ||
|  | #define	SMT_OID_LEM_CT_B	12	/* fddiPORTLem_Ct port B */
 | ||
|  | #define	SMT_OID_LCT_FAIL_CT	9	/* fddiPORTLCTFail_Ct */
 | ||
|  | #define	SMT_OID_LCT_FAIL_CT_A	13	/* fddiPORTLCTFail_Ct port A */
 | ||
|  | #define	SMT_OID_LCT_FAIL_CT_B	14	/* fddiPORTLCTFail_Ct port B */
 | ||
|  | #define	SMT_OID_LEM_REJECT_CT	10	/* fddiPORTLem_Reject_Ct */
 | ||
|  | #define	SMT_OID_LEM_REJECT_CT_A	15	/* fddiPORTLem_Reject_Ct port A */
 | ||
|  | #define	SMT_OID_LEM_REJECT_CT_B	16	/* fddiPORTLem_Reject_Ct port B */
 | ||
|  | 
 | ||
|  | /*
 | ||
|  |  * SK MIB | ||
|  |  */ | ||
|  | #define SMT_OID_ECF_REQ_RX	20	/* ECF requests received */
 | ||
|  | #define SMT_OID_ECF_REPLY_RX	21	/* ECF replies received */
 | ||
|  | #define SMT_OID_ECF_REQ_TX	22	/* ECF requests transmitted */
 | ||
|  | #define SMT_OID_ECF_REPLY_TX	23	/* ECF replies transmitted */
 | ||
|  | #define SMT_OID_PMF_GET_RX	24	/* PMF get requests received */
 | ||
|  | #define SMT_OID_PMF_SET_RX	25	/* PMF set requests received */
 | ||
|  | #define SMT_OID_RDF_RX		26	/* RDF received */
 | ||
|  | #define SMT_OID_RDF_TX		27	/* RDF transmitted */
 |