Re-import of fprobe-ulog
[iptables.git] / src / fprobe-ulog.h
diff --git a/src/fprobe-ulog.h b/src/fprobe-ulog.h
new file mode 100644 (file)
index 0000000..0d812c5
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+       Copyright (C) Slava Astashonok <sla@0n.ru>
+
+       This program is free software; you can redistribute it and/or
+       modify it under the terms of the GNU General Public License.
+
+       $Id: fprobe-ulog.h,v 1.1.2.3 2005/01/29 19:30:41 sla Exp $
+*/
+
+#ifndef _FPROBE_ULOG_H_
+#define _FPROBE_ULOG_H_
+
+#include <my_inttypes.h>
+
+#ifndef IP_OFFMASK
+#define IP_OFFMASK 0x1fff
+#endif
+
+#define SCHED SCHED_FIFO
+#define EMIT_TIMEOUT 5
+#define UNPENDING_TIMEOUT 5
+#define CAPTURE_SIZE 131072
+#define THREADS 5
+#define COPY_INTO 0
+#define MOVE_INTO 1
+
+struct Time {
+       time_t sec;
+       long usec;
+};
+
+struct Flow {
+       /* input interface */
+       uint16_t iif;
+       /* output interface */
+       uint16_t oif;
+       /* ip src address */
+       struct in_addr sip;
+       /* ip dst address */
+       struct in_addr dip;
+       /* ip protocol */
+       uint8_t proto;
+       /* ip fragment id */
+       uint16_t id;
+       /* tcp/udp src port or icmp message type */
+       uint16_t sp;
+       /* tcp/udp dst port or icmp type sub-code */
+       uint16_t dp;
+       /* ip ToS */
+       uint8_t tos;
+       /* tcp flags */
+       uint8_t tcp_flags;
+       /* number of packets */
+       unsigned long pkts;
+       /* sum of packets sizes */
+       unsigned long size;
+       /* fragment data size (for fragmented packets) */
+       unsigned long sizeF;
+       /* whole packet data size (for fragmented packets) */
+       unsigned long sizeP;
+       /* time of creation/flushing this flow */
+       struct Time ctime;
+       /* time of last modification this flow */
+       struct Time mtime;
+#define FLOW_FRAG      0x0001
+#define FLOW_FRAGMASK  0x0003
+#define FLOW_TL                0x0004
+#define FLOW_LASTFRAG  0x0008
+#define FLOW_PENDING   0x8000
+       int flags;
+       struct Flow *next;
+};
+
+struct Flow_F {
+       /* input interface */
+       uint16_t iif;
+       /* output interface */
+       uint16_t oif;
+       /* ip src address */
+       struct in_addr sip;
+       /* ip dst address */
+       struct in_addr dip;
+       /* ip protocol */
+       uint8_t proto;
+       /* ip fragment id */
+       uint16_t id;
+};
+
+struct Flow_TL {
+       /* input interface */
+       uint16_t iif;
+       /* output interface */
+       uint16_t oif;
+       /* ip src address */
+       struct in_addr sip;
+       /* ip dst address */
+       struct in_addr dip;
+       /* ip protocol */
+       uint8_t proto;
+       /* ip fragment id */
+       uint16_t id;
+       /* tcp/udp src port or icmp message type */
+       uint16_t sp;
+       /* tcp/udp dst port or icmp type sub-code */
+       uint16_t dp;
+};
+
+#define SIGALRM_MASK 1
+#define SIGTERM_MASK 2
+#define SIGUSR1_MASK 4
+
+struct peer {
+       int write_fd;
+       struct sockaddr_in addr;
+       struct sockaddr_in laddr;
+       int type;
+       uint32_t seq;
+       int fd;
+};
+
+struct snmp_rule {
+       char basename[IFNAMSIZ];
+       int len;
+       int base;
+} snmp_rule_t;
+
+#define PEER_MIRROR 0
+#define PEER_ROTATE 1
+#define PEER_FILE 2
+
+#endif