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   |  * File format handling header file
12   |  *
13   |  */
14   | 
15   | #ifndef _FILE_H
16   | #define _FILE_H
17   | 
18   | #define STRLEN 80		/* Length of a string */
19   | 
20   | /* Definition of a keyword */
21   | struct keyword
22   | {
23   |     char *keyword;
24   |     int (*handler) (char *word, char *value, int context, void *item);
25   | };
26   | 
27   | struct iprange
28   | {
29   |     unsigned int start;
30   |     unsigned int end;
31   |     int sense;
32   |     struct iprange *next;
33   | };
34   | 
35   | struct host
36   | {
37   |     char hostname[STRLEN];
38   |     int port;
39   |     struct host *next;
40   | };
41   | 
42   | 
43   | #define CONTEXT_GLOBAL 	1
44   | #define CONTEXT_LNS	   	2
45   | #define CONTEXT_LAC		3
46   | #define CONTEXT_DEFAULT	256
47   | 
48   | #define SENSE_ALLOW -1
49   | #define SENSE_DENY 0
50   | 
51   | #define DEFAULT_AUTH_FILE "/etc/l2tp/l2tp-secrets"
52   | #define ALT_DEFAULT_AUTH_FILE "/etc/l2tpd/l2tp-secrets"
53   | #define CONFIG_FILE "/etc/l2tp/l2tpd.conf"
54   | #define ALT_CONFIG_FILE "/etc/l2tpd/l2tpd.conf"
55   | 
56   | /* Definition of an LNS */
57   | struct lns
58   | {
59   |     struct lns *next;
60   |     int exclusive;		/* Only one tunnel per host? */
61   |     int active;			/* Is this actively in use? */
62   |     unsigned int localaddr;	/* Local IP for PPP connections */
63   |     int tun_rws;		/* Receive window size (tunnel) */
64   |     int call_rws;		/* Call rws */
65   |     int hbit;			/* Permit hidden AVP's? */
66   |     int lbit;			/* Use the length field? */
67   |     int challenge;		/* Challenge authenticate the peer? */
68   |     int authpeer;		/* Authenticate our peer? */
69   |     int authself;		/* Authenticate ourselves? */
70   |     char authname[STRLEN];	/* Who we authenticate as */
71   |     char peername[STRLEN];	/* Force peer name to this */
72   |     char hostname[STRLEN];	/* Hostname to report */
73   |     char entname[STRLEN];	/* Name of this entry */
74   |     struct iprange *lacs;	/* Hosts permitted to connect */
75   |     struct iprange *range;	/* Range of IP's we provide */
76   |     int passwdauth;		/* Authenticate by passwd file? (or PAM) */
77   |     int pap_require;		/* Require PAP auth for PPP */
78   |     int chap_require;		/* Require CHAP auth for PPP */
79   |     int pap_refuse;		/* Refuse PAP authentication for us */
80   |     int chap_refuse;		/* Refuse CHAP authentication for us */
81   |     int idle;			/* Idle timeout in seconds */
82   |     unsigned int pridns;	/* Primary DNS server */
83   |     unsigned int secdns;	/* Secondary DNS server */
84   |     unsigned int priwins;	/* Primary WINS server */
85   |     unsigned int secwins;	/* Secondary WINS server */
86   |     int proxyarp;		/* Use proxy-arp? */
87   |     int proxyauth;		/* Allow proxy authentication? */
88   |     int debug;			/* Debug PPP? */
89   |     char pppoptfile[STRLEN];	/* File containing PPP options */
90   |     struct tunnel *t;		/* Tunnel of this, if it's ready */
91   | };
92   | 
93   | struct lac
94   | {
95   |     struct lac *next;
96   |     struct host *lns;		/* LNS's we can connect to */
97   |     struct schedule_entry *rsched;
98   |     int tun_rws;		/* Receive window size (tunnel) */
99   |     int call_rws;		/* Call rws */
100  |     int active;			/* Is this connection in active use? */
101  |     int hbit;			/* Permit hidden AVP's? */
102  |     int lbit;			/* Use the length field? */
103  |     int challenge;		/* Challenge authenticate the peer? */
104  |     unsigned int localaddr;	/* Local IP address */
105  |     unsigned int remoteaddr;	/* Force remote address to this */
106  |     char authname[STRLEN];	/* Who we authenticate as */
107  |     char peername[STRLEN];	/* Force peer name to this */
108  |     char hostname[STRLEN];	/* Hostname to report */
109  |     char entname[STRLEN];	/* Name of this entry */
110  |     int authpeer;		/* Authenticate our peer? */
111  |     int authself;		/* Authenticate ourselves? */
112  |     int pap_require;		/* Require PAP auth for PPP */
113  |     int chap_require;		/* Require CHAP auth for PPP */
114  |     int pap_refuse;		/* Refuse PAP authentication for us */
115  |     int chap_refuse;		/* Refuse CHAP authentication for us */
116  |     int idle;			/* Idle timeout in seconds */
117  |     int autodial;		/* Try to dial immediately? */
118  |     int defaultroute;		/* Use as default route? */
119  |     int redial;			/* Redial if disconnected */
120  |     int rmax;			/* Maximum # of consecutive redials */
121  |     int rtries;			/* # of tries so far */
122  |     int rtimeout;		/* Redial every this many # of seconds */
123  |     char pppoptfile[STRLEN];	/* File containing PPP options */
124  |     int debug;
125  |     struct tunnel *t;		/* Our tunnel */
126  |     struct call *c;		/* Our call */
127  | };
128  | 
129  | struct global
130  | {
131  |     int port;			/* Port number to listen to */
132  |     char authfile[STRLEN];	/* File containing authentication info */
133  |     int accesscontrol;		/* Use access control? */
134  |     int forceuserspace;		/* Force userspace? */
135  | };
136  | 
137  | extern struct global gconfig;	/* Global configuration options */
138  | 
139  | extern struct lns *lnslist;	/* All LNS entries */
140  | extern struct lac *laclist;	/* All LAC entries */
141  | extern struct lns *deflns;	/* Default LNS config */
142  | extern struct lac *deflac;	/* Default LAC config */
143  | extern int init_config ();	/* Read in the config file */
144  | #endif