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