📄 oamtimer.c
字号:
/********************************************************************
* Product Name: MPLS
* Module Name: OAM
* File Name: oamtimer.c
* Function : timer of EPPC used in OAM
* History:
* Date Version modifier Activities
* ==================================================================
* 01-8-9 2.1.2 Sun Baoping create
********************************************************************/
#include <attache/h/timer.h>
#include "mplsOamS.h"
extern unsigned short TimeSave[8]; /* 分别和8个记时器相对应 */
extern unsigned char operArray[8]; /*0: LSRID的操作对应,1:所有LDP实体的操作对应, 2:单个LDP实体的操作对应*/
struct timer mplsOamEppcTimer[OAM_TIMER_MPLS_NI_TABLE+1];
mplsOamTimer_t mplsOamTimer;
extern void mplsTafficDefSendAllEthi(unsigned char moduleNo); /* mplsfun.c */
extern char mplsTrafficDefaultACK(unsigned char module);
/************************************************************************
* FUNCTION NAME : mplsOamHandler()
* DESCRIPTION: : set timer
* INPUT : t: timer
* c: timer No
* OUTPUT : NONE
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL : mplsOamEppcTimer
* NOTE : ..
/************************************************************************/
void mplsOamHandler(struct timer *t, void* c)
{
unsigned short timeEvent;
unsigned char module;
timeEvent = *((short *)c);
module = (unsigned char)(timeEvent/TIMER_MACRO_MAX_NUMBER);
timeEvent = timeEvent%TIMER_MACRO_MAX_NUMBER;
if(timeEvent==0)
{
timeEvent = OAM_TIMER_MPLS_CONFIG_TABLE;
module--;
}
switch(timeEvent)
{
case OAM_TIMER_MPLS_LSRID_TABLE:
{
mplsAttrConfig(module);
break;
}
case OAM_TIMER_MPLS_INTERFACE_TABLE:
{
mplsInterfaceConfig(module);
break;
}
case OAM_TIMER_MPLS_ENTITY_TABLE:
{
mplsEntityConfig(module);
break;
}
case OAM_TIMER_MPLS_DEF_TRAFFIC_TO_LDP_TABLE:
{
mplsTafficDefSendAllEthi(module);
break;
}
default:
break;
}
}
/************************************************************************
* FUNCTION NAME : mplsOamSetTimer()
* DESCRIPTION: : set timer
* INPUT : module,timerMsg, time
* OUTPUT : NONE
* AUTHOR/DATE : Sun Baoping/ 01.12.12
* GLOBAL : mplsOamEppcTimer
* NOTE : ..
/************************************************************************/
void mplsOamSetTimer(unsigned char module, unsigned char timerMsg,unsigned short time)
{
mplsOamTimer.backoff[timerNo(module,timerMsg)]=
mplsOamTimer.backoff[timerNo(module,timerMsg)]*2+1;
if(mplsOamTimer.backoff[timerNo(module,timerMsg)]>40)
mplsOamTimer.backoff[timerNo(module,timerMsg)]=40; /* 回退时间最长为2分钟*/
memset(&mplsOamEppcTimer[timerNo(module,timerMsg)], 0x0, sizeof(struct timer));
etc_tm_init(&mplsOamEppcTimer[timerNo(module,timerMsg)]);
mplsOamEppcTimer[timerNo(module,timerMsg)].handler = (void *)mplsOamHandler;
mplsOamEppcTimer[timerNo(module,timerMsg)].cookie = (void *)(&mplsOamTimer.timerId[timerNo(module,timerMsg)]);
etc_tm_set(&mplsOamEppcTimer[timerNo(module,timerMsg)],(bits32_t)(time*mplsOamTimer.backoff[timerNo(module,timerMsg)]));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -