📄 performance.c
字号:
/* 清除标记;
判断是否要移动位置;
判断是否要将FEC移出待处理队列;
*/
(LspCBVar->waitflag)&=0xdb;
if((LspCBVar->waitflag)&0xe0)
return MPLS_TRUE;
else
{
LspCB_locat_adjust(LspCBVar,pFecEntry,0x2,&FecDelFlag);
return MPLS_TRUE;
}
}
}
/* 判断是否要调整LSPCB的位置 */
if(!true)
{
MPLS_LSPCB_DELETE(pFecEntry,LspCBVar)
if(LspCBVar != MPLS_NULL)
{
(LspCBVar)->prev = NULL;
(LspCBVar)->next = (pFecEntry)->lsp_cb_list.first;
if((LspCBVar)->next != NULL)
(LspCBVar)->next->prev = (LspCBVar);
(pFecEntry)->lsp_cb_list.first = (LspCBVar);
if((pFecEntry)->lsp_cb_list.last == NULL)
(pFecEntry)->lsp_cb_list.last = (LspCBVar);
}
if(!((pFecEntry->lsp_cb_list).link))
(pFecEntry->lsp_cb_list).link =(pFecEntry->lsp_cb_list).first;
}
true = 0;
if(!(Mpls_bufWait_Lablelink.link))
true = 1;
/* 判断是否要将FEC加入到待处理队列中 */
if((pFecEntry->FecLbNext)||(Mpls_bufWait_Lablelink.last == pFecEntry))
return MPLS_TRUE;
else {
MPLS_WAITE_FECLBL_INSERT(pFecEntry,Mpls_bufWait_Lablelink)
}
if(true)
Func_FecLable_wait1();
return MPLS_TRUE;
}
#endif
short wait_crlspfeclbl_append(mplsLdpLspCB *LspCBVar,mplsLdpCrLsp *pFecEntry,uchar xcflag){
}
short wait_downfeclbl_append(mplsLdpDownCB *DownCBVar,mplsLdpFecEntry *pFecEntry,uchar xcflag){
uchar tempflag;
uchar true=0;
if(((DownCBVar->waitflag)&0xe0) != MPLS_NULL)
true = 1;
tempflag = (DownCBVar->waitflag) & 0x20 ;
if(!tempflag){
(DownCBVar->waitflag)&=0xfb;
switch(xcflag){
case LDP_FWD_CREATE:
(DownCBVar->waitflag)|=0x20;
break;
case LDP_FWD_CLOSE:
(DownCBVar->waitflag)|=0x24;
break;
default:return 0;
}
}
/*判断是否有冲突的情况 */
else{
/* 已有CREAT,现新来CLOSE请求 */
if((!((DownCBVar->waitflag)&0x4))&&(xcflag==LDP_FWD_CLOSE)){
/* 清除标记;
判断是否要移动位置;
判断是否要将FEC移出待处理队列;
*/
(DownCBVar->waitflag)&=0xdb;
if((DownCBVar->waitflag)&0xe0)
return MPLS_TRUE;
else
{
DownCB_locat_adjust(DownCBVar,pFecEntry,0x2);
return MPLS_TRUE;
}
}
}
/* 判断是否要调整mplsLdpDownCB的位置 */
if(!true){
MPLS_DOWNCB_DELETE(pFecEntry,DownCBVar)
if(DownCBVar != MPLS_NULL)
{
(DownCBVar)->prev = NULL;
(DownCBVar)->next = (pFecEntry)->down_cb_list.first;
if((DownCBVar)->next != NULL)
(DownCBVar)->next->prev = (DownCBVar);
(pFecEntry)->down_cb_list.first = (DownCBVar);
if((pFecEntry)->down_cb_list.last == NULL)
(pFecEntry)->down_cb_list.last = (DownCBVar);
}
if(!((pFecEntry->down_cb_list).link))
(pFecEntry->down_cb_list).link =(pFecEntry->down_cb_list).first;
}
/* 判断是否要将FEC加入到待处理队列中 */
if((pFecEntry->FecLbNext)||(Mpls_bufWait_Lablelink.last == pFecEntry))
return MPLS_TRUE;
else {
MPLS_WAITE_FECLBL_INSERT(pFecEntry,Mpls_bufWait_Lablelink)
ppp5++;
}
return MPLS_TRUE;
}
short Func_Lblmsg_wait1(){
mplsLdpFecEntry * TempFec;
mplsLdpLspCB * TempLspCB;
mplsLdpDownCB * TempDownCB;
mplsLdpUpCB * TempUpCB;
unsigned long tempid;
uchar FecDelFlag=0;
if(mpls_lblmsg_req.req_num<Msg_buf_num){
TempFec = Mpls_bufWait_Lblmsglink.link;
while(TempFec){ /* find the first node in the Mpls_bufWait_Lblmsglink list */
if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
return 0;
if(!TempFec)
return MPLS_TRUE;
TempLspCB = (TempFec->lsp_cb_list).link;
/* process all the LspCB waited to be processed for LblMsg procedure */
if(TempLspCB){
while(TempLspCB){ /* the first three bit of waitflag are not all zero*/
#ifdef MPLS_PERFORMANCE_TEMPDEBUG
printf("Func_Lblmsg_wait1 running!");
#endif
if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
return 0;
if(TempLspCB->waitflag&0x40){ /* need to do FecLable process */
lblmsg_wait_Lspproce(TempLspCB,TempFec);
TempLspCB->waitflag=(TempLspCB->waitflag)&0xbf;
if(!(TempLspCB->waitflag&0x40)){
LspCB_locat_adjust(TempLspCB,TempFec,0x3,&FecDelFlag);
if(FecDelFlag){
TempFec = Mpls_bufWait_Lblmsglink.link;
break;
}
/* adjust the LspCB node if its waitflag's first three bits are all zero*/
TempLspCB = (TempFec->lsp_cb_list).link;
}
else
{
TempLspCB = TempLspCB->prev;
}
}
else TempLspCB = TempLspCB->prev;
if(mpls_lblmsg_req.req_num == Msg_buf_num)
return 1;
}
if(FecDelFlag){
FecDelFlag = 0;
continue;
}
}
/* process all the DownCB waited to be processed for LblMsg procedure */
TempDownCB = (TempFec->down_cb_list).link;
if(TempDownCB){
while(TempDownCB){ /* the first three bit of waitflag are not all zero*/
if(TempDownCB->waitflag&0x40){ /* need to do FecLable process */
if(lblmsg_wait_Downproce(TempDownCB,TempFec)){
TempDownCB->waitflag=(TempDownCB->waitflag)&0xbf;
if(!(TempDownCB->waitflag&0xe0)){
DownCB_locat_adjust(TempDownCB,TempFec,0x3,&FecDelFlag);
if(FecDelFlag){
TempFec = Mpls_bufWait_Lblmsglink.link;
break;
}
/* adjust the DownCB node if its waitflag's first three bits are all zero*/
TempDownCB = TempDownCB->prev;
}
else TempDownCB = TempDownCB->prev;
}
else TempDownCB = (TempFec->down_cb_list).link;
}
else TempDownCB = TempDownCB->prev;
if(mpls_lblmsg_req.req_num == Msg_buf_num)
return 1;
}
if(FecDelFlag){
FecDelFlag = 0;
continue;
}
}
/* process all the UpCB waited to be processed for LblMsg procedure */
TempUpCB = (TempFec->up_cb_list).link;
if(TempUpCB){
while(TempUpCB){ /* the first three bit of waitflag are not all zero*/
if(TempUpCB->waitflag&0x40){ /* need to do FecLable process */
if(lblmsg_wait_Upproce(TempUpCB,TempFec)){
TempUpCB->waitflag=(TempUpCB->waitflag)&0xbf;
if(!(TempUpCB->waitflag&0xe0)){
UpCB_locat_adjust(TempUpCB,TempFec,0x3,&FecDelFlag);
if(FecDelFlag){
TempFec = Mpls_bufWait_Lblmsglink.link;
break;
}
/* adjust the DownCB node if its waitflag's first three bits are all zero*/
TempUpCB = (TempFec->up_cb_list).link;
}
else TempUpCB = TempUpCB->prev;
}
else TempUpCB = TempUpCB->prev;
}
else TempUpCB = TempUpCB->prev;
if(mpls_lblmsg_req.req_num == Msg_buf_num)
return 1;
}
if(FecDelFlag){
FecDelFlag = 0;
continue;
}
}
TempFec = TempFec->LblMsgNext;
}
}
else return 0;
}
short Func_Lblmsg_wait(){
mplsLdpFecEntry * TempFec;
mplsLdpLspCB * TempLspCB;
mplsLdpDownCB * TempDownCB;
mplsLdpUpCB * TempUpCB;
unsigned long tempid;
uchar FecDelFlag=0;
MPLS_SET_TIMER(LBLMSG_WAIT_TIME,(void *)Func_Lblmsg_wait,0,ldptime_q,tempid);
if(mpls_lblmsg_req.req_num<Msg_buf_num)
{
TempFec = Mpls_bufWait_Lblmsglink.link;
while(TempFec)
{ /* find the first node in the Mpls_bufWait_Lblmsglink list */
if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
return 0 ;
if(!TempFec)
return MPLS_TRUE;
TempLspCB = (TempFec->lsp_cb_list).link;
if(TempLspCB)
{
while(TempLspCB)
{ /* the first three bit of waitflag are not all zero*/
#ifdef MPLS_PERFORMANCE_TEMPDEBUG
printf("Func_Lblmsg_wait running!");
#endif
if(mpls_lblmsg_req.req_num>=(Msg_buf_num-1))
return 0;
if(TempLspCB->waitflag&0x40)
{ /* need to do FecLable process */
lblmsg_wait_Lspproce(TempLspCB,TempFec);
TempLspCB->waitflag=(TempLspCB->waitflag)&0xbf;
if(!(TempLspCB->waitflag&0x40)){
LspCB_locat_adjust(TempLspCB,TempFec,0x3,&FecDelFlag);
if(FecDelFlag){
TempFec = Mpls_bufWait_Lblmsglink.link;
break;
}
/* adjust the LspCB node if its waitflag's first three bits are all zero*/
TempLspCB = (TempFec->lsp_cb_list).link;
}
else
{
TempLspCB = TempLspCB->prev;
}
}
else TempLspCB = TempLspCB->prev;
}
if(FecDelFlag){
FecDelFlag = 0;
continue;
}
}
/* process all the DownCB waited to be processed for LblMsg procedure */
TempDownCB = (TempFec->down_cb_list).link;
if(TempDownCB){
while(TempDownCB){ /* the first three bit of waitflag are not all zero*/
if(mpls_lblmsg_req.req_num>=Msg_buf_num)
return 0;
if(TempDownCB->waitflag&0x40){ /* need to do FecLable process */
if(lblmsg_wait_Downproce(TempDownCB,TempFec)){
TempDownCB->waitflag=(TempDownCB->waitflag)&0xbf;
if(!(TempDownCB->waitflag&0xe0)){
DownCB_locat_adjust(TempDownCB,TempFec,0x3,&FecDelFlag);
if(FecDelFlag){
TempFec = Mpls_bufWait_Lblmsglink.link;
break;
}
/* adjust the DownCB node if its waitflag's first three bits are all zero*/
TempDownCB = (TempFec->down_cb_list).link;
}
else TempDownCB = TempDownCB->prev;
}
else TempDownCB = (TempFec->down_cb_list).link;
}
else TempDownCB = TempDownCB->prev;
if(mpls_lblmsg_req.req_num == Msg_buf_num)
return 1;
}
if(FecDelFlag){
FecDelFlag = 0;
continue;
}
}
/* process all the UpCB waited to be processed for LblMsg procedure */
TempUpCB = (TempFec->up_cb_list).link;
if(TempUpCB){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -