Home | History | Annotate | Line # | Download | only in netinet
ip_scan.h revision 1.2.2.2
      1  1.2.2.2  joerg /*	$NetBSD: ip_scan.h,v 1.2.2.2 2012/04/17 19:25:21 joerg Exp $	*/
      2  1.2.2.2  joerg 
      3  1.2.2.2  joerg /*
      4  1.2.2.2  joerg  * Copyright (C) 2008 by Darren Reed.
      5  1.2.2.2  joerg  *
      6  1.2.2.2  joerg  * See the IPFILTER.LICENCE file for details on licencing.
      7  1.2.2.2  joerg  *
      8  1.2.2.2  joerg  * @(#)ip_fil.h	1.35 6/5/96
      9  1.2.2.2  joerg  * Id: ip_scan.h,v 2.13.2.1 2012/01/26 05:29:13 darrenr Exp
     10  1.2.2.2  joerg  */
     11  1.2.2.2  joerg 
     12  1.2.2.2  joerg #ifndef __IP_SCAN_H__
     13  1.2.2.2  joerg #define __IP_SCAN_H__ 1
     14  1.2.2.2  joerg 
     15  1.2.2.2  joerg #ifdef sun
     16  1.2.2.2  joerg # include <sys/ioccom.h>
     17  1.2.2.2  joerg #endif
     18  1.2.2.2  joerg 
     19  1.2.2.2  joerg #define	IPSCAN_NAME	"/dev/ipscan"
     20  1.2.2.2  joerg #define	IPL_SCAN	IPSCAN_NAME
     21  1.2.2.2  joerg #define	ISC_TLEN	16
     22  1.2.2.2  joerg 
     23  1.2.2.2  joerg 
     24  1.2.2.2  joerg struct fr_info;
     25  1.2.2.2  joerg struct frentry;
     26  1.2.2.2  joerg struct ip;
     27  1.2.2.2  joerg struct ipstate;
     28  1.2.2.2  joerg 
     29  1.2.2.2  joerg 
     30  1.2.2.2  joerg #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51)
     31  1.2.2.2  joerg # define	SIOCADSCA	_IOWR('r', 60, struct ipscan *)
     32  1.2.2.2  joerg # define	SIOCRMSCA	_IOWR('r', 61, struct ipscan *)
     33  1.2.2.2  joerg # define	SIOCGSCST	_IOWR('r', 62, struct ipscan *)
     34  1.2.2.2  joerg #else
     35  1.2.2.2  joerg # define	SIOCADSCA	_IOWR(r, 60, struct ipscan *)
     36  1.2.2.2  joerg # define	SIOCRMSCA	_IOWR(r, 61, struct ipscan *)
     37  1.2.2.2  joerg # define	SIOCGSCST	_IOWR(r, 62, struct ipscan *)
     38  1.2.2.2  joerg #endif
     39  1.2.2.2  joerg 
     40  1.2.2.2  joerg struct	action	{
     41  1.2.2.2  joerg 	int		act_val;	/* what to do */
     42  1.2.2.2  joerg 	struct	in_addr	act_ip;		/* redirect IP# */
     43  1.2.2.2  joerg 	u_short		act_port;	/* redirect port number */
     44  1.2.2.2  joerg 	int		act_else;	/* what to do */
     45  1.2.2.2  joerg 	struct	in_addr	act_eip;	/* redirect IP# */
     46  1.2.2.2  joerg 	u_short		act_eport;	/* redirect port number */
     47  1.2.2.2  joerg };
     48  1.2.2.2  joerg 
     49  1.2.2.2  joerg 
     50  1.2.2.2  joerg typedef	struct	sinfo {
     51  1.2.2.2  joerg 	char	s_txt[ISC_TLEN];	/* text to match */
     52  1.2.2.2  joerg 	char	s_msk[ISC_TLEN];	/* mask of the above to check */
     53  1.2.2.2  joerg 	int	s_len;			/* length of server text */
     54  1.2.2.2  joerg } sinfo_t;
     55  1.2.2.2  joerg 
     56  1.2.2.2  joerg 
     57  1.2.2.2  joerg typedef	struct	ipscan	{
     58  1.2.2.2  joerg 	struct	ipscan	*ipsc_next;
     59  1.2.2.2  joerg 	struct	ipscan	**ipsc_pnext;
     60  1.2.2.2  joerg 	char		ipsc_tag[ISC_TLEN];	/* table entry protocol tag */
     61  1.2.2.2  joerg 	sinfo_t		ipsc_si[2];	/* client/server side information */
     62  1.2.2.2  joerg 	int		ipsc_hits;	/* times this has been matched */
     63  1.2.2.2  joerg 	int		ipsc_active;	/* # of active matches */
     64  1.2.2.2  joerg 	int		ipsc_fref;	/* # of references from filter rules */
     65  1.2.2.2  joerg 	int		ipsc_sref;	/* # of references from state entries */
     66  1.2.2.2  joerg 	struct	action	ipsc_act;
     67  1.2.2.2  joerg } ipscan_t;
     68  1.2.2.2  joerg 
     69  1.2.2.2  joerg 
     70  1.2.2.2  joerg #define	ipsc_cl		ipsc_si[0]
     71  1.2.2.2  joerg #define	ipsc_sl		ipsc_si[1]
     72  1.2.2.2  joerg #define	ipsc_ctxt	ipsc_cl.s_txt
     73  1.2.2.2  joerg #define	ipsc_cmsk	ipsc_cl.s_msk
     74  1.2.2.2  joerg #define	ipsc_clen	ipsc_cl.s_len
     75  1.2.2.2  joerg #define	ipsc_stxt	ipsc_sl.s_txt
     76  1.2.2.2  joerg #define	ipsc_smsk	ipsc_sl.s_msk
     77  1.2.2.2  joerg #define	ipsc_slen	ipsc_sl.s_len
     78  1.2.2.2  joerg #define	ipsc_action	ipsc_act.act_val
     79  1.2.2.2  joerg #define	ipsc_ip		ipsc_act.act_ip
     80  1.2.2.2  joerg #define	ipsc_port	ipsc_act.act_port
     81  1.2.2.2  joerg #define	ipsc_else	ipsc_act.act_else
     82  1.2.2.2  joerg #define	ipsc_eip	ipsc_act.act_eip
     83  1.2.2.2  joerg #define	ipsc_eport	ipsc_act.act_eport
     84  1.2.2.2  joerg 
     85  1.2.2.2  joerg #define	ISC_A_NONE	0
     86  1.2.2.2  joerg #define	ISC_A_TRACK	1
     87  1.2.2.2  joerg #define	ISC_A_CLOSE	2
     88  1.2.2.2  joerg #define	ISC_A_REDIRECT	3
     89  1.2.2.2  joerg 
     90  1.2.2.2  joerg 
     91  1.2.2.2  joerg typedef	struct	ipscanstat	{
     92  1.2.2.2  joerg 	struct	ipscan	*iscs_list;
     93  1.2.2.2  joerg 	u_long		iscs_acted;
     94  1.2.2.2  joerg 	u_long		iscs_else;
     95  1.2.2.2  joerg 	int		iscs_entries;
     96  1.2.2.2  joerg } ipscanstat_t;
     97  1.2.2.2  joerg 
     98  1.2.2.2  joerg 
     99  1.2.2.2  joerg extern	int ipf_scan_ioctl(ipf_main_softc_t *, void *, ioctlcmd_t, int, int, void *);
    100  1.2.2.2  joerg extern	int ipf_scan_init(void);
    101  1.2.2.2  joerg extern	int ipf_scan_attachis(struct ipstate *);
    102  1.2.2.2  joerg extern	int ipf_scan_attachfr(struct frentry *);
    103  1.2.2.2  joerg extern	int ipf_scan_detachis(struct ipstate *);
    104  1.2.2.2  joerg extern	int ipf_scan_detachfr(struct frentry *);
    105  1.2.2.2  joerg extern	int ipf_scan_packet(struct fr_info *, struct ipstate *);
    106  1.2.2.2  joerg extern	void ipf_scan_unload(ipf_main_softc_t *);
    107  1.2.2.2  joerg 
    108  1.2.2.2  joerg #endif /* __IP_SCAN_H__ */
    109