1    | /*
2    |  * Layer Two Tunnelling Protocol Daemon
3    |  * Copyright (C) 1998 Adtran, Inc.
4    |  *
5    |  * Mark Spencer
6    |  *
7    |  * This software is distributed under the terms
8    |  * of the GPL, which you should have received
9    |  * along with this source.
10   |  *
11   |  * Authorization, Accounting, and Access control
12   |  *
13   |  */
14   | 
15   | #ifndef _AAA_H
16   | #define _AAA_H
17   | #include "md5.h"
18   | 
19   | #define ADDR_HASH_SIZE 256
20   | #define MD_SIG_SIZE 16
21   | #define MAX_VECTOR_SIZE 1024
22   | #define VECTOR_SIZE 16
23   | 
24   | #define STATE_NONE 		 0
25   | #define STATE_CHALLENGED 1
26   | #define STATE_COMPLETE	 2
27   | 
28   | struct addr_ent
29   | {
30   |     unsigned int addr;
31   |     struct addr_ent *next;
32   | };
33   | 
34   | struct challenge
35   | {
36   |     struct MD5Context md5;
37   |     unsigned char ss;		/* State we're sending in */
38   |     unsigned char secret[MAXSTRLEN];	/* The shared secret */
39   |     unsigned char challenge[MD_SIG_SIZE];	/* The original challenge */
40   |     unsigned char response[MD_SIG_SIZE];	/* What we expect as a respsonse */
41   |     unsigned char reply[MD_SIG_SIZE];	/* What the peer sent */
42   |     unsigned char *vector;
43   |     unsigned int vector_len;
44   |     int state;			/* What state is challenge in? */
45   | };
46   | 
47   | extern struct lns *get_lns (struct tunnel *);
48   | extern struct addr_ent *uaddr[];
49   | extern unsigned int get_addr (struct iprange *);
50   | extern void reserve_addr (unsigned int);
51   | extern void unreserve_addr (unsigned int);
52   | extern void init_addr ();
53   | extern int handle_challenge (struct tunnel *, struct challenge *);
54   | extern void mk_challenge (char *, int);
55   | #endif