ipmon.h revision 145510
1114879Sjulian/*	$NetBSD$	*/
2114879Sjulian
3114879Sjulian/*
4114879Sjulian * Copyright (C) 1993-2001 by Darren Reed.
5114879Sjulian *
6114879Sjulian * See the IPFILTER.LICENCE file for details on licencing.
7114879Sjulian *
8114879Sjulian * @(#)ip_fil.h	1.35 6/5/96
9114879Sjulian * Id: ipmon.h,v 2.8 2003/07/25 22:16:20 darrenr Exp
10114879Sjulian */
11114879Sjulian
12114879Sjulian
13114879Sjuliantypedef	struct	ipmon_action	{
14114879Sjulian	struct	ipmon_action	*ac_next;
15114879Sjulian	int	ac_mflag;	/* collection of things to compare */
16114879Sjulian	int	ac_dflag;	/* flags to compliment the doing fields */
17114879Sjulian	int	ac_syslog;	/* = 1 to syslog rules. */
18114879Sjulian	char	*ac_savefile;	/* filename to save log records to */
19114879Sjulian	FILE	*ac_savefp;
20114879Sjulian	int	ac_direction;
21114879Sjulian	char	ac_group[FR_GROUPLEN];
22114879Sjulian	char	ac_nattag[16];
23114879Sjulian	u_32_t	ac_logtag;
24114879Sjulian	int	ac_type;	/* nat/state/ipf */
25114879Sjulian	int	ac_proto;
26114879Sjulian	int	ac_rule;
27114879Sjulian	int	ac_packet;
28114879Sjulian	int	ac_second;
29114879Sjulian	int	ac_result;
30114879Sjulian	u_32_t	ac_sip;
31114879Sjulian	u_32_t	ac_smsk;
32114879Sjulian	u_32_t	ac_dip;
33114879Sjulian	u_32_t	ac_dmsk;
34114879Sjulian	u_short	ac_sport;
35114879Sjulian	u_short	ac_dport;
36114879Sjulian	char	*ac_exec;	/* execute argument */
37114879Sjulian	char	*ac_run;	/* actual command that gets run */
38114879Sjulian	char	*ac_iface;
39114879Sjulian	/*
40114879Sjulian	 * used with ac_packet/ac_second
41114879Sjulian	 */
42114879Sjulian	struct	timeval	ac_last;
43114879Sjulian	int	ac_pktcnt;
44114879Sjulian} ipmon_action_t;
45114879Sjulian
46114879Sjulian#define	ac_lastsec	ac_last.tv_sec
47114879Sjulian#define	ac_lastusec	ac_last.tv_usec
48114879Sjulian
49114879Sjulian/*
50114879Sjulian * Flags indicating what fields to do matching upon (ac_mflag).
51114879Sjulian */
52114879Sjulian#define	IPMAC_DIRECTION	0x0001
53114879Sjulian#define	IPMAC_DSTIP	0x0002
54114879Sjulian#define	IPMAC_DSTPORT	0x0004
55114879Sjulian#define	IPMAC_EVERY	0x0008
56114879Sjulian#define	IPMAC_GROUP	0x0010
57114879Sjulian#define	IPMAC_INTERFACE	0x0020
58114879Sjulian#define	IPMAC_LOGTAG	0x0040
59114879Sjulian#define	IPMAC_NATTAG	0x0080
60114879Sjulian#define	IPMAC_PROTOCOL	0x0100
61114879Sjulian#define	IPMAC_RESULT	0x0200
62114879Sjulian#define	IPMAC_RULE	0x0400
63114879Sjulian#define	IPMAC_SRCIP	0x0800
64114879Sjulian#define	IPMAC_SRCPORT	0x1000
65114879Sjulian#define	IPMAC_TYPE	0x2000
66114879Sjulian#define	IPMAC_WITH	0x4000
67114879Sjulian
68114879Sjulian#define	IPMR_BLOCK	1
69114879Sjulian#define	IPMR_PASS	2
70114879Sjulian#define	IPMR_NOMATCH	3
71114879Sjulian#define	IPMR_LOG	4
72114879Sjulian
73114879Sjulian#define	IPMDO_SAVERAW	0x0001
74114879Sjulian
75114879Sjulian#define	OPT_SYSLOG	0x001
76114879Sjulian#define	OPT_RESOLVE	0x002
77114879Sjulian#define	OPT_HEXBODY	0x004
78114879Sjulian#define	OPT_VERBOSE	0x008
79114879Sjulian#define	OPT_HEXHDR	0x010
80114879Sjulian#define	OPT_TAIL	0x020
81114879Sjulian#define	OPT_NAT		0x080
82114879Sjulian#define	OPT_STATE	0x100
83114879Sjulian#define	OPT_FILTER	0x200
84114879Sjulian#define	OPT_PORTNUM	0x400
85114879Sjulian#define	OPT_LOGALL	(OPT_NAT|OPT_STATE|OPT_FILTER)
86114879Sjulian
87114879Sjulian#define	HOSTNAME_V4(a,b)	hostname((a), 4, (u_32_t *)&(b))
88114879Sjulian
89114879Sjulian#ifndef	LOGFAC
90114879Sjulian#define	LOGFAC	LOG_LOCAL0
91114879Sjulian#endif
92114879Sjulian
93114879Sjulianextern	int	load_config __P((char *));
94114879Sjulianextern	void	dumphex __P((FILE *, int, char *, int));
95114879Sjulianextern	int	check_action __P((char *, char *, int, int));
96114879Sjulianextern	char	*getword __P((int));
97114879Sjulian