xref: /illumos-gate/usr/src/uts/common/inet/ipf/netinet/ip_lookup.h (revision 2d6eb4a5e0a47d30189497241345dc5466bb68ab)
1ab25eeb5Syz155240 /*
2ab25eeb5Syz155240  * Copyright (C) 1993-2005  by Darren Reed.
3ab25eeb5Syz155240  * See the IPFILTER.LICENCE file for details on licencing.
4*f4b3ec61Sdh155122  *
5*f4b3ec61Sdh155122  * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
6*f4b3ec61Sdh155122  * Use is subject to license terms.
7ab25eeb5Syz155240  */
8ab25eeb5Syz155240 
9ab25eeb5Syz155240 #ifndef __IP_LOOKUP_H__
10ab25eeb5Syz155240 #define __IP_LOOKUP_H__
11ab25eeb5Syz155240 
12ab25eeb5Syz155240 #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51)
13ab25eeb5Syz155240 # define	SIOCLOOKUPADDTABLE	_IOWR('r', 60, struct iplookupop)
14ab25eeb5Syz155240 # define	SIOCLOOKUPDELTABLE	_IOWR('r', 61, struct iplookupop)
15ab25eeb5Syz155240 # define	SIOCLOOKUPSTAT		_IOWR('r', 64, struct iplookupop)
16ab25eeb5Syz155240 # define	SIOCLOOKUPSTATW		_IOW('r', 64, struct iplookupop)
17ab25eeb5Syz155240 # define	SIOCLOOKUPFLUSH		_IOWR('r', 65, struct iplookupflush)
18ab25eeb5Syz155240 # define	SIOCLOOKUPADDNODE	_IOWR('r', 67, struct iplookupop)
19ab25eeb5Syz155240 # define	SIOCLOOKUPADDNODEW	_IOW('r', 67, struct iplookupop)
20ab25eeb5Syz155240 # define	SIOCLOOKUPDELNODE	_IOWR('r', 68, struct iplookupop)
21ab25eeb5Syz155240 # define	SIOCLOOKUPDELNODEW	_IOW('r', 68, struct iplookupop)
22ab25eeb5Syz155240 #else
23ab25eeb5Syz155240 # define	SIOCLOOKUPADDTABLE	_IOWR(r, 60, struct iplookupop)
24ab25eeb5Syz155240 # define	SIOCLOOKUPDELTABLE	_IOWR(r, 61, struct iplookupop)
25ab25eeb5Syz155240 # define	SIOCLOOKUPSTAT		_IOWR(r, 64, struct iplookupop)
26ab25eeb5Syz155240 # define	SIOCLOOKUPSTATW		_IOW(r, 64, struct iplookupop)
27ab25eeb5Syz155240 # define	SIOCLOOKUPFLUSH		_IOWR(r, 65, struct iplookupflush)
28ab25eeb5Syz155240 # define	SIOCLOOKUPADDNODE	_IOWR(r, 67, struct iplookupop)
29ab25eeb5Syz155240 # define	SIOCLOOKUPADDNODEW	_IOW(r, 67, struct iplookupop)
30ab25eeb5Syz155240 # define	SIOCLOOKUPDELNODE	_IOWR(r, 68, struct iplookupop)
31ab25eeb5Syz155240 # define	SIOCLOOKUPDELNODEW	_IOW(r, 68, struct iplookupop)
32ab25eeb5Syz155240 #endif
33ab25eeb5Syz155240 
34ab25eeb5Syz155240 typedef	struct	iplookupop	{
35ab25eeb5Syz155240 	int	iplo_type;	/* IPLT_* */
36ab25eeb5Syz155240 	int	iplo_unit;	/* IPL_LOG* */
37ab25eeb5Syz155240 	u_int	iplo_arg;
38ab25eeb5Syz155240 	char	iplo_name[FR_GROUPLEN];
39ab25eeb5Syz155240 	size_t	iplo_size;	/* sizeof struct at iplo_struct */
40ab25eeb5Syz155240 	void	*iplo_struct;
41ab25eeb5Syz155240 } iplookupop_t;
42ab25eeb5Syz155240 
43ab25eeb5Syz155240 typedef	struct	iplookupflush	{
44ab25eeb5Syz155240 	int	iplf_type;	/* IPLT_* */
45ab25eeb5Syz155240 	int	iplf_unit;	/* IPL_LOG* */
46ab25eeb5Syz155240 	u_int	iplf_arg;
47ab25eeb5Syz155240 	size_t	iplf_count;
48ab25eeb5Syz155240 	char	iplf_name[FR_GROUPLEN];
49ab25eeb5Syz155240 } iplookupflush_t;
50ab25eeb5Syz155240 
51ab25eeb5Syz155240 typedef	struct	iplookuplink	{
52ab25eeb5Syz155240 	int	ipll_type;	/* IPLT_* */
53ab25eeb5Syz155240 	int	ipll_unit;	/* IPL_LOG* */
54ab25eeb5Syz155240 	u_int	ipll_num;
55ab25eeb5Syz155240 	char	ipll_group[FR_GROUPLEN];
56ab25eeb5Syz155240 } iplookuplink_t;
57ab25eeb5Syz155240 
58ab25eeb5Syz155240 #define	IPLT_ALL	-1
59ab25eeb5Syz155240 #define	IPLT_NONE	0
60ab25eeb5Syz155240 #define	IPLT_POOL	1
61ab25eeb5Syz155240 #define	IPLT_HASH	2
62ab25eeb5Syz155240 
63ab25eeb5Syz155240 #define	IPLT_ANON	0x80000000
64ab25eeb5Syz155240 
65*f4b3ec61Sdh155122 
66*f4b3ec61Sdh155122 typedef	union	{
67*f4b3ec61Sdh155122 	struct	iplookupiterkey {
68*f4b3ec61Sdh155122 		char	ilik_ival;
69*f4b3ec61Sdh155122 		u_char	ilik_type;	/* IPLT_* */
70*f4b3ec61Sdh155122 		u_char	ilik_otype;
71*f4b3ec61Sdh155122 		char	ilik_unit;	/* IPL_LOG* */
72*f4b3ec61Sdh155122 	} ilik_unstr;
73*f4b3ec61Sdh155122 	u_32_t	ilik_key;
74*f4b3ec61Sdh155122 } iplookupiterkey_t;
75*f4b3ec61Sdh155122 
76*f4b3ec61Sdh155122 typedef	struct	ipflookupiter	{
77*f4b3ec61Sdh155122 	void			*ili_data;
78*f4b3ec61Sdh155122 	iplookupiterkey_t	ili_lkey;
79*f4b3ec61Sdh155122 	char			ili_name[FR_GROUPLEN];
80*f4b3ec61Sdh155122 } ipflookupiter_t;
81*f4b3ec61Sdh155122 
82*f4b3ec61Sdh155122 #define	ili_key		ili_lkey.ilik_key
83*f4b3ec61Sdh155122 #define	ili_ival	ili_lkey.ilik_unstr.ilik_ival
84*f4b3ec61Sdh155122 #define	ili_unit	ili_lkey.ilik_unstr.ilik_unit
85*f4b3ec61Sdh155122 #define	ili_type	ili_lkey.ilik_unstr.ilik_type
86*f4b3ec61Sdh155122 #define	ili_otype	ili_lkey.ilik_unstr.ilik_otype
87*f4b3ec61Sdh155122 
88*f4b3ec61Sdh155122 #define	IPFLOOKUPITER_LIST	0
89*f4b3ec61Sdh155122 #define	IPFLOOKUPITER_NODE	1
90*f4b3ec61Sdh155122 
91*f4b3ec61Sdh155122 
92*f4b3ec61Sdh155122 extern int ip_lookup_init __P((ipf_stack_t *));
93*f4b3ec61Sdh155122 extern int ip_lookup_ioctl __P((caddr_t, ioctlcmd_t, int, int, void *, ipf_stack_t *));
94*f4b3ec61Sdh155122 extern void ip_lookup_unload __P((ipf_stack_t *));
95*f4b3ec61Sdh155122 extern void ip_lookup_deref __P((int, void *, ipf_stack_t *));
96*f4b3ec61Sdh155122 extern int ip_lookup_iterate __P((void *, int, void *, ipf_stack_t *));
97*f4b3ec61Sdh155122 extern void ip_lookup_iterderef __P((u_32_t, void *, ipf_stack_t  *));
98ab25eeb5Syz155240 
99ab25eeb5Syz155240 #endif /* __IP_LOOKUP_H__ */
100