Struct.h
上传用户:heseme
上传日期:2009-12-23
资源大小:228k
文件大小:11k
开发平台:

Visual C++

  1. #if !defined(FIREWALLSTRUCT)
  2. #define FIREWALLSTRUCT
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. //设备号与IP地址的映射
  7. struct MapDevToIp{
  8.           int  nDevNum;
  9.           ULONG nIpAddr;
  10. };
  11. //超时设置:用动态端口NAT
  12. struct TimeOut{
  13.           int nTcpTimeOut;//小时
  14.           int nUdpTimeOut;//分钟
  15. };
  16. //(静态、动态)内外NAT映射
  17. struct MapAddrNat{
  18.           unsigned long nIntraLocalAddr;//内网ip地址
  19.           unsigned long nOutsideGlobalAddr;//外网ip地址
  20. };
  21. // 动态端口NAT设置
  22. struct DynamicPortNat{
  23.           USHORT  nMinPort;//与MaxPort一起表示端口转换范围
  24.           USHORT  nMaxPort;
  25.           USHORT  nMaxPortConversion;//端口最大转换数
  26.           struct TimeOut sTimeOut;// 超时设置
  27. };
  28. // 动态端口NAT映射
  29. struct MapDynamicPortNat{
  30.           unsigned long nIntraLocalAddr; //内网ip地址
  31.           unsigned long nOutsideGlobalAddr;//外网ip地址
  32.           unsigned short  nPort;//端口
  33. };
  34. //静态端口NAT映射
  35. struct STATICTABLEITEM{
  36. BYTE     type;                  //=1:tcp;=2:udp;3:icmp 
  37.     ULONG    ulIpadress;              
  38. USHORT   usPort;                  
  39. };
  40. struct STATICTABLE{
  41. int   count; 
  42.     STATICTABLEITEM*  item;
  43. };
  44. typedef union _in_addr {
  45. // ULONG s_addr;
  46. struct {
  47. BYTE s_b[4];
  48. } s_un_b;
  49. // struct {
  50. // unsigned short s_w[2];
  51. // } s_un_w;
  52. ULONG ss_addr;
  53. #define s_b s_un_b.s_b
  54. //#define s_w s_un_w.s_w
  55. } in_addr_t;
  56. //配置数据
  57. struct  NAT_Cfg {
  58.         ULONG   nGlobalAddress; //外部地址:即nOutsideIp
  59. //      int     nDenyInternalAddressNumber; //禁止NAT的内部地址数量
  60. //      ULONG*  ul_DenyGlobalAddress;      //内部禁止地址范围
  61. //      int     nInternalNetWorkNumber;     //内部地址网络数量
  62. //      ULONG*  ul_NetworkAddress;          //内部网络地址
  63.         int     nTimeOut_TCP;           //动态端口转换的时间溢出值
  64.         int     nTimeOut_UDP;           //动态端口转换的时间溢出值
  65.         USHORT  us_LowPort;             //最低可用端口号 
  66.         USHORT  us_HighPort;            //最高可用端口号
  67.         USHORT  us_MaxNatNumber;        //最大端口转换数量
  68.         USHORT  us_PortNumber;          //静态端口映射数量
  69.         struct  STATICTABLE  StaticTable;//静态端口NAT映射列表
  70. };
  71. struct  Filterdrv_Cfg {
  72. int         n_Dev_number;          //安装网络设备数量
  73. USHORT      us_Dev_Status[10][2];    //设备状态
  74.             //列1 项 = 设备编号
  75.             //列 2 项 = 设备拦截状态
  76.                      // 0        拦截所有数据包
  77.                     // 1          不拦截数据包
  78.                     // 2          只拦截入站数据包
  79.                     // 3          只拦截出站数据包
  80.                     // 4          丢弃所有数据包
  81. };
  82. //内网、外网、DM区设置
  83. struct  FireWallConfig{
  84.       USHORT   OutNumber;
  85.   USHORT   InNumber;
  86.   USHORT   MdNumber;
  87.           ULONG     nOutsideIp;//外网ip
  88.   ULONG     nOutsideMask;//外网地址掩码
  89.   ULONG     nMiddleIp;//DM区IP
  90.   ULONG     nMiddleMask;
  91.           ULONG     nIntraIp;
  92.   ULONG     nIntraMask;
  93. //          struct  Filterdrv_Cfg   sFilterdrvCfg;
  94. //          struct  NAT_Cfg    sNatCfg;         
  95. };
  96. struct  IpaddrRange{
  97.          USHORT    nIpaddrNum;//个数;从1开始
  98.          ULONG     nIpMask;//IP掩码
  99.          ULONG     nIpAddr;//起始IP地址,根据nIpaddrNum推算后续IP地址
  100. };
  101. //端口范围
  102. struct  PortRange{
  103.          unsigned short  nPortBegin;
  104.          unsigned short  nPortEnd;
  105. };
  106. // 端口列表
  107. struct  PortList {
  108.          BOOL  bRange;//true: PortRange有效
  109.          union{
  110.                unsigned short  nPort;// 拒绝的具体端口,
  111.                struct   PortRange     sPortRange;// 拒绝的端口范围
  112.  };
  113. };
  114. //允许与拒绝的端口列表
  115. struct  PortSet{
  116.          CPtrList  sAllowOutDstPortList;// 允许出去的目的端口列表
  117.          CPtrList  sAllowOutSrcPortList;// 允许出去的源端口列表
  118. };
  119. struct  IcmpRange{
  120.          USHORT   nIcmpBegin;
  121.          USHORT   nIcmpEnd;
  122. };// 拒绝的ICMP类型范围
  123. // ICMP列表
  124. struct  IcmpList {
  125.    //      IcmpList * pIcmpList;
  126.          BOOL  bRange;//true: PortRange有效
  127.          union{
  128.                USHORT   nIcmpType;// 拒绝的具体ICMP类型,
  129.                struct  IcmpRange sIcmpRange;// 拒绝的ICMP类型范围
  130.  };
  131. };
  132. //主结构:对所有主机的设置
  133. struct  HostList{
  134.  //       HostList *pHostList;
  135.          struct   IpaddrRange   sIpRange;//标识主机范围(可以为一台主机或多台)
  136.          struct  PortSet  sTcpPortSet;
  137.          struct  PortSet  sUdpPortSet;
  138.  CPtrList    sInIcmpSet;//允许进来的ICMP报文类型
  139.          CPtrList    sOutIcmpSet; //允许出去的ICMP报文类型
  140. };
  141. //全局设置:针对firewall主机
  142. struct GlobalFlags{
  143.         BOOL bCheckInNetAttack;//是否检查对内网的访问;
  144.         BOOL bCheckOutNetAccack;//是否检查对外网的访问;
  145.         BOOL bCheckDmAccack;//是否检查对DM区的访问;
  146.         BOOL bMulticast;//组播允许标志
  147.         BOOL bNonIpPacket;//非Ip包
  148.         BOOL bOtherIpPacket;//除tcp,udp,icmp以外的ip包
  149.         BOOL bSusPectOffset;// Ip包内发现可疑的偏移
  150.         BOOL bFragmentIcmp;//分段的ICMP包
  151.         BOOL bSusPectIcmp;//可疑的ICMP包
  152. BOOL bforbidIcmp;
  153. };
  154. //以下用于界面显示及文件存取
  155. //对内网的主机的设置
  156. struct HostChar{
  157.     char HostIp[24];         //主机类ip范围
  158.     char TcpSrcOut[30][16];  //允许出去的tcp源端口
  159.     char TcpDstOut[30][16];  //允许出去的tcp目的端口
  160.     char UdpSrcOut[30][16];  //允许出去的udp源端口
  161.     char UdpDstOut[30][16];  //允许出去的udp目的端口
  162.     char IcmpTypeIn[30][5];  //允许进来的icmp类型
  163.     char IcmpTypeOut[30][5]; //允许出去的icmp类型
  164. int  nPos[10];           
  165. };
  166. struct  Nat_CfgChar{
  167. //        ULONG   nGlobalAddress; //外部地址
  168. // ULONG   nTotalIntraIp;//禁止NAT的所有内部地址数量;当对DenyIntraAddr付值的同时对该成员付值
  169. //        USHORT  nDenyIntraAddrlen;// struct  IpaddrRange的数量,即子网数
  170. //       char    DenyIntraAddr[100][24];//禁止NAT的所有内部地址
  171. //        int     nInternalNetWorkNumber;     //内部地址网络数量(网段数)
  172. //        char    NetworkAddress[50][20];   //内部网络地址 界面未加。。。。。。。。。。。。                
  173.         UINT     nTimeOut_TCP;           //动态端口转换的时间溢出值
  174.         UINT     nTimeOut_UDP;           //动态端口转换的时间溢出值
  175.         UINT  nLowPort;             //最低可用端口号 
  176.         UINT  nHighPort;            //最高可用端口号
  177.         UINT  nMaxNatNumber;        //最大端口转换数量
  178.         USHORT   us_PortNumberTcp;          //tcp静态端口映射数量
  179. USHORT   us_PortNumberUdp;
  180. char  MapStaticTcp[50][24];//tcp静态端口NAT映射
  181. char  MapStaticUdp[50][24];//udp静态端口NAT映射
  182. };
  183. struct  IpFilter{
  184. BOOL isLogIp; //1,要进行IP过滤层日志;
  185. DWORD Options;//bit0, inbroad;  //1,要记录入组播;
  186. //bit1,  outbroad;//1,要记录出组播
  187. //bit 2,incommingPort; //1,要记录进入端口;
  188. //bit 3,outgoingPort; //1,要记录出去端口;
  189. //bit 4,inlength;//1,要记录入协议头太短
  190. //bit 5,outlength;//1,要记录出协议头太短
  191. //bit 6, incommingType; //1,要记录进入ICMP类型;
  192. //bit 7, outgoingType; //1,要记录出去ICMP类型;
  193. //bit 8, incommingIP; //1,要记录进入IP;
  194. //bit 9, outgoingIP; //1,要记录出去IP;
  195. //bit 10,11,=0;//非IP;
  196. //bit 12,inoffset;//记录入可疑偏移量
  197. //bit 13,outoffset;//记录出可疑偏移量
  198. //bit 14,inmore;//记录入分段
  199. //bit 15,outmore;//记录出分段
  200. //bit 16, incommingDOS; //1,要记录进入DOS;
  201. //bit 17, outgoingDOS; //1,要记录出去DOS;
  202. };
  203. struct ProCommentsLog{
  204. BOOL isLogProtocal; //1,要进行协议内容过滤日志;
  205. DWORD Options;     //bit 0,记录IP和端口;
  206. //bit 1,记录协议类型;
  207. //bit 2,记录阻断URL;
  208. //bit 3,记录时间
  209. };
  210. struct DefaultSetData{
  211. DWORD Priority; //防火墙安全等级高度:
  212. //0,High;1,Moderate;2,Low;
  213. DWORD CheckINorOUTNetCard; //bit 0,IN,=1,check;
  214. //bit 1,OUT,=1,check;
  215. //高中级别时,都检查,低,检查外网。
  216. DWORD Pro;//BIT 0,ICMP,PERMIT OR DENY INtoOUT(1 OR 0);
  217. //BIT 1,ICMP,PERMIT OR DENY OUTtoIN(1,OR 0);
  218. // BIT 2,IGMP,PERMIT OR DENY INtoOUT(1 OR 0);
  219. //BIT 3,IGMP,PERMIT OR DENY OUTtoIN(1,OR 0);
  220. //注释:级别高时,全0;低时,全1;
  221. //级别中间,ICMP,IGMP 0;
  222. int TCPProtocal; //BIT 0,PERMIT OR DENY IN 80(1 OR 0);
  223. //BIT 1,PERMIT OR DENY OUT 80(1,OR 0);
  224. //BIT 2,PERMIT OR DENY IN FTP(1 OR 0);
  225. //BIT 3,PERMIT OR DENY OUT FTP(1,OR 0);
  226. //BIT 4,PERMIT OR DENY IN NBT(1 OR 0);
  227. //BIT 5,PERMIT OR DENY OUT NBT(1,OR 0);
  228. //BIT 6,PERMIT OR DENY IN TELNET(1 OR 0);
  229. //BIT 7,PERMIT OR DENY OUT TELNET(1,OR 0);
  230. //BIT 8,SNMP,PERMIT OR DENY IN(1 OR 0);
  231. //BIT 9,SNMP,PERMIT OR DENY OUT(1,OR 0);
  232. //BIT 10, IN and OUT FINGER,79,PERMIT OR DENY OUT(1,OR 0);
  233. //BIT 11,内部出去端口<=1024,但除以上端口外:
  234. //1, PERMIT;0,DENY;
  235. //BIT 12,内部出去端口>1024:1,PERMIT;0,DENY;
  236. //bit 13,外部进来端口>1024:1,PERMIET;0,DENY;
  237. //BIT 14,外部进来端口<=1024,但除以上端口外:1,PERMIET;0,DENY;
  238. //bit 15-31,保留
  239. //级别高时,BIT 0、1、12位,=1,其余=0;
  240. //级别中时,BIT 10、13=0,其余=1;
  241. //级别低时,BIT 10为1;
  242. int PortocalComments;
  243. //BIT 0,PERMIT OR DENY IN JAVA(1,OR 0);
  244. //BIT 1,PERMIT OR DENY IN SCRIPT(1,OR 0);
  245. //BIT 2,PERMIT OR DENY IN ACTIVEX (1,OR 0);
  246. //BIT 3-31,保留,Priority=高,全0;低,1;
  247. //注释:级别高中时,全0;低时,全1;
  248. DWORD UDPProtocal;//BIT 0,OuterNetwork DNS,1,permit,0,deny;
  249. //保留,Priority=高,全0;低,全1;
  250. };
  251. struct  LogManage{
  252. BOOL RequireLog; //1,需要日志记录管理;0,不需要
  253. IpFilter TheIpFilter;
  254. ProCommentsLog TheProCommentsLog;
  255. };
  256. //内网、外网、DM区设置
  257. struct  FireWallConfigChar{
  258.           char   csOutsideIp[16];//外网ip
  259.   char   csOutsideMask[16];//外网地址掩码
  260.   char   csMiddleIp[16];//DM区IP
  261.   char   csMiddleMask[16];
  262.           char   csIntraIp[16];
  263.   char   csIntraMask[16];
  264.  //         struct  Filterdrv_Cfg   sFilterdrvCfg;
  265.           struct  Nat_CfgChar    sNatCfg;         
  266. };
  267. //该结构作文件存取,界面显示,初始化配置等用
  268. struct AllLineChar{
  269.         struct GlobalFlags  sGlobalFlags;
  270.     ULONG  CurHostNum;//Hostchar的当前下标
  271.     struct HostChar Hostchar[100];
  272. int    AllowPos;
  273.     char   AllowIpTab[100][24];
  274. int    RejPos;
  275. char   RejIpTab[100][24];
  276. struct FireWallConfigChar FireWallCfg;
  277. int     InDmPos;
  278.         char    InDmIpTab[100][24];
  279. int     OutDmPos;
  280.         char    OutDmIpTab[100][24];
  281. };
  282. //静态端口NAT映射
  283. struct MapStaticPortNatChar{
  284.           char  ServicePort[16];//标准服务端口
  285.           char  IntraIpaddr[24];//内网ip地址
  286. };
  287. typedef struct LogView{
  288. char time[30];
  289. char prot[10];
  290. char src[24];
  291. char dst[24];
  292. char demo[20];
  293. }LOGVIEW;
  294. struct LogView1{
  295. char time[30];
  296. char keyword[20];
  297. char URL[250];
  298. char src[24];
  299. char dst[24];
  300. char demo[20];
  301. };
  302. typedef struct LogViewIcmp{
  303. char time[30];
  304. char prot[10];
  305. char src[24];
  306. char dst[24];
  307. char demo[20];
  308. char type[3];
  309. }LOGVIEWICMP;
  310.  
  311. #define M_LOGVIEW WM_USER+1111
  312. enum{TCPSRCOUT=0,TCPDSTOUT,UDPSRCOUT,UDPDSTOUT,ICMPTYPEIN,ICMPTYPEOUT};
  313. #endif