ip_lookup.h revision 172772
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