1    | #ifndef READ_ACCESS_CONTROL
2    | #define READ_ACCESS_CONTROL
3    | 
4    | /***************************************
5    |   $Revision: 1.5 $
6    | 
7    |   Access Control module (ac).
8    | 
9    |   Status: NOT REVUED, NOT TESTED
10   | 
11   |   +html+ <DL COMPACT>
12   |   +html+ <DT>Online References:
13   |   +html+ <DD><UL>
14   |   +html+ </UL>
15   |   +html+ </DL>
16   |   +html+ <PRE>
17   |   +html+ </PRE>
18   |  
19   |   ******************/ /******************
20   |   Copyright (c) 1999                              RIPE NCC
21   |  
22   |   All Rights Reserved
23   |   
24   |   Permission to use, copy, modify, and distribute this software and its
25   |   documentation for any purpose and without fee is hereby granted,
26   |   provided that the above copyright notice appear in all copies and that
27   |   both that copyright notice and this permission notice appear in
28   |   supporting documentation, and that the name of the author not be
29   |   used in advertising or publicity pertaining to distribution of the
30   |   software without specific, written prior permission.
31   |   
32   |   THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
33   |   ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL
34   |   AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
35   |   DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
36   |   AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
37   |   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
38   |   ***************************************/
39   | 
40   | #include "erroutines.h"
41   | #include "iproutines.h"
42   | #include "rxroutines.h"
43   | 
44   | 
45   | #ifdef AC_IMPL
46   | #define EXTDEF 
47   | #else
48   | #define EXTDEF extern
49   | #endif
50   | 
51   | /* Access control structure */
52   | typedef struct {
53   |   unsigned maxbonus;    /* (before temporary denial) -1 == unlimited */
54   |   int      maxpublic;   /* max# of public objects, -1 == unlimited (default) */
55   |   short    maxdenials;  /* before the permanent ban is set */
56   |   char     deny;        /* THE ban itself */
57   |   char     trustpass;   /* has power to pass ip addresses */
58   | } acl_st;
59   | 
60   | 
61   | /* Accounting == counters */
62   | typedef struct {
63   |   int connections;
64   |   int addrpasses;
65   |   int denials;
66   |   int queries;
67   |   int public_objects;     
68   |   int private_objects;    
69   |   int private_bonus;      /* maintained only in runtime tree */
70   | } acc_st;
71   | 
72   | 
73   | #define ACC_PLUS 0
74   | #define ACC_MINUS 1
75   | 
76   | void AC_init();
77   | void AC_log(char *hostaddress);
78   | char *AC_to_string();
79   | char *AC_hostinfo_to_string();
80   | 
81   | 
82   | /* MB */
83   | er_ret_t AC_build(void);
84   | er_ret_t AC_fetch_acc( ip_addr_t *, acc_st * );
85   | er_ret_t AC_check_acl( ip_addr_t *, acc_st *, acl_st *);
86   | void AC_acc_addup(acc_st *, acc_st *, int);
87   | er_ret_t AC_commit(ip_addr_t *, acc_st *,acl_st * );
88   | er_ret_t AC_rxwalkhook_print(rx_node_t *node, int level, int nodecounter, void *con);
89   | er_ret_t AC_rxwalkhook_print_acl(rx_node_t *node, int level, int nodecounter, void *con);
90   | er_ret_t AC_acc_load(void);
91   | 
92   | 
93   | /* declare global accounting trees */
94   | EXTDEF rx_tree_t  *act_runtime;
95   | EXTDEF rx_tree_t  *act_hour;
96   | EXTDEF rx_tree_t  *act_minute;
97   | 
98   | /* declare global access control list tree */
99   | EXTDEF rx_tree_t  *act_acl;
100  | 
101  | #endif /* READ_ACCESS_CONTROL */