Home | History | Annotate | Line # | Download | only in netinet
ip_scan.h revision 1.1.1.2
      1      1.1  christos /*	$NetBSD: ip_scan.h,v 1.1.1.2 2012/07/22 13:45:34 darrenr Exp $	*/
      2      1.1  christos 
      3      1.1  christos /*
      4  1.1.1.2   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.1.1.2   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.1  christos extern	int ipf_scan_ioctl __P((ipf_main_softc_t *, caddr_t, ioctlcmd_t, int, int, void *));
    100      1.1  christos extern	int ipf_scan_init __P((void));
    101      1.1  christos extern	int ipf_scan_attachis __P((struct ipstate *));
    102      1.1  christos extern	int ipf_scan_attachfr __P((struct frentry *));
    103      1.1  christos extern	int ipf_scan_detachis __P((struct ipstate *));
    104      1.1  christos extern	int ipf_scan_detachfr __P((struct frentry *));
    105      1.1  christos extern	int ipf_scan_packet __P((struct fr_info *, struct ipstate *));
    106      1.1  christos extern	void ipf_scan_unload __P((ipf_main_softc_t *));
    107      1.1  christos 
    108      1.1  christos #endif /* __IP_SCAN_H__ */
    109