1ab25eeb5Syz /* 2ab25eeb5Syz * Copyright (C) 1993-2005 by Darren Reed. 3ab25eeb5Syz * See the IPFILTER.LICENCE file for details on licencing. 4*f4b3ec61Sdh * 5*f4b3ec61Sdh * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 6*f4b3ec61Sdh * Use is subject to license terms. 7*f4b3ec61Sdh */ 8*f4b3ec61Sdh 9*f4b3ec61Sdh #pragma ident "%Z%%M% %I% %E% SMI" 107c478bd9Sstevel@tonic-gate 117c478bd9Sstevel@tonic-gate #ifndef __IP_LOOKUP_H__ 127c478bd9Sstevel@tonic-gate #define __IP_LOOKUP_H__ 137c478bd9Sstevel@tonic-gate 14ab25eeb5Syz #if defined(__STDC__) || defined(__GNUC__) || defined(_AIX51) 157c478bd9Sstevel@tonic-gate # define SIOCLOOKUPADDTABLE _IOWR('r', 60, struct iplookupop) 167c478bd9Sstevel@tonic-gate # define SIOCLOOKUPDELTABLE _IOWR('r', 61, struct iplookupop) 17ab25eeb5Syz # define SIOCLOOKUPSTAT _IOWR('r', 64, struct iplookupop) 18ab25eeb5Syz # define SIOCLOOKUPSTATW _IOW('r', 64, struct iplookupop) 197c478bd9Sstevel@tonic-gate # define SIOCLOOKUPFLUSH _IOWR('r', 65, struct iplookupflush) 20ab25eeb5Syz # define SIOCLOOKUPADDNODE _IOWR('r', 67, struct iplookupop) 21ab25eeb5Syz # define SIOCLOOKUPADDNODEW _IOW('r', 67, struct iplookupop) 22ab25eeb5Syz # define SIOCLOOKUPDELNODE _IOWR('r', 68, struct iplookupop) 23ab25eeb5Syz # define SIOCLOOKUPDELNODEW _IOW('r', 68, struct iplookupop) 247c478bd9Sstevel@tonic-gate #else 257c478bd9Sstevel@tonic-gate # define SIOCLOOKUPADDTABLE _IOWR(r, 60, struct iplookupop) 267c478bd9Sstevel@tonic-gate # define SIOCLOOKUPDELTABLE _IOWR(r, 61, struct iplookupop) 27ab25eeb5Syz # define SIOCLOOKUPSTAT _IOWR(r, 64, struct iplookupop) 28ab25eeb5Syz # define SIOCLOOKUPSTATW _IOW(r, 64, struct iplookupop) 297c478bd9Sstevel@tonic-gate # define SIOCLOOKUPFLUSH _IOWR(r, 65, struct iplookupflush) 30ab25eeb5Syz # define SIOCLOOKUPADDNODE _IOWR(r, 67, struct iplookupop) 31ab25eeb5Syz # define SIOCLOOKUPADDNODEW _IOW(r, 67, struct iplookupop) 32ab25eeb5Syz # define SIOCLOOKUPDELNODE _IOWR(r, 68, struct iplookupop) 33ab25eeb5Syz # define SIOCLOOKUPDELNODEW _IOW(r, 68, struct iplookupop) 347c478bd9Sstevel@tonic-gate #endif 357c478bd9Sstevel@tonic-gate 367c478bd9Sstevel@tonic-gate typedef struct iplookupop { 377c478bd9Sstevel@tonic-gate int iplo_type; /* IPLT_* */ 387c478bd9Sstevel@tonic-gate int iplo_unit; /* IPL_LOG* */ 397c478bd9Sstevel@tonic-gate u_int iplo_arg; 407c478bd9Sstevel@tonic-gate char iplo_name[FR_GROUPLEN]; 417c478bd9Sstevel@tonic-gate size_t iplo_size; /* sizeof struct at iplo_struct */ 427c478bd9Sstevel@tonic-gate void *iplo_struct; 437c478bd9Sstevel@tonic-gate } iplookupop_t; 447c478bd9Sstevel@tonic-gate 457c478bd9Sstevel@tonic-gate typedef struct iplookupflush { 467c478bd9Sstevel@tonic-gate int iplf_type; /* IPLT_* */ 477c478bd9Sstevel@tonic-gate int iplf_unit; /* IPL_LOG* */ 487c478bd9Sstevel@tonic-gate u_int iplf_arg; 497c478bd9Sstevel@tonic-gate size_t iplf_count; 507c478bd9Sstevel@tonic-gate char iplf_name[FR_GROUPLEN]; 517c478bd9Sstevel@tonic-gate } iplookupflush_t; 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gate typedef struct iplookuplink { 547c478bd9Sstevel@tonic-gate int ipll_type; /* IPLT_* */ 557c478bd9Sstevel@tonic-gate int ipll_unit; /* IPL_LOG* */ 567c478bd9Sstevel@tonic-gate u_int ipll_num; 577c478bd9Sstevel@tonic-gate char ipll_group[FR_GROUPLEN]; 587c478bd9Sstevel@tonic-gate } iplookuplink_t; 597c478bd9Sstevel@tonic-gate 607c478bd9Sstevel@tonic-gate #define IPLT_ALL -1 617c478bd9Sstevel@tonic-gate #define IPLT_NONE 0 627c478bd9Sstevel@tonic-gate #define IPLT_POOL 1 637c478bd9Sstevel@tonic-gate #define IPLT_HASH 2 647c478bd9Sstevel@tonic-gate 657c478bd9Sstevel@tonic-gate #define IPLT_ANON 0x80000000 667c478bd9Sstevel@tonic-gate 67*f4b3ec61Sdh 68*f4b3ec61Sdh typedef union { 69*f4b3ec61Sdh struct iplookupiterkey { 70*f4b3ec61Sdh char ilik_ival; 71*f4b3ec61Sdh u_char ilik_type; /* IPLT_* */ 72*f4b3ec61Sdh u_char ilik_otype; 73*f4b3ec61Sdh char ilik_unit; /* IPL_LOG* */ 74*f4b3ec61Sdh } ilik_unstr; 75*f4b3ec61Sdh u_32_t ilik_key; 76*f4b3ec61Sdh } iplookupiterkey_t; 77*f4b3ec61Sdh 78*f4b3ec61Sdh typedef struct ipflookupiter { 79*f4b3ec61Sdh void *ili_data; 80*f4b3ec61Sdh iplookupiterkey_t ili_lkey; 81*f4b3ec61Sdh char ili_name[FR_GROUPLEN]; 82*f4b3ec61Sdh } ipflookupiter_t; 83*f4b3ec61Sdh 84*f4b3ec61Sdh #define ili_key ili_lkey.ilik_key 85*f4b3ec61Sdh #define ili_ival ili_lkey.ilik_unstr.ilik_ival 86*f4b3ec61Sdh #define ili_unit ili_lkey.ilik_unstr.ilik_unit 87*f4b3ec61Sdh #define ili_type ili_lkey.ilik_unstr.ilik_type 88*f4b3ec61Sdh #define ili_otype ili_lkey.ilik_unstr.ilik_otype 89*f4b3ec61Sdh 90*f4b3ec61Sdh #define IPFLOOKUPITER_LIST 0 91*f4b3ec61Sdh #define IPFLOOKUPITER_NODE 1 92*f4b3ec61Sdh 93*f4b3ec61Sdh 94*f4b3ec61Sdh extern int ip_lookup_init __P((ipf_stack_t *)); 95*f4b3ec61Sdh extern int ip_lookup_ioctl __P((caddr_t, ioctlcmd_t, int, int, void *, ipf_stack_t *)); 96*f4b3ec61Sdh extern void ip_lookup_unload __P((ipf_stack_t *)); 97*f4b3ec61Sdh extern void ip_lookup_deref __P((int, void *, ipf_stack_t *)); 98*f4b3ec61Sdh extern int ip_lookup_iterate __P((void *, int, void *, ipf_stack_t *)); 99*f4b3ec61Sdh extern void ip_lookup_iterderef __P((u_32_t, void *, ipf_stack_t *)); 1007c478bd9Sstevel@tonic-gate 1017c478bd9Sstevel@tonic-gate #endif /* __IP_LOOKUP_H__ */ 102