+ enum config_typet type;
+} config_descriptt;
+
+typedef struct
+{
+ u8 op; // operation
+#define FILTER_PORT_OP_NONE 0 // all ports match
+#define FILTER_PORT_OP_EQ 1
+#define FILTER_PORT_OP_NEQ 2
+#define FILTER_PORT_OP_GT 3
+#define FILTER_PORT_OP_LT 4
+#define FILTER_PORT_OP_RANGE 5
+ portt port;
+ portt port2; // for range
+} ip_filter_portt;
+
+typedef struct
+{
+ int action; // permit/deny
+#define FILTER_ACTION_DENY 1
+#define FILTER_ACTION_PERMIT 2
+ int proto; // protocol: IPPROTO_* (netinet/in.h)
+ ipt src_ip; // source ip
+ ipt src_wild;
+ ip_filter_portt src_ports;
+ ipt dst_ip; // dest ip
+ ipt dst_wild;
+ ip_filter_portt dst_ports;
+ u8 tcp_flag_op; // match type: any, all
+#define FILTER_FLAG_OP_ANY 0
+#define FILTER_FLAG_OP_ALL 1
+ u8 tcp_sflags; // flags set
+ u8 tcp_cflags; // flags clear
+} ip_filter_rulet;
+
+#define TCP_FLAG_FIN 0x01
+#define TCP_FLAG_SYN 0x02
+#define TCP_FLAG_RST 0x04
+#define TCP_FLAG_PSH 0x08
+#define TCP_FLAG_ACK 0x10
+#define TCP_FLAG_URG 0x20
+
+#define MAXFILTER 32
+#define MAXFILTER_RULES 32
+typedef struct
+{
+ char name[32]; // ACL name
+ int extended; // type: 0 = standard, 1 = extended
+ ip_filter_rulet rules[MAXFILTER_RULES];
+ int used; // session ref count
+} ip_filtert;