]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - sys/contrib/ipfilter/netinet/ip_lookup.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / sys / contrib / ipfilter / netinet / ip_lookup.h
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
27 typedef 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
39 typedef 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
47 typedef 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
62 typedef 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
72 typedef 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
89 extern int ip_lookup_init __P((void));
90 extern int ip_lookup_ioctl __P((caddr_t, ioctlcmd_t, int, int, void *));
91 extern void ip_lookup_unload __P((void));
92 extern void ip_lookup_deref __P((int, void *));
93 extern void ip_lookup_iterderef __P((u_32_t, void *));
94
95 #endif /* __IP_LOOKUP_H__ */