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

📄 cgi_set.c

📁 VIA VT6524 8口网管交换机源码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 * 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 + -