|
INET Framework for OMNeT++/OMNEST
|
00001 /* 00002 * STPTimer.h 00003 * 00004 * Created on: 19.4.2011 00005 * Author: aranel 00006 */ 00007 00008 #ifndef STPTIMER_H_ 00009 #define STPTIMER_H_ 00010 00011 #define STPTIMERCOUNT 8 00012 00013 class STPTimer 00014 { 00015 public: 00016 STPTimer(); 00017 virtual ~STPTimer(); 00018 00019 typedef enum { 00020 NONE = -1, 00021 EDGEDELAYWHILE = 0, 00022 FDWHILE = 1, 00023 HELLOWHEN = 2, 00024 // MDELAYWHILE = 3, 00025 RBWHILE = 4, 00026 RCDVINFOWHILE = 5, 00027 RRWHILE = 6, 00028 TCWHILE = 7, 00029 } eSTPTimer; 00030 00031 00032 void setInitValue(eSTPTimer timer, int value); 00033 int getInitValue(eSTPTimer timer); 00034 int getValue(eSTPTimer timer); 00035 00036 00037 bool existTimedOut(); 00038 bool isTimedOut(eSTPTimer timer); 00039 00040 private: 00041 00042 /* --- TIMERS --- */ 00043 int edgeDelayWhile; // 17.17.1 considering edge port timer 00044 int fdWhile; // 17.17.2 forwarding port state transition delay 00045 int helloWhen; // 17.17.3 hello timer, at least one BPDU at helloWhen 00046 // int mdelayWhile; // 17.17.4 protocol migration timer (NOT CONSIDERED) 00047 int rbWhile; // 17.17.5 recent backup, twice as hello timer, while port is backup 00048 int rcdvInfoWhile; // 17.17.6 received info, used for aging received info by this port 00049 int rrWhile; // 17.17.7 recent root 00050 int tcWhile; // 17.17.8 topology change, TCN are sent while this timer running 00051 /* --- INITIAL VALUES --- */ 00052 int initEdgeDelayWhile; 00053 int initFdWhile; 00054 int initHelloWhen; 00055 // int initMdelayWhile; 00056 int initRbWhile; /* (!) TWICE AS HELLO TIMER, but for unify */ 00057 int initRcdvInfoWhile; 00058 int initRrWhile; 00059 int initTcWhile; 00060 00061 00062 /* --- INDEX TIMER ADDRESSING --- */ 00063 int * timerValue[STPTIMERCOUNT]; 00064 int * initValue[STPTIMERCOUNT]; 00065 00066 /* set default values for initValues */ 00067 void setDefaultInitValues(); 00068 00069 00070 protected: 00071 00072 00073 00074 00075 }; 00076 00077 #endif /* STPTIMER_H_ */