📄 cgi_set.c
字号:
}
return WEB_wGenResultMsgPkt(g_aszErrMsg[FWUPDT_OP_FAILURE]);
}
UINT16 CGI_wSetSnfCfg (void)
{
UINT8 byTmp;
UINT16 si;
if (WEBg_SCgiInfo.u16ParaNum < 3)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
STR_pvMemset(WEBg_pSSniffPage, 0, sizeof(SSniffPageCfg));
WEBg_pSSniffPage->f2Mode = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[0]);
WEBg_pSSniffPage->f6DestPort = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[1]);
for (si = 2; si < WEBg_SCgiInfo.u16ParaNum; si++)
{
byTmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si]);
WEBg_pSSniffPage->abySrcPortMsk[byTmp/8] |= (0x01<<(byTmp%8)); // Beware of endian
}
byTmp = PISNF_bySavePage(WEBg_pSSniffPage);
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[byTmp]);
}
UINT16 CGI_wSetQosCfg (void)
{
UINT8 si;
if (WEBg_SCgiInfo.u16ParaNum != g_byLogIdNum+9)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
WEBg_pSQosPage->byQosMode = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[0]);
for (si = 0; si < g_byLogIdNum; si++)
WEBg_pSQosPage->abyStaticPrior[si] = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si+1]);
WEBg_pSQosPage->w8021pMap = 0;
for (si=0; si<8; si++)
WEBg_pSQosPage->w8021pMap |= (((UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si+g_byLogIdNum+1])) << ((7-si) * BIT_NUM_QUEUE_ID)); //*BIT_NUM_QUEUE_ID means 2bits indicate queue0~3
PIQOS_vSavePage(WEBg_pSQosPage);
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
// to set vlan mode and delete vlan groups
UINT16 CGI_wSetVlanCfg (void)
{
UINT8 byTmp, byRes;
UINT16 wFailVid, si;
if (WEBg_SCgiInfo.u16ParaNum == 0)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
PIVLAN_vInitPage(WEBg_pSVlanPage);
// change vlan mode
byTmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[0]);
if (WEBg_pSVlanPage->byVlanMode != byTmp)
{
WEBg_pSVlanPage->byVlanMode = byTmp;
PIVLAN_vSetVlanMode(WEBg_pSVlanPage);
// reboot, after 1 sec
TMR_iSetTimer(100, (PFN_CALLBACK_TIMER)WEB_vReboot, NULL);
return WEB_wGenResultMsgPkt("Reboot...");
}
// delete selected vlan groups
if (WEBg_SCgiInfo.u16ParaNum == 1)
return WEB_wGenResultMsgPkt("Nothing to delete");
for (si=1; si<WEBg_SCgiInfo.u16ParaNum; si++)
{
WEBg_pSCurGrp->u16Vid = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si]);
byRes = PIVLAN_byDelGrp(WEBg_pSVlanPage, &wFailVid);
if (byRes != OP_OK)
{
if (wFailVid != UINT16_MAX) {
STR_iStrcpy((PSTR)&WEBg_SCgiInfo, g_aszErrMsg[byRes]);
STR_iStrcat((PSTR)&WEBg_SCgiInfo, g_aszPortNameTable[wFailVid]);
return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
}
else
return WEB_wGenResultMsgPkt(g_aszErrMsg[byRes]);
}
}
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
UINT16 CGI_wSetVlanGrp (void)
{
UINT8 si, byTmp;
UINT16 wFailVid=0;
if (WEBg_SCgiInfo.u16ParaNum != g_byLogIdNum+2)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
PIVLAN_vInitPage(WEBg_pSVlanPage);
// get vid
STR_pvMemset(WEBg_pSCurGrp, 0, sizeof(SVlanGrp));
WEBg_pSCurGrp->u16Vid = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[1]);
// get member
for (si=0; si<g_byLogIdNum; si++)
{
byTmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si+2]) & 0x03;
WEBg_pSCurGrp->abyMbrMsk[si/4] |= (byTmp << (si%4)*2); // Beware of endian
}
// save config
if (WEBg_SCgiInfo.apszParaVal[0][0] == 'A')
byTmp = PIVLAN_byInsGrp(WEBg_pSVlanPage, &wFailVid);
else
byTmp = PIVLAN_byEditGrp(WEBg_pSVlanPage, &wFailVid);
// return message
if (byTmp == VLAN_OP_UNTAG_BELONG_OTHER_GRP) {
STR_iStrcpy((PSTR)&WEBg_SCgiInfo, g_aszErrMsg[byTmp]);
STR_iU32ToStrDec((PSTR)&WEBg_SCgiInfo + STR_iStrlen((PSTR)&WEBg_SCgiInfo), wFailVid);
return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
}
else if (byTmp == VLAN_OP_FOUND_ISO_PORT) {
STR_iStrcpy((PSTR)&WEBg_SCgiInfo, g_aszErrMsg[byTmp]);
STR_iStrcat((PSTR)&WEBg_SCgiInfo, g_aszPortNameTable[wFailVid]);
return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
}
else
return WEB_wGenResultMsgPkt(g_aszErrMsg[byTmp]);
}
UINT16 CGI_wSetV1qifCfg (void)
{
UINT8 si, byTmp;
if (WEBg_SCgiInfo.u16ParaNum != g_byLogIdNum*2)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
STR_pvMemset(WEBg_pSVlanIngrFlt, 0, sizeof(SVlanIngrFilterPageCfg));
// prepare cfgbuf
for (si=0; si<g_byLogIdNum; si++)
{
byTmp = (STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si*2]) | (STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si*2+1])<<1)) & 0x03;
WEBg_pSVlanIngrFlt->abyCfg[si/4] |= (byTmp << (si%4)*2);
}
PIVLNFLT_vSavePage(WEBg_pSVlanIngrFlt);
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
UINT16 CGI_wSetSTPCfg (void)
{
UINT8 si, u8Tmp;
if (WEBg_SCgiInfo.u16ParaNum < 2)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
STR_pvMemset(WEBg_pSSTPPage, 0, sizeof(SSTPPageCfg));
WEBg_pSSTPPage->byMode = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[0]);
for (si = 0; si < g_byLogIdNum; si++)
{
u8Tmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si+1]);
SWSRAM_vModifyBitsByByte( WEBg_pSSTPPage->abySTPPortState, (UINT8)(si*3), (UINT8)((si+1)*3-1), &u8Tmp);
}
u8Tmp = PISTP_bySavePage(WEBg_pSSTPPage);
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[u8Tmp]);
}
// to set igmp mode and delete igmp groups
UINT16 CGI_wSetIGMPCfg (void)
{
UINT8 u8Tmp, byRes;
UINT16 si, u16Tmp;
char astrDelGrpIpList[SWITCH_IGMP_GRP_NUM*(IP_STRING_LEN+1)];
UINT16 awDelGrpIdList[SWITCH_IGMP_GRP_NUM];
if (WEBg_SCgiInfo.u16ParaNum == 0)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
STR_pvMemset(astrDelGrpIpList, 0, SWITCH_IGMP_GRP_NUM*(IP_STRING_LEN+1)*sizeof(char));
STR_pvMemset(awDelGrpIdList, 0, SWITCH_IGMP_GRP_NUM*sizeof(UINT16));
PIIGMP_vInitPage(WEBg_pSIGMPPage);
// change igmp mode
u8Tmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[0]);
if (WEBg_pSIGMPPage->byMode != u8Tmp)
{
WEBg_pSIGMPPage->byMode = u8Tmp;
PIIGMP_vSetIGMPMode(WEBg_pSIGMPPage);
// reload igmp.htm
return WEB_wGenRedirectPkt("ShowIGMPCfg");
}
else {
if (!u8Tmp) //disable
// reload igmp.htm
return WEB_wGenRedirectPkt("ShowIGMPCfg");
}
// delete selected igmp groups
if (WEBg_SCgiInfo.u16ParaNum == 1)
return WEB_wGenResultMsgPkt("Nothing to delete");
//firstly save orig del grp value in buffer
for (si=1; si<WEBg_SCgiInfo.u16ParaNum; si++) {
u16Tmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si]);
STR_iStrcpy(astrDelGrpIpList+(si-1)*(IP_STRING_LEN+1), WEBg_pSIGMPPage->astrGrpIpList+u16Tmp*(IP_STRING_LEN+1));
awDelGrpIdList[si-1] = WEBg_pSIGMPPage->awValidGrpIdList[u16Tmp];
}
for (si=1; si<WEBg_SCgiInfo.u16ParaNum; si++) {
STR_pszStrcpy(WEBg_pSIGMPPage->SCurGrp.szIp, astrDelGrpIpList+(si-1)*(IP_STRING_LEN+1));
WEBg_pSIGMPPage->SCurGrp.u16Vid = awDelGrpIdList[si-1];
byRes = PIIGMP_byDelGrp(WEBg_pSIGMPPage);
if (byRes != OP_OK)
return WEB_wGenResultMsgPkt(g_aszErrMsg[byRes]);
}
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
UINT16 CGI_wSetIGMPGrp (void)
{
UINT8 si, u8Tmp;
if (WEBg_SCgiInfo.u16ParaNum != g_byLogIdNum+6)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
PIIGMP_vInitPage(WEBg_pSIGMPPage);
STR_pvMemset(&WEBg_pSIGMPPage->SCurGrp, 0, sizeof(SIpmEntryPage));
STR_pszStrcpy(WEBg_pSIGMPPage->SCurGrp.szIp, WEBg_SCgiInfo.apszParaVal[1]);
WEBg_pSIGMPPage->SCurGrp.u16Vid = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[2]);
//for console ui, bool value must be 0x00000000 or 0x01000000 for Big-Endian
(*((PUINT8)&WEBg_pSIGMPPage->SCurGrp.bStatic)) = (UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[3]);
(*((PUINT8)&WEBg_pSIGMPPage->SCurGrp.bCpu)) = (UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[4]);
(*((PUINT8)&WEBg_pSIGMPPage->SCurGrp.bDp)) = (UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[5]);
// get member
for (si=0; si<g_byLogIdNum; si++)
{
u8Tmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si+6]) & 0x01;
WEBg_pSIGMPPage->SCurGrp.abyMbrMsk[si/8] |= (u8Tmp << (si%8)); // Beware of endian
}
// save config
if (WEBg_SCgiInfo.apszParaVal[0][0] == 'A')
u8Tmp = PIIGMP_byInsGrp(WEBg_pSIGMPPage);
else
u8Tmp = PIIGMP_byEditGrp(WEBg_pSIGMPPage);
// return message
return WEB_wGenResultMsgPkt(g_aszErrMsg[u8Tmp]);
}
UINT16 CGI_wSetMibCntCfg (void)
{
PIMIB_vClearAllCntr();
//after clearing all counters, then refresh the page
return CGI_wShowMibCnt();
}
// delete smac groups
UINT16 CGI_wSetSMacCfg (void)
{
UINT8 byRes;
UINT16 si, u16Tmp;
char astrDelGrpMacList[SWITCH_SMAC_GRP_NUM*(MAC_STRING_LEN+1)];
UINT16 awDelGrpFidList[SWITCH_SMAC_GRP_NUM];
STR_pvMemset(astrDelGrpMacList, 0, SWITCH_SMAC_GRP_NUM*(MAC_STRING_LEN+1)*sizeof(char));
STR_pvMemset(awDelGrpFidList, 0, SWITCH_SMAC_GRP_NUM*sizeof(UINT16));
PISMAC_vInitPage(WEBg_pSSMacPage);
// delete selected smac groups
if (WEBg_SCgiInfo.u16ParaNum == 0)
return WEB_wGenResultMsgPkt("Nothing to delete");
//firstly save orig del grp value in buffer
for (si=0; si<WEBg_SCgiInfo.u16ParaNum; si++) {
u16Tmp = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[si]);
STR_iStrcpy(astrDelGrpMacList+si*(MAC_STRING_LEN+1), WEBg_pSSMacPage->astrGrpMacList+u16Tmp*(MAC_STRING_LEN+1));
awDelGrpFidList[si] = WEBg_pSSMacPage->awValidGrpFidList[u16Tmp];
}
for (si=0; si<WEBg_SCgiInfo.u16ParaNum; si++) {
STR_iStrcpy(WEBg_pSSMacPage->SCurGrp.azMacAddr, astrDelGrpMacList+si*(MAC_STRING_LEN+1));
WEBg_pSSMacPage->SCurGrp.u16Fid = awDelGrpFidList[si];
byRes = PISMACGP_byDelGrp(WEBg_pSSMacPage);
if (byRes != OP_OK)
return WEB_wGenResultMsgPkt(g_aszErrMsg[byRes]);
}
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
UINT16 CGI_wSetSMacGrp (void)
{
UINT8 u8Tmp;
char astrBuff[28];
if (WEBg_SCgiInfo.u16ParaNum != 6)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
PISMAC_vInitPage(WEBg_pSSMacPage);
STR_pvMemset(&WEBg_pSSMacPage->SCurGrp, 0, sizeof(SSMacEntryPage));
STR_pszStrcpy(astrBuff, WEBg_SCgiInfo.apszParaVal[1]);
s_vParseMacFromParaVal(astrBuff, WEBg_pSSMacPage->SCurGrp.azMacAddr);
WEBg_pSSMacPage->SCurGrp.u16Fid = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[2]);
WEBg_pSSMacPage->SCurGrp.bySrcId = STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[3]);
//for console ui, bool value must be 0x00000000 or 0x01000000 for Big-Endian
(*((PUINT8)&WEBg_pSSMacPage->SCurGrp.bHiPriDmac)) = (UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[4]);
(*((PUINT8)&WEBg_pSSMacPage->SCurGrp.bHiPriSmac)) = (UINT8)STR_u32StrDecToU32(WEBg_SCgiInfo.apszParaVal[5]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -