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

📄 myfirewall.h

📁 本系统由服务器软件控制平台和fpga硬件处理系统组成
💻 H
字号:
//////////////////////////////////////////////////////////////////////////////
// Filename:          E:\fpga_fw/drivers/MYFIREWALL_v1_00_a/src/myfirewall.h
// Version:           1.00.a
// Description:       MYFIREWALL Driver Header File
// Date:              Mon Mar 17 21:58:13 2008 (by Create and Import Peripheral Wizard)
//////////////////////////////////////////////////////////////////////////////

#ifndef MYFIREWALL_H
#define MYFIREWALL_H

/***************************** Include Files *******************************/

#include "xbasic_types.h"
#include "xstatus.h"
#include "xio.h"

/************************** Constant Definitions ***************************/


/**
 * User Logic Slave Space Offsets
 * -- SLAVE_REG0 : user logic slave module register 0
 * -- SLAVE_REG1 : user logic slave module register 1
 * -- SLAVE_REG2 : user logic slave module register 2
 * -- SLAVE_REG3 : user logic slave module register 3
 */
#define MYFIREWALL_USER_SLAVE_SPACE_OFFSET (0x00000000)
#define MYFIREWALL_SLAVE_REG0_OFFSET (MYFIREWALL_USER_SLAVE_SPACE_OFFSET + 0x00000000)
#define MYFIREWALL_SLAVE_REG1_OFFSET (MYFIREWALL_USER_SLAVE_SPACE_OFFSET + 0x00000002)
#define MYFIREWALL_SLAVE_REG2_OFFSET (MYFIREWALL_USER_SLAVE_SPACE_OFFSET + 0x00000004)
#define MYFIREWALL_SLAVE_REG3_OFFSET (MYFIREWALL_USER_SLAVE_SPACE_OFFSET + 0x00000006)



/**************************** Type Definitions *****************************/


/***************** Macros (Inline Functions) Definitions *******************/

/**
 *
 * Write a value to a MYFIREWALL register. A 32 bit write is performed.
 * If the component is implemented in a smaller width, only the least
 * significant data is written.
 *
 * @param   BaseAddress is the base address of the MYFIREWALL device.
 * @param   RegOffset is the register offset from the base to write to.
 * @param   Data is the data written to the register.
 *
 * @return  None.
 *
 * @note
 * C-style signature:
 * 	void MYFIREWALL_mWriteReg(Xuint32 BaseAddress, unsigned RegOffset, Xuint32 Data)
 *
 */
#define MYFIREWALL_mWriteReg(BaseAddress, RegOffset, Data) \
 	XIo_Out32((BaseAddress) + (RegOffset), (Xuint32)(Data))

/**
 *
 * Read a value from a MYFIREWALL register. A 32 bit read is performed.
 * If the component is implemented in a smaller width, only the least
 * significant data is read from the register. The most significant data
 * will be read as 0.
 *
 * @param   BaseAddress is the base address of the MYFIREWALL device.
 * @param   RegOffset is the register offset from the base to write to.
 *
 * @return  Data is the data from the register.
 *
 * @note
 * C-style signature:
 * 	Xuint32 MYFIREWALL_mReadReg(Xuint32 BaseAddress, unsigned RegOffset)
 *
 */
#define MYFIREWALL_mReadReg(BaseAddress, RegOffset) \
 	XIo_In32((BaseAddress) + (RegOffset))


/**
 *
 * Write/Read value to/from MYFIREWALL user logic slave registers.
 *
 * @param   BaseAddress is the base address of the MYFIREWALL device.
 * @param   Value is the data written to the register.
 *
 * @return  Data is the data from the user logic slave register.
 *
 * @note
 * C-style signature:
 * 	Xuint16 MYFIREWALL_mReadSlaveRegn(Xuint32 BaseAddress)
 *
 */
#define MYFIREWALL_mWriteSlaveReg0(BaseAddress, Value) \
 	XIo_Out16((BaseAddress) + (MYFIREWALL_SLAVE_REG0_OFFSET), (Xuint16)(Value))
#define MYFIREWALL_mWriteSlaveReg1(BaseAddress, Value) \
 	XIo_Out16((BaseAddress) + (MYFIREWALL_SLAVE_REG1_OFFSET), (Xuint16)(Value))
#define MYFIREWALL_mWriteSlaveReg2(BaseAddress, Value) \
 	XIo_Out16((BaseAddress) + (MYFIREWALL_SLAVE_REG2_OFFSET), (Xuint16)(Value))
#define MYFIREWALL_mWriteSlaveReg3(BaseAddress, Value) \
 	XIo_Out16((BaseAddress) + (MYFIREWALL_SLAVE_REG3_OFFSET), (Xuint16)(Value))

#define MYFIREWALL_mReadSlaveReg0(BaseAddress) \
 	XIo_In16((BaseAddress) + (MYFIREWALL_SLAVE_REG0_OFFSET))
#define MYFIREWALL_mReadSlaveReg1(BaseAddress) \
 	XIo_In16((BaseAddress) + (MYFIREWALL_SLAVE_REG1_OFFSET))
#define MYFIREWALL_mReadSlaveReg2(BaseAddress) \
 	XIo_In16((BaseAddress) + (MYFIREWALL_SLAVE_REG2_OFFSET))
#define MYFIREWALL_mReadSlaveReg3(BaseAddress) \
 	XIo_In16((BaseAddress) + (MYFIREWALL_SLAVE_REG3_OFFSET))

/************************** Function Prototypes ****************************/


/**
 *
 * Run a self-test on the driver/device. Note this may be a destructive test if
 * resets of the device are performed.
 *
 * If the hardware system is not built correctly, this function may never
 * return to the caller.
 *
 * @param   baseaddr_p is the base address of the MYFIREWALL instance to be worked on.
 *
 * @return
 *
 *    - XST_SUCCESS   if all self-test code passed
 *    - XST_FAILURE   if any self-test code failed
 *
 * @note    Caching must be turned off for this function to work.
 * @note    Self test may fail if data memory and device are not on the same bus.
 *
 */
XStatus MYFIREWALL_SelfTest(void * baseaddr_p);

void    MYFIREWALL_Write_Reg(Xuint32 BaseAddress, Xuint8 RegAddress, Xuint16 Reg_Value_Wr);
Xuint16 MYFIREWALL_Read_Reg(Xuint32 BaseAddress, Xuint8 RegAddress);
void    MYFIREWALL_Clear_Reg(Xuint32 BaseAddress);

void MYFIREWALL_Write_CAM(Xuint32 BaseAddress, Xuint32 Write_Data, Xuint8 Filter_Select, Xuint16 Addr_CAM);
Xuint32 MYFIREWALL_Read_CAM(Xuint32 BaseAddress, Xuint16 Addr_CAM);

void MYFIREWALL_Write_Start_Time(Xuint32 BaseAddress, Xuint32 StartTime);
Xuint32 MYFIREWALL_Read_Start_Time(Xuint32 BaseAddress);

void MYFIREWALL_Write_Byte_Counter(Xuint32 BaseAddress, Xuint32 Byte_Cnt);
Xuint32 MYFIREWALL_Read_Byte_Counter(Xuint32 BaseAddress);

void MYFIREWALL_Write_Pkt_Counter(Xuint32 BaseAddress, Xuint32 Pkt_Cnt);
Xuint32 MYFIREWALL_Read_Pkt_Counter(Xuint32 BaseAddress);

void MYFIREWALL_Write_Current_Time(Xuint32 BaseAddress, Xuint32 Curt_Time);
Xuint32 MYFIREWALL_Read_Current_Time(Xuint32 BaseAddress);

void MYFIREWALL_Write_MAC_Addr(Xuint32 BaseAddress, Xuint8 MAC_Addr0, Xuint8 MAC_Addr1, Xuint8 MAC_Addr2, Xuint8 MAC_Addr3, Xuint8 MAC_Addr4, Xuint8 MAC_Addr5);
void MYFIREWALL_Read_MAC_Addr(Xuint32 BaseAddress, Xuint8  * MAC_Addr0, Xuint8 * MAC_Addr1, Xuint8 * MAC_Addr2, Xuint8 * MAC_Addr3, Xuint8 * MAC_Addr4, Xuint8 * MAC_Addr5);
//void MYFIREWALL_Read_MAC_Addr(Xuint32 BaseAddress, Xuint16   MAC_Addr0, Xuint16  MAC_Addr1, Xuint16  MAC_Addr2)
void MYFIREWALL_Read_Hint();
void MYFIREWALL_Write_Hint();

void System_Initial(Xuint32 BaseAddress);
void MYFIREWALL_Read_Operation(Xuint32 BaseAddress);
void MYFIREWALL_Write_Operation(Xuint32 BaseAddress);

//CAM content table;
struct Filter_Rule {Xuint16 Filter_Mode_Select;  //sip or dip or sp or dp
	                  Xuint16 Handle_Manner;   //drop or sample
	                  Xuint32 Filter_Data;    //ip or port
	                  }Filter_Table[256];


Xuint16 MYFIREWALL_Search_Filter_Rule();
void MYFIREWALL_Add_Change_Filter_Rule(Xuint32 BaseAddress);
void MYFIREWALL_Delete_Rule(Xuint32 BaseAddress);

void MYFIREWALL_Flow_Statistic(Xuint32 BaseAddress);


Xuint8  Read_In_A_Char(); //0-9 for 0-9 input, 10 for ".", 11 for enter, 12 for wrong input
Xuint8  Addr_Read_In_8bit();    //one to three chars(in base 10) input to a 8-bit value 
Xuint16 Value_Read_In_16bit(); //convert the input string(in base 10) into a 16-bit value
//need to be defined
Xuint32 IP_Port_Read_In_32bit();   //convert ip or port to a 32-bit value
	                  

#endif // MYFIREWALL_H

⌨️ 快捷键说明

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