⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c010agent.c

📁 路由器协议平台mpls协议的设计与实现源代码。
💻 C
📖 第 1 页 / 共 2 页
字号:
#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 + -