1 | #ifndef READ_ACCESS_CONTROL
2 | #define READ_ACCESS_CONTROL
3 |
4 | /***************************************
5 | $Revision: 1.3 $
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 */
54 | short maxdenials; /* before the permanent ban is set */
55 | char deny; /* THE ban itself */
56 | char trustpass; /* has power to pass ip addresses */
57 | } acl_st;
58 |
59 |
60 | /* Accounting == counters */
61 | typedef struct {
62 | int connections;
63 | int denials;
64 | int queries;
65 | int public_objects; /* used also for credit, -1 in credit is unlimited */
66 | int private_objects; /* used also for credit, -1 in credit is unlimited */
67 | int private_bonus; /* maintained only in runtime tree */
68 | } acc_st;
69 |
70 |
71 | #define ACC_PLUS 0
72 | #define ACC_MINUS 1
73 |
74 | void AC_init();
75 | void AC_log(char *hostaddress);
76 | char *AC_to_string();
77 | char *AC_hostinfo_to_string();
78 |
79 |
80 | /* MB */
81 | er_ret_t AC_build(void);
82 | er_ret_t AC_fetch_acc( ip_addr_t *, acc_st *, int );
83 | er_ret_t AC_check_acl( ip_addr_t *, acc_st *, acc_st *, acc_st *, acl_st *);
84 | void AC_acc_addup(acc_st *, acc_st *, int);
85 | er_ret_t AC_commit(ip_addr_t *, acc_st *);
86 | er_ret_t AC_rxwalkhook_print(rx_node_t *node, int level, int nodecounter, void *con);
87 | er_ret_t AC_rxwalkhook_print_acl(rx_node_t *node, int level, int nodecounter, void *con);
88 |
89 | /* declare global accounting trees */
90 | EXTDEF rx_tree_t *act_runtime;
91 | EXTDEF rx_tree_t *act_hour;
92 | EXTDEF rx_tree_t *act_minute;
93 |
94 | /* declare global access control list tree */
95 | EXTDEF rx_tree_t *act_acl;
96 |
97 |
98 | #endif /* READ_ACCESS_CONTROL */