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

📄 pgacl.c

📁 vt6528芯片交换机API函数和文档运行程序
💻 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:    pgacl.c
 *
 * Purpose: Acl UI definitions
 *
 * Author: Tim Feng
 *
 * Date:    Nov 30, 2005
 *
 * Functions:
 *
 * Revision History:
 *
 */


#include "engine.h"
#include "eng_act.h"
#include "allpages.h"
#include "pigencfg.h"
#include "cfgstr.h"
#include "gen_act.h"
#include "pimsg.h"
#include "key.h"

#include "str.h"
#include "tty.h"
#include "eng_io.h"
#include "piportmp.h"
#include "pimsg.h"

#include "swsys.h"

#include "pivlnmod.h" 

#include "pgacl.h"
#include "piaclgrp.h"



/*---------------------  Static Definitions -------------------------*/

#define ACL_OP_EDIT_EXIST   FALSE

#define ACL_POS_COL_OFFSET 12

/*---------------------  Static Classes  ----------------------------*/

/*---------------------  Static Variables  --------------------------*/
static UINT8 sg_byACLTotalPageNum;
static UINT8 sg_byACLLineNumPerPage;

char sg_strListGrpMsg[]     = "Press ENTER to list/delete a group";

char sg_strEditL4ProtoMsg[] = "Set value of L4 protocol between 0~255";
char sg_strEditTCPDstPortMsg[] = "Set value of TCP port between 0~65535";
char sg_strEditUDPDstPortMsg[] = "Set value of UDP port between 0~65535";
char sg_strEditEtherTypeMsg[]  = "Set value of Ether Type between 0~0xFFFF";
 
/*---------------------  Static Functions  --------------------------*/
static UINT8 s_bySaveACLGrpMsg(UINT8 byErrCode);
static UINT8 s_byGetACLIpv4PageIDIndex(UINT8 byL4ProtolIndex);

/*---------------------  Static Macros  -----------------------------*/

#if defined(__LITTLE_ENDIAN)
#define SBIT_OF_LSB_IN_BOOL  0           //start bit of the least significant byte in BOOL 
#define EBIT_OF_LSB_IN_BOOL  7          //end bit of the least significant byte in BOOL
#else
#define SBIT_OF_LSB_IN_BOOL  ((sizeof(BOOL)-1)*8) //start bit of the least significant byte in BOOL 
#define EBIT_OF_LSB_IN_BOOL  (sizeof(BOOL)*8-1)  //end bit of the least significant byte in BOOL
#endif

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
//ACL main menu
//fix label
SFixLabel aSFixLabelACLCfg[] = {
    {{2,29}, g_strACLCfg, 0},
    {{3,29}, "=", 19},
    {{24,2}, g_strHelpMsg, 0}
};

SFixLabel aSFixLabelACLList_Ipv4[] = {
    {{2,26}, g_strACLIpv4Cfg, 0},
    {{3,26}, "=", 22},
    {{24,2}, g_strHelpMsg, 0},
    {{5,2},"ACL Group List :",0},
    {{6,2}, "-", 76},
    {{7,2},"Group ID:",0},
    {{7,14},"Group Name:",0}
};

SFixLabel aSFixLabelACLList_NIpv4[] = {
    {{2,25}, g_strACLNonIpv4Cfg, 0},
    {{3,25}, "=", 26},
    {{24,2}, g_strHelpMsg, 0},
    {{5,2},"ACL Group List :",0},
    {{6,2}, "-", 76},
    {{7,2},"Group ID:",0},
    {{7,14},"Group Name:",0}
};


// Items
SItemNum SIDecACLEntryID = {
    (PUINT8)&g_UCfgBuf.SPageCfg_ACL.abyValidGrpIdList[0],
    1, 4, 1
};

SItem aSItemACLList[] = {
#if ACL_OP_EDIT_EXIST
    {{7,2}, &SIDecACLEntryID, g_strEditGrpMsg, ITEM_DECNUM, REPEAT_TYPE_RECT_SINGLE, LINK_TYPE_EDITPAGE, ROW_NUM_IN_3_FIELD, ACL_POS_COL_OFFSET}
#else
     {{7,2}, &SIDecACLEntryID,sg_strListGrpMsg, ITEM_DECNUM, REPEAT_TYPE_RECT_SINGLE, LINK_TYPE_EDITPAGE, ROW_NUM_IN_3_FIELD, ACL_POS_COL_OFFSET}   
#endif
};

//Action
SActItem aSActionACLList[] = {
    {{22, 12}, g_strActionQuit, PAACT_bQuit},
 #if ACL_OP_EDIT_EXIST      
    {{22, 22}, g_strActionEdit, PAACL_bEditACLGrp},
    {{22, 32}, g_strActionAdd, PAACL_bAddACLGrp},
    {{22, 42}, g_strActionDel,  PAACL_bDelACLGrp},
    {{22, 55}, "<NextPage>",    PAACL_bNextPage}
 #else
    {{22, 22}, "<List>", PAACL_bEditACLGrp},
    {{22, 32}, g_strActionAdd, PAACL_bAddACLGrp},
    {{22, 42}, g_strActionDel,  PAACL_bDelACLGrp},
    {{22, 55}, "<NextPage>",    PAACL_bNextPage}
 #endif
};

SItemPageSel aSIPageSelACLMain[] = {
    {g_strACLIpv4Cfg,    PAGE_ACL_LIST_IPV4},
    {g_strACLNonIpv4Cfg, PAGE_ACL_LIST_NON_IPV4},
    {g_strRtnToMain,  PAGE_MAIN_MENU}
};

SItem aSItemACLMain[] = {
    {{5,26},   aSIPageSelACLMain,   "", ITEM_MENU_PAGESEL, REPEAT_TYPE_NONE, LINK_TYPE_EDITPAGE},
    {{5+(1*ITEM_INTERVAL),26}, aSIPageSelACLMain+1, "", ITEM_MENU_PAGESEL, REPEAT_TYPE_NONE, LINK_TYPE_EDITPAGE},
    {{5+(2*ITEM_INTERVAL),26}, aSIPageSelACLMain+2, "", ITEM_MENU_PAGESEL, REPEAT_TYPE_NONE, LINK_TYPE_EDITPAGE},
};

SPage g_SPageACLMainMenu =
{
    aSFixLabelACLCfg, 3,
    NULL, 0,
    aSItemACLMain, 3,
    NULL, 0,
    PAACL_bLoadVlanMode
};
	
SPage g_SPageACLList_Ipv4 = {
    aSFixLabelACLList_Ipv4, 5,
    NULL, 0,
    aSItemACLList, 1,
    aSActionACLList,5,
    PAACL_bLoadACLIpv4Grp  //load list function
};

SPage g_SPageACLList_NIpv4 = {
    aSFixLabelACLList_NIpv4, 5,
    NULL, 0,
    aSItemACLList, 1,
    aSActionACLList,5,
    PAACL_bLoadACLNonIpv4Grp  //load list function
};



///////////////////////////////////////////////////////////////////////
//ACL add page & edit page

//FIX LABEL
// Assign fix label
char strACLTitleAdd[] = "Add";
char strACLTitleEdit[] = "Edit";
char strACLTitleList[] =  "List";
char strACLTitle_Ipv4[] = " a IPv4 Group";
char strACLTitle_NIpv4[] = " a Non-IPv4 Group";
char strACLGroupID[] = "Group ID : [   ]";
char strACLIDRange[] = "(1~   )";
char strACLVlnType[] = "Vlan :";
char strACLVid[]="VID  : [    ](1~4094)";
char strACLSIpType[]="Src IP         :";
char strACLSIpAddr[]="Src IP Address :";
char strACLSIpMsk[]=  "Src IP NetMask :";
char strACLDIpType[]="Dst IP         :";
char strACLDIpAddr[]="Dst IP Address :";
char strACLDIpMsk[]= "Dst IP NetMask :";
char strACLIpfrg[] ="IP Fragment :";
char strACLL4Proto[]="L4 Protocol :";
char strACLTCPProto[]="TCP         :";//TCP
char strACLUDPProto[]="UDP         :";//UDP
char strACLPort[]="Port  :";
char strACLProtocol[]="Proto :";
char strACLAction[]="Action   :";
char strACLRule[] ="Rules :";

/*Only for Non-Ipv4 based page*/
char strACLEthType[]="Ether Type :";
char strACLHexVal[] ="0x";
char strACLOtherEthType[]="Other Type :";
char strACLNIpv4VlnType[]="Vlan       :";
char strACLNIpv4Vid[]="Vid        : [    ](1~4094)";


SFixLabel aSFixLabelACLGrpEdit_Ipv4[] = {
#if ACL_OP_EDIT_EXIST   
    {{2,29}, strACLTitleEdit, 0},
#else
    {{2,29}, strACLTitleList, 0},
#endif
    {{2,33}, strACLTitle_Ipv4, 0},
    {{3,29}, "=", 17},
    {{5,2}, strACLGroupID, 0},
    {{7,2}, strACLAction, 0},
    {{9,2}, strACLRule, 0},
    {{10,2}, "-", 32},
    {{11,2},strACLVlnType,0},
    {{12,2},strACLVid,0},
    {{14,2}, strACLIpfrg, 0},	
    {{16,2}, strACLSIpType, 0},
    {{17,2}, strACLSIpAddr, 0},    
    {{18,2}, strACLSIpMsk,0},
    {{9,40}, strACLRule, 0},
    {{10,40}, "-", 33},
    {{11,40}, strACLDIpType, 0},
    {{12,40}, strACLDIpAddr, 0},    
    {{13,40}, strACLDIpMsk,0},	
    {{16,40},strACLL4Proto,0},
    {{16,63}, strACLProtocol, 0},  
    {{24,2}, g_strHelpMsg, 0},
    //Only for Ipv4 based add page. for saving memory 
    {{2,29}, strACLTitleAdd, 0},
    {{2,32}, strACLTitle_Ipv4, 0},    
    {{5,18},strACLIDRange,0},
    {{3,29}, "=", 16}    
};

//Ipv4 based ACL group with TCP protocol fix label
SFixLabel aSFixLabelACLGrpEdit_Ipv4TCP[] = {
#if ACL_OP_EDIT_EXIST   
    {{2,29}, strACLTitleEdit, 0},
#else
    {{2,29}, strACLTitleList, 0},
#endif
    {{2,33}, strACLTitle_Ipv4, 0},
    {{3,29}, "=", 17},
    {{5,2}, strACLGroupID, 0},
    {{7,2}, strACLAction, 0},
    {{9,2}, strACLRule, 0},
    {{10,2}, "-", 32},
    {{11,2},strACLVlnType,0},
    {{12,2},strACLVid,0},
    {{14,2}, strACLIpfrg, 0},	
    {{16,2}, strACLSIpType, 0},
    {{17,2}, strACLSIpAddr, 0},    
    {{18,2}, strACLSIpMsk,0},
    {{9,40}, strACLRule, 0},
    {{10,40}, "-", 33},
    {{11,40}, strACLDIpType, 0},
    {{12,40}, strACLDIpAddr, 0},    
    {{13,40}, strACLDIpMsk,0},	
    {{16,40},strACLL4Proto,0},
    {{16,63}, strACLProtocol, 0},  
    {{17,40},strACLTCPProto,0},
    {{17,63},strACLPort,0},
    {{24,2}, g_strHelpMsg, 0},
    //Only for Ipv4 based add page. To save memory 
    {{2,29}, strACLTitleAdd, 0},
    {{2,32}, strACLTitle_Ipv4, 0},    
    {{5,18},strACLIDRange,0},
    {{3,29}, "=", 16}    
};

//Ipv4 based ACL group with UDP protocol fix label
SFixLabel aSFixLabelACLGrpEdit_Ipv4UDP[] = {
#if ACL_OP_EDIT_EXIST   
    {{2,29}, strACLTitleEdit, 0},
#else
    {{2,29}, strACLTitleList, 0},
#endif
    {{2,33}, strACLTitle_Ipv4, 0},
    {{3,29}, "=", 17},
    {{5,2}, strACLGroupID, 0},
    {{7,2}, strACLAction, 0},
    {{9,2}, strACLRule, 0},
    {{10,2}, "-", 32},
    {{11,2},strACLVlnType,0},
    {{12,2},strACLVid,0},
    {{14,2}, strACLIpfrg, 0},	
    {{16,2}, strACLSIpType, 0},
    {{17,2}, strACLSIpAddr, 0},    
    {{18,2}, strACLSIpMsk,0},
    {{9,40}, strACLRule, 0},
    {{10,40}, "-", 33},
    {{11,40}, strACLDIpType, 0},
    {{12,40}, strACLDIpAddr, 0},    
    {{13,40}, strACLDIpMsk,0},	
    {{16,40},strACLL4Proto,0},
    {{16,63}, strACLProtocol, 0},  
    {{17,40}, strACLUDPProto, 0},  
    {{17,63},strACLPort,0},
    {{24,2}, g_strHelpMsg, 0},
    //Only for Ipv4 based add page. To save memory 
    {{2,29}, strACLTitleAdd, 0},
    {{2,32}, strACLTitle_Ipv4, 0},    
    {{5,18},strACLIDRange,0},
    {{3,29}, "=", 16}    
};

SFixLabel aSFixLabelACLGrpEdit_NIpv4[] = {
#if  ACL_OP_EDIT_EXIST   
    {{2,28}, strACLTitleEdit, 0},
#else
    {{2,28}, strACLTitleList, 0},
#endif
    {{2,32}, strACLTitle_NIpv4, 0},
    {{3,28}, "=", 21},
    {{7,27}, strACLGroupID, 0},
    {{9,27}, strACLAction, 0},
    {{11,27}, strACLRule, 0},
    {{12,27}, "-", 27},    
    {{13,27},strACLNIpv4VlnType,0},
    {{14,27},strACLNIpv4Vid,0},    
    {{16,27}, strACLEthType, 0},
    {{17,27}, strACLOtherEthType, 0},
    {{17,40},strACLHexVal},
    {{24,2}, g_strHelpMsg, 0},
    //Only for Non-Ipv4 based add page. To save memory
    {{2,28}, strACLTitleAdd, 0},
    {{2,31}, strACLTitle_NIpv4, 0},
    {{3,28}, "=", 20}, 
    {{7,43},strACLIDRange,0}
};

// Assign items 
SItemNum aSIDecNumACLGrp[] = {
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.u8GrpId,
        1, 3, 0
    },
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.u8MaxValidGrpId,
        1, 3, 0
    },
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.u16Vid,
        2, 4, 0
    },
    //Only for Ipv4 based group
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.u32TcpPort,
        4, 5, 0
    },
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.u32UdpPort,
        4, 5, 0
    },    		
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.u16L4Proto,
        2, 3, 0
    },	
};

//Only for Non-Ipv4 based group 
SItemNum aSIHexNumACLGrp[] = {   
    {
        (PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLNonIpv4GrpPgBuf.wEthType,
        2, 4, 0
    }
};

SItemListbox aSItemListboxACLGrp[]={
     {
	 	(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.bFilter,
        SBIT_OF_LSB_IN_BOOL, EBIT_OF_LSB_IN_BOOL, 0,
        g_aszACLEntryAction, 2   
     }	, 
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.bVidEn,
        SBIT_OF_LSB_IN_BOOL, EBIT_OF_LSB_IN_BOOL, 0,
   		g_aszACLIfAnySel, 2
    },
    //Only for ipv4 based group
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.bSIpEn,
        SBIT_OF_LSB_IN_BOOL, EBIT_OF_LSB_IN_BOOL, 0,
   		g_aszACLIfAnySel, 2
    },
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.bDIpEn,
        SBIT_OF_LSB_IN_BOOL, EBIT_OF_LSB_IN_BOOL, 0,
   		g_aszACLIfAnySel, 2
    },
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.bFragCheck,
        SBIT_OF_LSB_IN_BOOL, EBIT_OF_LSB_IN_BOOL, 0,
   		g_aszACLEntryFrag, 2
    },
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.byTcpPortIndex,
        0, 7, 0,
   		g_aszTCPPort, 3
    },
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.byUdpPortIndex,
        0, 7, 0,
   		g_aszUDPPort, 2
    },
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLIpv4GrpPgBuf.byL4ProtoIndex,
        0, 7, 0,
   		g_aszL4Proto, 5
    },
    //Only for non-ipv4 based group
    {
		(PUINT8)&g_UCfgBuf.SPageCfg_ACL.SCurGrp.UACLPageCfgBuf.SACLNonIpv4GrpPgBuf.byEthProtoIndex,
        0, 7, 0,
   		g_aszEthType, 3
    }    

⌨️ 快捷键说明

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