📄 acl2.h
字号:
/* * Copyright (c) 2001 Mark Fullmer and The Ohio State University * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $Id: acl2.h,v 1.6 2002/02/10 03:50:00 maf Exp $ */#include <netinet/in.h>#include <ftlib.h>#define ACL_FLAG_PERMIT 0x1 /* else deny */#define ACL_FLAG_SRC_PORT 0x2 /* do source port filtering */#define ACL_FLAG_DST_PORT 0x4 /* do destination port filtering */#define ACL_FLAG_ESTABLISHED 0x8 /* do "established" filtering */#define ACL_FLAG_PRECEDENCE 0x10 /* do "precedence" filtering */#define ACL_FLAG_TOS 0x20 /* do "tos" filtering */#define ACL_FLAG_IP_ALL 0x40 /* all ip protocols */#define ACL_OP_LT 1#define ACL_OP_GT 1#define ACL_OP_EQ 1#define ACL_OP_NEQ 1#define ACL_OP_RANGE 1#define ACL_TYPE_STD 1#define ACL_TYPE_EXT 2struct acl_list { int num; /* number of entries */ int num_std; /* number of standard acl entries */ int num_ext; /* number of extended acl entries */ struct acl_names *names; /* name of acl (num of these) */ struct acl_ip_std *acl_ip_std; /* list of standard acl's (not || names) */ /* num_std of these */ struct acl_ip_ext *acl_ip_ext; /* list of extended acl's (not || names) */ /* num_ext of these */};struct acl_names { int num; /* index into standard or extended list */ char *name; /* name of this acl */ int type; /* ACL_TYPE_* */};struct acl_ip_std { int num_lines; /* # of allocated entries */ struct acl_ip_std_entry *line;};struct acl_ip_std_entry { u_int32 src_addr; /* source address */ u_int32 src_mask; /* source address mask */ u_int64 matches; /* # of matches */ int flag; /* permit/deny */};struct acl_ip_ext { int num_lines; /* # of allocated entries */ struct acl_ip_ext_entry *line;};struct acl_ip_ext_entry { u_int8 protocol; /* IP protocol */ u_int8 precedence; /* IP precedence */ u_int8 tos; /* IP type of service */ u_int8 type; u_int8 type_code; u_int8 message; u_int8 src_op; u_int8 dst_op; u_int32 src_addr; /* source address */ u_int32 src_mask; /* source address mask */ u_int16 src_port; /* source port */ u_int16 src_port2; /* source port (end of range) */ u_int32 dst_addr; /* destination address */ u_int32 dst_mask; /* destinan address mask */ u_int16 dst_port; /* destination port */ u_int16 dst_port2; /* destination port (end of range) */ u_int64 matches; /* # of matches */ int flag; /* permit/deny, etc */};int acl_create(struct acl_list *acl_list, char *name, int type);int acl_delete_list(struct acl_list acl_list);void acl_dump(struct acl_list acl_list);void acl_dump_std(struct acl_list acl_list, int x);void acl_dump_ext(struct acl_list acl_list, int x);int acl_find(struct acl_list acl_list, char *name);int acl_add_line_std(struct acl_list acl_list, int acl_index, struct acl_ip_std_entry acl_ip_std_entry);int acl_add_line_ext(struct acl_list acl_list, int acl_index, struct acl_ip_ext_entry acl_ip_ext_entry);int acl_eval_std(struct acl_list acl_list, int index, u_int32 ip);int acl_eval_ext(struct acl_list acl_list, int index, struct acl_ip_ext_entry entry);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -