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