1
2#ifndef __IP_LOOKUP_H__
3#define __IP_LOOKUP_H__
4
5#if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51)
6# define	SIOCLOOKUPADDTABLE	_IOWR('r', 60, struct iplookupop)
7# define	SIOCLOOKUPDELTABLE	_IOWR('r', 61, struct iplookupop)
8# define	SIOCLOOKUPSTAT		_IOWR('r', 64, struct iplookupop)
9# define	SIOCLOOKUPSTATW		_IOW('r', 64, struct iplookupop)
10# define	SIOCLOOKUPFLUSH		_IOWR('r', 65, struct iplookupflush)
11# define	SIOCLOOKUPADDNODE	_IOWR('r', 67, struct iplookupop)
12# define	SIOCLOOKUPADDNODEW	_IOW('r', 67, struct iplookupop)
13# define	SIOCLOOKUPDELNODE	_IOWR('r', 68, struct iplookupop)
14# define	SIOCLOOKUPDELNODEW	_IOW('r', 68, struct iplookupop)
15#else
16# define	SIOCLOOKUPADDTABLE	_IOWR(r, 60, struct iplookupop)
17# define	SIOCLOOKUPDELTABLE	_IOWR(r, 61, struct iplookupop)
18# define	SIOCLOOKUPSTAT		_IOWR(r, 64, struct iplookupop)
19# define	SIOCLOOKUPSTATW		_IOW(r, 64, struct iplookupop)
20# define	SIOCLOOKUPFLUSH		_IOWR(r, 65, struct iplookupflush)
21# define	SIOCLOOKUPADDNODE	_IOWR(r, 67, struct iplookupop)
22# define	SIOCLOOKUPADDNODEW	_IOW(r, 67, struct iplookupop)
23# define	SIOCLOOKUPDELNODE	_IOWR(r, 68, struct iplookupop)
24# define	SIOCLOOKUPDELNODEW	_IOW(r, 68, struct iplookupop)
25#endif
26
27typedef	struct	iplookupop	{
28	int	iplo_type;	/* IPLT_* */
29	int	iplo_unit;	/* IPL_LOG* */
30	u_int	iplo_arg;
31	char	iplo_name[FR_GROUPLEN];
32	size_t	iplo_size;	/* sizeof struct at iplo_struct */
33	void	*iplo_struct;
34} iplookupop_t;
35
36#define	LOOKUP_ANON	0x80000000
37
38
39typedef	struct	iplookupflush	{
40	int	iplf_type;	/* IPLT_* */
41	int	iplf_unit;	/* IPL_LOG* */
42	u_int	iplf_arg;
43	size_t	iplf_count;
44	char	iplf_name[FR_GROUPLEN];
45} iplookupflush_t;
46
47typedef	struct	iplookuplink	{
48	int	ipll_type;	/* IPLT_* */
49	int	ipll_unit;	/* IPL_LOG* */
50	u_int	ipll_num;
51	char	ipll_group[FR_GROUPLEN];
52} iplookuplink_t;
53
54#define	IPLT_ALL	-1
55#define	IPLT_NONE	0
56#define	IPLT_POOL	1
57#define	IPLT_HASH	2
58
59#define	IPLT_ANON	0x80000000
60
61
62typedef	union	{
63	struct	iplookupiterkey {
64		char	ilik_ival;
65		u_char	ilik_type;	/* IPLT_* */
66		u_char	ilik_otype;
67		u_char	ilik_unit;	/* IPL_LOG* */
68	} ilik_unstr;
69	u_32_t	ilik_key;
70} iplookupiterkey_t;
71
72typedef	struct	ipflookupiter	{
73	int			ili_nitems;
74	iplookupiterkey_t	ili_lkey;
75	char			ili_name[FR_GROUPLEN];
76	void			*ili_data;
77} ipflookupiter_t;
78
79#define	ili_key		ili_lkey.ilik_key
80#define	ili_ival	ili_lkey.ilik_unstr.ilik_ival
81#define	ili_unit	ili_lkey.ilik_unstr.ilik_unit
82#define	ili_type	ili_lkey.ilik_unstr.ilik_type
83#define	ili_otype	ili_lkey.ilik_unstr.ilik_otype
84
85#define	IPFLOOKUPITER_LIST	0
86#define	IPFLOOKUPITER_NODE	1
87
88
89extern int ip_lookup_init __P((void));
90extern int ip_lookup_ioctl __P((caddr_t, ioctlcmd_t, int, int, void *));
91extern void ip_lookup_unload __P((void));
92extern void ip_lookup_deref __P((int, void *));
93extern void ip_lookup_iterderef __P((u_32_t, void *));
94
95#endif /* __IP_LOOKUP_H__ */
96