📄 cmdfun.c
字号:
MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
MPLS_MEMSET(&IfConfData,0,sizeof(MIB_LDPINTERFACE_ACK));
numFnd = 0;
SELF(&sendPid); /* change module No. from each module to current module */
sendPid.pno = sPid->pno;
num = arrayLen[NOENTITY];
Len = sizeof(mplsLdpInterface_t);
for(numi=0; numi < num ; numi++)
{
/* 从ENTITY表中取数据
change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17 */
IfConfData.interface[numFnd].ifIndex = mplsLdpEntityEntry[numi].index;
IfConfData.interface[numFnd].entityLdpId = mplsLdpEntityEntry[numi].ldpId;
IfConfData.interface[numFnd].adminStatus = mplsLdpEntityEntry[numi].adminStatus
&mplsLdpParam.mplsEnable&mplsLdpParam.mplsRouteridEnable;
IfConfData.interface[numFnd].operStatus = mplsLdpEntityEntry[numi].operStatus;
num1 = MplsNiDataTable.NiCfgNum;
for(numj=0; numj<num1; numj++)
{
/* 从NI表中取数据 */
if(MplsNiDataTable.ni[numj].ni_ifindex==mplsLdpEntityEntry[numi].index &&
MplsNiDataTable.ni[numj].ni_loopback == 0&&
((MplsNiDataTable.ni[numj].ni_lcardtype ==mplsLdpEntityEntry[numi].ifName.lsrType)||
(mplsLdpEntityEntry[numi].ifName.lsrType==MPLS_CARDTYPE_ETH)||
(mplsLdpEntityEntry[numi].ifName.lsrType==MPLS_CARDTYPE_ETHIF)))
{
IfConfData.interface[numFnd].ifIpAddress = MplsNiDataTable.ni[numj].ni_ip;
/*
IfConfData.interface[numFnd].ifIpMask = MplsNiDataTable.ni[numj].ni_mask;
*/
break;
}
}
num1 = arrayLen[NOATMLABEL];
for(numj=0; numj<num1; numj++)
{
/* 从ATM LABEL表中取数据 */
if(mplsLdpEntityConfAtmLabelRangeEntry[numj].ifIndex==mplsLdpEntityEntry[numi].index &&
mplsLdpEntityConfAtmLabelRangeEntry[numj].ifName.module==mplsLdpEntityEntry[numi].ifName.module)
{
/* please look up atmGeneral_u in the mpls.h in order to know the corresponding relation */
IfConfData.interface[numFnd].conflblRngList.minvpi =
mplsLdpEntityConfAtmLabelRangeEntry[numj].minVpi;
IfConfData.interface[numFnd].conflblRngList.minvci =
mplsLdpEntityConfAtmLabelRangeEntry[numj].minVci;
IfConfData.interface[numFnd].conflblRngList.maxvpi =
mplsLdpEntityConfAtmLabelRangeEntry[numj].maxVpi;
IfConfData.interface[numFnd].conflblRngList.maxvci =
mplsLdpEntityConfAtmLabelRangeEntry[numj].maxVci;
break;
}
}
num1 = arrayLen[NOGENlABEL];
for(numj=0; numj<num1; numj++)
{
/* 从ATM LABEL表中取数据 */
if(mplsInterfaceConfEntry[numj].ifIndex==mplsLdpEntityEntry[numi].index &&
mplsInterfaceConfEntry[numj].ifName.module==mplsLdpEntityEntry[numi].ifName.module)
{
IfConfData.interface[numFnd].genlblRngListmin = mplsInterfaceConfEntry[numj].labelMinIn;
IfConfData.interface[numFnd].genlblRngListmax = mplsInterfaceConfEntry[numj].labelMaxIn;
break;
}
}
numFnd++;
}
/*
GET_PID("MPLSMANAGER",&ManagerPid);
*/
if (numFnd>=1) /* 有相应的配置模块 */
{
IfConfData.num = numFnd;
lspData.data.ifSetData = IfConfData;
lspData.msgtype = MPLS_MIB_LDP_INTERFACE;
ASEND(eventType,&lspData,numFnd*Len+40,sendPid);
}
else
{
IfConfData.num = 0;
lspData.data.ifSetData = IfConfData;
lspData.msgtype = MPLS_MIB_LDP_INTERFACE;
ASEND(eventType,&lspData,Len+40,sendPid);
}
/*
t =EXTRA_SET_TIMER(MPLS_INTERFACE_TABLE_TIMER, MPLS_TIMER1, timerNo(sendPid.module,OAM_TIMER_MPLS_INTERFACE_TABLE));
*/
/* mplsOamSetTimer(sendPid.module,OAM_TIMER_MPLS_DEF_TRAFFIC_TO_LDP_TABLE,MPLS_INTERFACE_TABLE_TIMER); */
}
/*********************************************************************************
* 函 数 名: mplsDataEntityAck()
* 功 能: 发送ENTITY数据
* 输 入: mplsAttrConfig, sPid, opera
* 输 出: 无
* 全局变量: mplsInterfaceConfEntry 、MplsPortDataTable1
* 修改记录:
- 修改日期 版本 修 改 人 修改原因及内容
=========================================================
- 2001-8-14 1.0 孙保平 创建
change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17
*********************************************************************************/
void mplsDataEntityAck(unsigned short eventType,PID sPid,uchar opera)
{
PID sendPid;
PID ManagerPid;
unsigned short num;
unsigned short num1;
unsigned short numFnd;
unsigned short Len;
MIB_LDPENTITY_ACK entityData;
/* mplsOAMLdpMessage_t MessData; */
MPLS_MEMSET(&lspData,0,sizeof(mplsOAMLdpMessage_t));
MPLS_MEMSET(&entityData,0,sizeof(MIB_LDPENTITY_ACK));
SELF(&sendPid);
sendPid.pno = sPid.pno; /* change module No. from each module to current module */
Len = sizeof(mplsLdpEntity_t);
numFnd = 0;
if (arrayLen[NOENTITY] > 0)
{
for(num = 0; num<arrayLen[NOENTITY]; num++)
{
/* change struct from decentralization to centralization so not to judge module No. sbp 2002-6-17 */
/* 从ENTITY表中赋值*/
mplsLdpEntityEntry[num].protocolVersion = mplsLdpParam.protocolversion;
mplsLdpEntityEntry[num].keepAliveHoldTimer = mplsLdpParam.s_hold;
mplsLdpEntityEntry[num].helloHoldTimer = mplsLdpParam.h_hold;
mplsLdpEntityEntry[num].loopDetectionCapable = mplsLdpParam.loopdetection;
mplsLdpEntityEntry[num].hopcountlimit = mplsLdpParam.maxhopcount;
mplsLdpEntityEntry[num].pathvectorlimit = mplsLdpParam.pvlimit;
entityData.entity[numFnd].ldpId = mplsLdpEntityEntry[num].ldpId; /* 1 */
entityData.entity[numFnd].index = mplsLdpEntityEntry[num].index; /* 2 */
entityData.entity[numFnd].ifArray = mplsLdpEntityEntry[num].ifIndex; /* 3 */
#if 0 /* 从 EntityAtmParamsTable 表中赋值*/
entityData.entity[numFnd].ifNumber = mplsLdpEntityEntry[num].ldpId; /* 4 */
#endif
entityData.entity[numFnd].protocolVersion = mplsLdpEntityEntry[num].protocolVersion; /* 5 */
entityData.entity[numFnd].adminStatus = mplsLdpEntityEntry[num].adminStatus
&mplsLdpParam.mplsEnable&mplsLdpParam.mplsRouteridEnable; /* 6 */
entityData.entity[numFnd].operStatus = mplsLdpEntityEntry[num].operStatus; /* 7 */
entityData.entity[numFnd].wellKnownDiscoveryPort = mplsLdpEntityEntry[num].wellKnownTcpDiscoveryPort; /* 8 */
entityData.entity[numFnd].maxPduLength = mplsLdpEntityEntry[num].maxPduLength; /* 9 */
entityData.entity[numFnd].keepAliveHoldTimer = mplsLdpEntityEntry[num].keepAliveHoldTimer; /* 10 */
entityData.entity[numFnd].helloHoldTimer = mplsLdpEntityEntry[num].helloHoldTimer; /* 11 */
entityData.entity[numFnd].failedInitSessionThreshold = mplsLdpEntityEntry[num].failedInitSessionThreshold; /* 12 */
entityData.entity[numFnd].labelDistributionMethod = mplsLdpEntityEntry[num].labelDistributionMethod; /* 13 */
entityData.entity[numFnd].labelretentionmode = mplsLdpEntityEntry[num].labelretentionmode; /* 13 */
entityData.entity[numFnd].targetedPeer = mplsLdpEntityEntry[num].targetedpeer; /* 14 */
entityData.entity[numFnd].pvLimitMismatchtrapenabled = mplsLdpEntityEntry[num].pvLimitMismatchtrapenabled; /* 14 */
entityData.entity[numFnd].pathvectorlimit = mplsLdpEntityEntry[num].pathvectorlimit; /* 14 */
entityData.entity[numFnd].hopcountlimit = mplsLdpEntityEntry[num].hopcountlimit; /* 14 */
entityData.entity[numFnd].targetedPeerAddrType = mplsLdpEntityEntry[num].targetedPeerAddrType; /* 15 */
entityData.entity[numFnd].targetedPeerAddr = mplsLdpEntityEntry[num].targetedPeerAddr; /* 16 */
entityData.entity[numFnd].optionalParameters = mplsLdpEntityEntry[num].optionalParameters; /* 17 */
entityData.entity[numFnd].loopDetectionCapable = mplsLdpEntityEntry[num].loopDetectionCapable; /* 17 */
entityData.entity[numFnd].transportAddr = mplsLdpEntityEntry[num].transAddr; /* 17 */
/*entityData.entity[numFnd].transFlag = mplsLdpEntityEntry[num].transFlag; */ /* 17 */
/* gxq ldpstr.h 中的结构没有transflag */
/* 从 EntityAtmParamsTable 表中赋值*/
for(num1=0; num1<arrayLen[NOATMPARA]; num1++)
{
if(mplsLdpEntityAtmParamsEntry[num1].ifName.module == mplsLdpEntityEntry[num].ifName.module &&
mplsLdpEntityAtmParamsEntry[num1].ifindexorzero == entityData.entity[numFnd].index)
{
entityData.entity[numFnd].atmMergeCap = mplsLdpEntityAtmParamsEntry[num1].mergecap;
entityData.entity[numFnd].atmVcDirectionality = mplsLdpEntityAtmParamsEntry[num1].vcdirectionality;
entityData.entity[numFnd].atmLsrConnectivity = mplsLdpEntityAtmParamsEntry[num1].lsrconnectivity;
entityData.entity[numFnd].defaultControlVpi = mplsLdpEntityAtmParamsEntry[num1].defaultcontrolvpi;
entityData.entity[numFnd].defaultControlVci = mplsLdpEntityAtmParamsEntry[num1].defaultcontrolvci;
entityData.entity[numFnd].unlabTrafVpi = mplsLdpEntityAtmParamsEntry[num1].unlabtrafvpi;
entityData.entity[numFnd].unlabTrafVci = mplsLdpEntityAtmParamsEntry[num1].unlabtrafvci;
entityData.entity[numFnd].ifNumber = mplsLdpEntityAtmParamsEntry[num1].labelrangecomponents;
break;
}
}
numFnd++;
}
}
/*
GET_PID("MPLSMANAGER",&ManagerPid);
*/
if(numFnd > 0)
{
entityData.num = numFnd;
lspData.data.entityData = entityData;
lspData.msgtype = MPLS_MIB_LDP_ENTITY;
ASEND(eventType,&lspData,numFnd*sizeof(mplsLdpEntity_t)+40,sendPid);
/*
SendOsMsg(eventType,ManagerPid,sendPid,(uchar *)&MessData,numFnd*sizeof(mplsLdpEntity_t)+40);
*/
}
else
{
entityData.num = 0;
lspData.data.entityData = entityData;
lspData.msgtype = MPLS_MIB_LDP_ENTITY;
ASEND(eventType,&lspData,sizeof(mplsLdpEntity_t)+40,sendPid);
/*
SendOsMsg(eventType,ManagerPid,sendPid,(uchar *)&MessData,numFnd*sizeof(mplsLdpEntity_t)+40);
*/
}
/* mplsOamSetTimer(sendPid.module,OAM_TIMER_MPLS_ENTITY_TABLE,MPLS_ENTITY_TABLE_TIMER);*/
}
/************************************************************************
* FUNCTION NAME : mplsAttrConfig()
* DESCRIPTION: : send lsr attribute to the responding module.
* INPUT : module
* OUTPUT : none
* AUTHOR/DATE : Sun Baoping/ 2001-12-22
* GLOBAL : none
* NOTE : ..
/************************************************************************/
void mplsAttrConfig(uchar module)
{
PID sendPid;
uchar operaType;
operaType = 1;
GET_PID("LDPPROCESS",&sendPid);
sendPid.module = module;
mplsDataLsrAttrAck(MPLS_LDP_OAM_MESSAGE,sendPid,operaType);
}
/************************************************************************
* FUNCTION NAME : mplsEntityConfig()
* DESCRIPTION: : send interface data to the responding module.
* INPUT : module
* OUTPUT : none
* AUTHOR/DATE : Sun Baoping/ 2001-12-22
* GLOBAL : none
* NOTE : ..
/************************************************************************/
void mplsInterfaceConfig(uchar module)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -