1 /*        $NetBSD: ip_auth.h,v 1.3 2012/07/22 14:27:51 darrenr Exp $  */
2 
3 /*
4  * Copyright (C) 2012 by Darren Reed.
5  *
6  * See the IPFILTER.LICENCE file for details on licencing.
7  *
8  * Id: ip_auth.h,v 1.1.1.2 2012/07/22 13:45:08 darrenr Exp
9  *
10  */
11 #ifndef _NETINET_IP_AUTH_H_
12 #define _NETINET_IP_AUTH_H_
13 
14 #define FR_NUMAUTH      32
15 
16 typedef struct  frauth {
17           int       fra_age;
18           int       fra_len;
19           int       fra_index;
20           u_32_t    fra_pass;
21           fr_info_t fra_info;
22           char      *fra_buf;
23           u_32_t    fra_flx;
24 #ifdef    MENTAT
25           queue_t   *fra_q;
26           mb_t      *fra_m;
27 #endif
28 } frauth_t;
29 
30 typedef   struct    frauthent  {
31           struct    frentry   fae_fr;
32           struct    frauthent *fae_next;
33           struct    frauthent **fae_pnext;
34           u_long    fae_age;
35           int       fae_ref;
36 } frauthent_t;
37 
38 typedef struct  ipf_authstat {
39           U_QUAD_T  fas_hits;
40           U_QUAD_T  fas_miss;
41           u_long              fas_nospace;
42           u_long              fas_added;
43           u_long              fas_sendfail;
44           u_long              fas_sendok;
45           u_long              fas_queok;
46           u_long              fas_quefail;
47           u_long              fas_expire;
48           frauthent_t         *fas_faelist;
49 } ipf_authstat_t;
50 
51 
52 extern    frentry_t *ipf_auth_check(fr_info_t *, u_32_t *);
53 extern    void      ipf_auth_expire(ipf_main_softc_t *);
54 extern    int       ipf_auth_ioctl(ipf_main_softc_t *, void *, ioctlcmd_t,
55                                             int, int, void *);
56 extern    int       ipf_auth_init(void);
57 extern    int       ipf_auth_main_load(void);
58 extern    int       ipf_auth_main_unload(void);
59 extern    void      ipf_auth_soft_destroy(ipf_main_softc_t *, void *);
60 extern    void      *ipf_auth_soft_create(ipf_main_softc_t *);
61 extern    int       ipf_auth_new(mb_t *, fr_info_t *);
62 extern    int       ipf_auth_precmd(ipf_main_softc_t *, ioctlcmd_t,
63                                              frentry_t *, frentry_t **);
64 extern    void      ipf_auth_unload(ipf_main_softc_t *);
65 extern    int       ipf_auth_waiting(ipf_main_softc_t *);
66 extern    void      ipf_auth_setlock(void *, int);
67 extern    int       ipf_auth_soft_init(ipf_main_softc_t *, void *);
68 extern    int       ipf_auth_soft_fini(ipf_main_softc_t *, void *);
69 extern    u_32_t    ipf_auth_pre_scanlist(ipf_main_softc_t *, fr_info_t *,
70                                                      u_32_t);
71 extern    frentry_t **ipf_auth_rulehead(ipf_main_softc_t *);
72 
73 #endif    /* __IP_AUTH_H__ */
74