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

📄 cgi_set.c

📁 VIA VT6524 8口网管交换机源码
💻 C
📖 第 1 页 / 共 2 页
字号:

    // return message
    if (byTmp != OP_OK)
    {
        sprintf((PSTR)&WEBg_SCgiInfo, "%s%s", g_aszErrMsg[byTmp], g_aszPortNameTable[wFailGrpId]);
        return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
    }
    else
        return WEB_wGenResultMsgPkt(g_aszErrMsg[byTmp]);
}

UINT16 CGI_wSetMiscCfg (void)
{
    if (WEBg_SCgiInfo.byParaNum != 6)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    WEBg_pSMiscPage->f2BSFMode          = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[0]);
    WEBg_pSMiscPage->f1CollisionForever = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[1]);
    WEBg_pSMiscPage->f2AutoAging        = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[2]);
    WEBg_pSMiscPage->f1MacHashMode      = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[3]);
    WEBg_pSMiscPage->f2AutoLogout       = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[4]);
    WEBg_pSMiscPage->f2WebAutoLogout    = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[5]);

    PIMISC_vSavePage(WEBg_pSMiscPage);

    // return successive message
    return WEB_wGenResultMsgPkt(g_aszErrMsg[OP_OK]);
}

UINT16 CGI_wSetAdmCfg (void)
{
    BYTE byOldVal = WEBg_bLoginEbl;

    if (WEBg_SCgiInfo.byParaNum != 4)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    PIADM_vInitPage(WEBg_pSAdmPage);
    WEBg_pSAdmPage->byLoginEbl = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[0]);

    if (WEBg_bLoginEbl && WEBg_pSAdmPage->byLoginEbl) // Do only last time and this time are both enabled.
    {
        // if any parameter is empty string, return error message
        if (WEBg_SCgiInfo.apszParaVal[1][0] == 0 ||
            WEBg_SCgiInfo.apszParaVal[2][0] == 0 ||
            WEBg_SCgiInfo.apszParaVal[3][0] == 0)
        {
            return WEB_wGenResultMsgPkt("CGI ERROR: Empty input");
        }

        STRvStrcpy(WEBg_pSAdmPage->strNewUsername, WEBg_SCgiInfo.apszParaVal[1]);
        STRvStrcpy(WEBg_pSAdmPage->strNewPasswd,   WEBg_SCgiInfo.apszParaVal[2]);
        STRvStrcpy(WEBg_pSAdmPage->strAgainPasswd, WEBg_SCgiInfo.apszParaVal[3]);

        return WEB_wGenResultMsgPkt(g_aszErrMsg[PIbyADM_SavePage(WEBg_pSAdmPage)]);
    }
    else
        PIbyADM_SavePage(WEBg_pSAdmPage);

    if (byOldVal==0 && WEBg_pSAdmPage->byLoginEbl==1)
        return WEB_wPopupMsgBoxThenRedirect("Please click OK to re-login", "/");
    else if (byOldVal==1 && WEBg_pSAdmPage->byLoginEbl==0)
    {
        *WEBg_szLoginID = 0;
        return WEB_wPopupMsgBoxThenRedirect("Please click OK to logout current connection", "/");
    }
    else
        WEB_wGenResultMsgPkt("Nothing changed");
}

UINT16 CGI_wSetIpCfg (void)
{
    if (WEBg_SCgiInfo.byParaNum != 3)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    // ip config
    STRvStrcpy(WEBg_pSIpConfPage->szIp,      WEBg_SCgiInfo.apszParaVal[0]);
    STRvStrcpy(WEBg_pSIpConfPage->szSubnet,  WEBg_SCgiInfo.apszParaVal[1]);
    STRvStrcpy(WEBg_pSIpConfPage->szGateway, WEBg_SCgiInfo.apszParaVal[2]);

    return WEB_wGenResultMsgPkt(g_aszErrMsg[PIIPCONF_bySavePage(WEBg_pSIpConfPage)]);
}

UINT16 CGI_wSetSnfCfg (void)
{
    BYTE si, byTmp;
    if (WEBg_SCgiInfo.byParaNum < 3)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    STRvMemset(WEBg_pSSniffPage, 0, sizeof(SSniffPageCfg));

    WEBg_pSSniffPage->f2Mode = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[0]);
    WEBg_pSSniffPage->f6DestPort = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[1]);
    for (si = 2; si < WEBg_SCgiInfo.byParaNum; si++)
    {
        byTmp = STRdwStr2Dec(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)
{
    BYTE si;
    if (WEBg_SCgiInfo.byParaNum != g_byLogIdNum+9)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    WEBg_pSQosPage->byQosMode = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[0]);

    for (si = 0; si < g_byLogIdNum; si++)
#ifndef __ASIC_VT6524
        WEBg_pSQosPage->abyStaticPrior[si] = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[si+1]);
#else
        WEBg_pSQosPage->aSPortCfg[si].f2StaticPrior = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[si+1]);
#endif

    WEBg_pSQosPage->by8021pMap = 0;
    for (si=0; si<8; si++)
        WEBg_pSQosPage->by8021pMap |= (((BYTE)STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[si+g_byLogIdNum+1])) << (7-si));

    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)
{
    BYTE    byTmp, byRes;
    UINT16  wFailVid;

    if (WEBg_SCgiInfo.byParaNum == 0)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    PIVLAN_vInitPage(WEBg_pSVlanPage);

    // change vlan mode
    byTmp = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[0]);
    if (WEBg_pSVlanPage->byVlanMode != byTmp)
    {
        WEBg_pSVlanPage->byVlanMode = byTmp;
        PIVLAN_vSetVlanMode(WEBg_pSVlanPage);
        // reload vlan.htm
        return WEB_wGenRedirectPkt("ShowVlanCfg");
    }

    // delete selected vlan groups
    if (WEBg_SCgiInfo.byParaNum == 1)
        return WEB_wGenResultMsgPkt("Nothing to delete");

    for (byTmp=1; byTmp<WEBg_SCgiInfo.byParaNum; byTmp++)
    {
        WEBg_pSCurGrp->wVid = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[byTmp]);
        byRes = PIVLAN_byDelGrp(WEBg_pSVlanPage, &wFailVid);
        if (byRes != OP_OK)
        {
            if (wFailVid != UINT16_MAX)
            {
                sprintf((PSTR)&WEBg_SCgiInfo, "%s%s", g_aszErrMsg[byRes], 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)
{
    BYTE    si, byTmp;
    UINT16  wFailVid=0;

    if (WEBg_SCgiInfo.byParaNum != g_byLogIdNum+2)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    PIVLAN_vInitPage(WEBg_pSVlanPage);

    // get vid
    STRvMemset(WEBg_pSCurGrp, 0, sizeof(SVlanGrp));
    WEBg_pSCurGrp->wVid = STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[1]);

    // get member
    for (si=0; si<g_byLogIdNum; si++)
    {
        byTmp = STRdwStr2Dec(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)
    {
        sprintf((PSTR)&WEBg_SCgiInfo, "%s%d", g_aszErrMsg[byTmp], wFailVid);
        return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
    }
    else if (byTmp == VLAN_OP_FOUND_ISO_PORT)
    {
        sprintf((PSTR)&WEBg_SCgiInfo, "%s%s", g_aszErrMsg[byTmp], g_aszPortNameTable[wFailVid]);
        return WEB_wGenResultMsgPkt((PSTR)&WEBg_SCgiInfo);
    }
    else
        return WEB_wGenResultMsgPkt(g_aszErrMsg[byTmp]);
}

UINT16 CGI_wSetV1qifCfg (void)
{
    BYTE si, byTmp;

    if (WEBg_SCgiInfo.byParaNum != g_byLogIdNum*2)
        return WEB_wGenResultMsgPkt(s_szParaNumErr);

    STRvMemset(WEBg_pSVlanIngrFlt, 0, sizeof(SVlanIngrFilterPageCfg));

    // prepare cfgbuf
    for (si=0; si<g_byLogIdNum; si++)
    {
        byTmp = (STRdwStr2Dec(WEBg_SCgiInfo.apszParaVal[si*2]) | (STRdwStr2Dec(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]);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -