📄 cgi_set.c
字号:
/*
* Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
* All rights reserved.
*
* This software is copyrighted by and is the sole property of
* VIA Networking Technologies, Inc. This software may only be used
* in accordance with the corresponding license agreement. Any unauthorized
* use, duplication, transmission, distribution, or disclosure of this
* software is expressly forbidden.
*
* This software is provided by VIA Networking Technologies, Inc. "as is"
* and any express or implied warranties, including, but not limited to, the
* implied warranties of merchantability and fitness for a particular purpose
* are disclaimed. In no event shall VIA Networking Technologies, Inc.
* be liable for any direct, indirect, incidental, special, exemplary, or
* consequential damages.
*
*
* File: cgi_set.c
*
* Purpose:
*
* Author: Jenda Jao
*
* Date: Jan 08, 2002
*
* Functions:
*
* Revision History:
*
*/
#include <stdio.h> // for sprintf
#include "str.h"
#if !defined(__BITOP_H__)
#include "bitop.h"
#endif
#include "cfgstr.h"
#include "ttyio.h"
#include "weblib.h"
#include "pigencfg.h"
#include "pimsg.h"
#include "piportmp.h"
#include "pisystem.h"
/*--------------------- Static Definitions ------------------------*/
/*--------------------- Static Types ------------------------------*/
/*--------------------- Static Macros -----------------------------*/
/*--------------------- Static Classes ----------------------------*/
/*--------------------- Static Variables --------------------------*/
static DIRECT_MEMTYPE_CODE char s_szParaNumErr[] = "CGI ERROR: wrong parameters";
/*--------------------- Static Functions --------------------------*/
/*--------------------- Export Variables --------------------------*/
UINT16 CGI_wLogin (void)
{
if (WEBg_SCgiInfo.byParaNum != 2)
goto LoginFail;
PIADM_vInitPage(g_pSAdmPageCfg);
if ((0 == STRcStrcmp(WEBg_SCgiInfo.apszParaVal[0], g_pSAdmPageCfg->strEepromUsername)) &&
(0 == STRcStrcmp(WEBg_SCgiInfo.apszParaVal[1], g_pSAdmPageCfg->strEepromPasswd)))
{
WEB_vGenUniqueLoginID();
return WEB_wGenRedirectPkt(WEBg_szLoginID);
}
LoginFail:
return WEB_wGenResultMsgPkt("Login Fail");
}
UINT16 CGI_wLogout (void)
{
*WEBg_szLoginID = 0;
return WEB_wGenResultMsgPkt("Logout OK");
}
#ifdef __ASIC_VT6526
UINT16 CGI_wSetRateCfg (void)
{
BYTE byPortId;
if (WEBg_SCgiInfo.byParaNum != g_byMegaLogIdNum*2)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
for (byPortId=0; byPortId<g_byMegaLogIdNum; byPortId++)
{
WEBg_pSRatePage->abyRate[byPortId*2] = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*2]);
WEBg_pSRatePage->abyRate[byPortId*2+1] = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*2+1]);
}
PIRATE_vSavePage(WEBg_pSRatePage);
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
#endif
#ifndef __ASIC_VT6524
UINT16 CGI_wSetPortCfg (void)
{
UINT8 byPortId, byGigaPortId;
if (WEBg_SCgiInfo.byParaNum != g_byLogIdNum * 4)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
// Get config from EEPROM
PIPORT_vInitPage(WEBg_pSPortPage);
for (byPortId = 0; byPortId < g_byLogIdNum; byPortId++)
{
// if mega or giga port
byGigaPortId = (PIPORTMP_dwLogPtrToPhyMsk(byPortId) & 0x3000000) >> 24;
if (byGigaPortId) // giga ports
{
byGigaPortId--; // one-based to zero-based
// Recognize port enable
WEBg_pSPortPage->aSGigaPortCfg[byGigaPortId].f2Enable = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4]);
// Recognize port auto
WEBg_pSPortPage->aSGigaPortCfg[byGigaPortId].f2Auto = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+1]);
// Recognize port spd/dpx
WEBg_pSPortPage->aSGigaPortCfg[byGigaPortId].f4SpdDpx = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+2]);
// Recognize port FC
WEBg_pSPortPage->aSGigaPortCfg[byGigaPortId].f2FC = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+3]);
}
else // mega ports
{
// Recognize port enable
WEBg_pSPortPage->aSMegaPortCfg[byPortId].f1Enable = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4]);
// Recognize port auto
WEBg_pSPortPage->aSMegaPortCfg[byPortId].f1Auto = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+1]);
// Recognize port spd/dpx
WEBg_pSPortPage->aSMegaPortCfg[byPortId].f3SpdDpx = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+2]);
// Recognize port FC
WEBg_pSPortPage->aSMegaPortCfg[byPortId].f1FC = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+3]);
}
}
// Set config into HW & EEPROM
if (OP_OK != PIPORT_bySavePage(WEBg_pSPortPage, &byPortId))
{
sprintf((PSTR)&WEBg_SCgiInfo, "%s%s", g_aszErrMsg[PORT_OP_WRONG_AUTO_ABY], g_aszPortNameTable[byPortId]);
return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
}
else
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
#else // for VT6524
UINT16 CGI_wSetPortCfg (void)
{
UINT8 byPortId;
if (WEBg_SCgiInfo.byParaNum != g_byLogIdNum * 4)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
// Get config from EEPROM
PIPORT_vInitPage(WEBg_pSPortPage);
for (byPortId = 0; byPortId < g_byLogIdNum; byPortId++)
{
// Recognize port enable
WEBg_pSPortPage->aSPortCfg[byPortId].f1Enable = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4]);
// Recognize port auto
WEBg_pSPortPage->aSPortCfg[byPortId].f1Auto = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+1]);
// Recognize port spd/dpx
WEBg_pSPortPage->aSPortCfg[byPortId].f3SpdDpx = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+2]);
// Recognize port FC
WEBg_pSPortPage->aSPortCfg[byPortId].f1FC = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId*4+3]);
}
// Set config into HW & EEPROM
if (OP_OK != PIPORT_bySavePage(WEBg_pSPortPage, &byPortId))
{
sprintf((PSTR)&WEBg_SCgiInfo, "%s%s", g_aszErrMsg[PORT_OP_WRONG_AUTO_ABY], g_aszPortNameTable[byPortId]);
return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
}
else
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
#endif
UINT16 CGI_wWriteDefault (void)
{
PISYS_vSwitchWriteDefault(&WEBg_UCfgBuf);
//PISYS_vSetHwFromEep(&WEBg_UCfgBuf);
PISYS_vSwitchReBoot();
// return successive message
return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}
UINT16 CGI_wReboot (void)
{
PISYS_vSwitchReBoot();
return 0;
}
UINT16 CGI_wSetTrkCfg (void)
{
UINT8 byPortId, byTmp;
BYTE byGrpValid=0;
UINT16 wFailGrpId;
if (WEBg_SCgiInfo.byParaNum != SWITCH_TRUNKABLE_PORT_NUM)
return WEB_wGenResultMsgPkt(s_szParaNumErr);
STRvMemset(WEBg_pSTrkPage, 0, sizeof(STrkPageCfg));
for (byPortId=0; byPortId<SWITCH_TRUNKABLE_PORT_NUM; byPortId++)
{
byTmp = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byPortId]) & 0x07; // 3bit valid
if (byTmp)
{
BITvModifyBits(WEBg_pSTrkPage->abyCfgBuf, byPortId*TRUNK_GRP_ID_BIT_NUM, (byPortId+1)*TRUNK_GRP_ID_BIT_NUM-1, &byTmp);
byGrpValid |= 0x01 << (byTmp-1);
}
}
// write group valid to cfg buf
//STRvMemset(WEBg_pSTrkPage, byGrpValid, 1);
*(PBYTE)WEBg_pSTrkPage = byGrpValid;
byTmp = PITRK_bySavePage(WEBg_pSTrkPage, &wFailGrpId);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -