📄 c010agent.c
字号:
#if 0
conf_ack.index = rlspvcReq->req_index;
ASEND(MPLS_C_QUE_CONF,&conf_ack,sizeof(XCREQ_CONF),ldpPid);
#endif
/*给c010发请求消息*/
c010req.localLspId = rlspvcReq->req.localLspId;
c010req.IngressId = rlspvcReq->req.IngressId;
c010req.LspCBNo = rlspvcReq->req.LspCBNo;
c010req.ldpmod = ldpPid.module;
c010req.index = rlspvcReq->req_index;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if( no == 0 )
{
no = add_c010agent(&c010req);
if( no == 0 )
{
printf("err add fail");
}
else
{
ASEND( MPLS_AD_RLSPVC_REQ,&(rlspvcReq->req),
sizeof(STRUC_MPLS_AD_RLSPVC_REQ),c010Pid );
printf("!!!indexno %d, module %d,mpls send release pvc msg to c010.",
no, currmodule);
}
}
else
{
printf("err request duplicate");
}
break;
case MPLS_AD_BANDWIDTH_REQ:
printf("======!!!module %d, receive MPLS_AD_BANDWIDTH_REQ msg======",currmodule);
SENDER(&ldpPid);
bandReq = (MPLS_BANDWIDTH_REQ *)In;
/* 给LDP回接收确认 */
#if 0
conf_ack.index = bandReq->req_index;
ASEND(MPLS_C_QUE_CONF,&conf_ack,sizeof(XCREQ_CONF),ldpPid);
#endif
/*给c010发请求消息*/
c010req.localLspId = bandReq->req.localLspId;
c010req.IngressId = bandReq->req.IngressId;
c010req.LspCBNo = bandReq->req.LspCBNo;
c010req.ldpmod = ldpPid.module;
c010req.index = bandReq->req_index;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if( no == 0 )
{
no = add_c010agent(&c010req);
if( no == 0 )
{
printf("err add fail");
}
else
{
ASEND( MPLS_AD_BANDWIDTH_REQ,&(bandReq->req),
sizeof(STRUC_MPLS_AD_BANDWIDTH_REQ),c010Pid );
printf("!!!indexno %d, module %d,mpls send bandwidth pvc msg to c010.",
no, currmodule);
}
}
else
{
printf("err request duplicate");
}
break;
case MPLS_AD_RLSBW_REQ:
printf("======!!!module %d, receive MPLS_AD_RLSBW_REQ msg======",currmodule);
SENDER(&ldpPid);
rlsbandreq = (MPLS_RLSBW_REQ *)In;
#if 0
/* 给LDP回接收确认 */
conf_ack.index = rlsbandreq->req_index;
ASEND(MPLS_C_QUE_CONF,&conf_ack,sizeof(XCREQ_CONF),ldpPid);
#endif
/*给c010发请求消息*/
c010req.localLspId = rlsbandreq->req.localLspId;
c010req.IngressId = rlsbandreq->req.IngressId;
c010req.LspCBNo = rlsbandreq->req.LspCBNo;
c010req.ldpmod = ldpPid.module;
c010req.index = rlsbandreq->req_index;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if( no == 0 )
{
no = add_c010agent(&c010req);
if( no == 0 )
{
printf("err add fail");
}
else
{
ASEND( MPLS_AD_RLSBW_REQ,&(rlsbandreq->req),
sizeof(STRUC_MPLS_AD_RLSBW_REQ),c010Pid );
printf("!!!indexno %d, module %d,mpls send release bandwith pvc msg to c010.",
no, currmodule);
}
}
else
{
printf("err request duplicate");
}
break;
/* c010回响应事件 */
case AD_MPLS_BANDWIDTH_ACK:
/******************************************************/
/* AD_MPLS_BANDWIDTH_ACK */
/******************************************************/
printf("!!!module %d, receive c010 send bandwith ack msg.",currmodule);
bandwithAck = (STRUC_AD_MPLS_BANDWIDTH_ACK *)In;
c010req.localLspId = bandwithAck->localLspId;
c010req.IngressId = bandwithAck->IngressId;
c010req.LspCBNo = bandwithAck->LspCBNo;
c010req.ldpmod = 0;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if(no == 0)
{
printf("err ack, no req");
}
else
{
ldpserv.module = c010msg[no].ldpmod;
/******************************************************/
/* send ack to LDP */
/* the follow is the same */
/******************************************************/
MPLS_MEMSET(&mplsAck,0,sizeof(XC_ACK));
mplsAck.ack_index = c010msg[no].index;
mplsAck.ack_type = BANDWIDTH_ACK;
MPLS_MEMCPY(&(mplsAck.union_ack.bw_ack),In,sizeof(STRUC_AD_MPLS_BANDWIDTH_ACK));
ASEND(MPLS_C_QUE_CONF,&mplsAck,sizeof(XC_ACK),ldpserv);
/*ASEND( AD_MPLS_BANDWIDTH_ACK,In,
sizeof(STRUC_AD_MPLS_BANDWIDTH_ACK),ldpserv );*/
printf("!!!indexno %d, module %d, mpls send resv bandwith ack msg to ldp.",
no, currmodule);
if( del_c010agent( no ) == 0)
{
printf("err del, no %d",no);
}
}
break;
case AD_MPLS_RLSBW_ACK:
printf("!!!module %d, receive c010 send release bandwidth ack msg.",currmodule);
relBwAck = (STRUC_AD_MPLS_RLSBW_ACK *)In;
c010req.localLspId = relBwAck->localLspId;
c010req.IngressId = relBwAck->IngressId;
c010req.LspCBNo = relBwAck->LspCBNo;
c010req.ldpmod = 0;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if(no == 0)
{
printf("err ack, no req");
}
else
{
ldpserv.module = c010msg[no].ldpmod;
MPLS_MEMSET(&mplsAck,0,sizeof(XC_ACK));
mplsAck.ack_index = c010msg[no].index;
mplsAck.ack_type = RLSBW_ACK;
MPLS_MEMCPY(&(mplsAck.union_ack.rlsbw_ack),In,sizeof(STRUC_AD_MPLS_RLSBW_ACK));
ASEND(MPLS_C_QUE_CONF,&mplsAck,sizeof(XC_ACK),ldpserv);
printf("!!!indexno %d, module %d, mpls send release bandwith ack msg to ldp.",
no, currmodule);
if( del_c010agent( no ) == 0)
{
printf("err del, no %d",no);
}
}
break;
case AD_MPLS_CREATEPVC_ACK:
createPvcAck = (STRUC_AD_MPLS_CRPVC_ACK *)In;
c010req.localLspId = createPvcAck->localLspId;
c010req.IngressId = createPvcAck->IngressId;
c010req.LspCBNo = createPvcAck->LspCBNo;
c010req.ldpmod = 0;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if(no == 0)
{
printf("err ack, no req");
}
else
{
ldpserv.module = c010msg[no].ldpmod;
MPLS_MEMSET(&mplsAck,0,sizeof(XC_ACK));
mplsAck.ack_index = c010msg[no].index;
mplsAck.ack_type = CRPVC_ACK;
MPLS_MEMCPY(&(mplsAck.union_ack.crpvc_ack),In,sizeof(STRUC_AD_MPLS_CRPVC_ACK));
ASEND(MPLS_C_QUE_CONF,&mplsAck,sizeof(XC_ACK),ldpserv);
/*ASEND( AD_MPLS_CREATEPVC_ACK,In,
sizeof(STRUC_AD_MPLS_CRPVC_ACK),ldpserv );*/
printf("!!!indexno %d, module %d, mpls send create pvc ack msg to ldp.",
no, currmodule);
if( del_c010agent( no ) == 0)
{
printf("err del, no %d",no);
}
}
break;
case AD_MPLS_RLSPVC_ACK:
printf("!!!module %d, receive c010 send release PVC ack msg.",currmodule);
relPvcAck = (STRUC_AD_MPLS_RLSPVC_ACK *)In;
c010req.localLspId = relPvcAck->localLspId;
c010req.IngressId = relPvcAck->IngressId;
c010req.LspCBNo = relPvcAck->LspCBNo;
c010req.ldpmod = 0;
print_c010req(&c010req);
no = index_c010agent(&c010req);
if(no == 0)
{
printf("err ack, no req");
}
else
{
ldpserv.module = c010msg[no].ldpmod;
MPLS_MEMSET(&mplsAck,0,sizeof(XC_ACK));
mplsAck.ack_index = c010msg[no].index;
mplsAck.ack_type = RLSPVC_ACK;
MPLS_MEMCPY(&(mplsAck.union_ack.rlspvc_ack),In,sizeof(STRUC_AD_MPLS_RLSPVC_ACK));
ASEND(MPLS_C_QUE_CONF,&mplsAck,sizeof(XC_ACK),ldpserv);
printf("!!!indexno %d, module %d, mpls send release pvc ack msg to ldp.",
no, currmodule);
if( del_c010agent( no ) == 0)
{
printf("err del, no %d",no);
}
}
break;
default:
break;
}
return;
}
/* ********************************************************************/
/* Product Name:ATM_B10 */
/* Modul Name: MPLS File Name : c010agent.c */
/* Creat Date: 2002.01.07 Author : sun baoping */
/* Function: initialize the c010 agent called by c020 */
/* Version: 1.0 */
/* History: */
/* Date Version Modifier Activies */
/* ********************************************************************/
void c020_c010Agent_init()
{
init_c010agent();
GET_PID("C010PROCESS",&c010Pid);
GET_PID("LDPPROCESS",&ldpserv);
currmodule = CUR_MODULE();
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -