1
0
This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
TP-Link_Archer-XR500v/EN7526G_3.18Kernel_SDK/apps/public/xl2tpd/xl2tpd-1.2.4/file.h
2024-07-22 01:58:46 -03:00

166 lines
6.5 KiB
C
Executable File

/*
* Layer Two Tunnelling Protocol Daemon
* Copyright (C) 1998 Adtran, Inc.
* Copyright (C) 2002 Jeff McAdams
*
* Mark Spencer
*
* This software is distributed under the terms
* of the GPL, which you should have received
* along with this source.
*
* File format handling header file
*
*/
#ifndef _FILE_H
#define _FILE_H
#define STRLEN 80 /* Length of a string */
/* Definition of a keyword */
struct keyword
{
char *keyword;
int (*handler) (char *word, char *value, int context, void *item);
};
struct iprange
{
unsigned int start;
unsigned int end;
int sense;
struct iprange *next;
};
struct host
{
char hostname[STRLEN];
int port;
struct host *next;
};
#define CONTEXT_GLOBAL 1
#define CONTEXT_LNS 2
#define CONTEXT_LAC 3
#define CONTEXT_DEFAULT 256
#define SENSE_ALLOW -1
#define SENSE_DENY 0
#ifndef DEFAULT_AUTH_FILE
#define DEFAULT_AUTH_FILE "/etc/xl2tpd/l2tp-secrets"
#endif
#ifndef DEFAULT_CONFIG_FILE
#define DEFAULT_CONFIG_FILE "/etc/xl2tpd/xl2tpd.conf"
#endif
#define ALT_DEFAULT_AUTH_FILE "/etc/l2tpd/l2tp-secrets"
#define ALT_DEFAULT_CONFIG_FILE "/etc/l2tp/l2tpd.conf"
#define DEFAULT_PID_FILE "/var/run/xl2tpd.pid"
/* Definition of an LNS */
struct lns
{
struct lns *next;
int exclusive; /* Only one tunnel per host? */
int active; /* Is this actively in use? */
unsigned int localaddr; /* Local IP for PPP connections */
int tun_rws; /* Receive window size (tunnel) */
int call_rws; /* Call rws */
int hbit; /* Permit hidden AVP's? */
int lbit; /* Use the length field? */
int challenge; /* Challenge authenticate the peer? */
int authpeer; /* Authenticate our peer? */
int authself; /* Authenticate ourselves? */
char authname[STRLEN]; /* Who we authenticate as */
char peername[STRLEN]; /* Force peer name to this */
char hostname[STRLEN]; /* Hostname to report */
char entname[STRLEN]; /* Name of this entry */
struct iprange *lacs; /* Hosts permitted to connect */
struct iprange *range; /* Range of IP's we provide */
int assign_ip; /* Do we actually provide IP addresses? */
int passwdauth; /* Authenticate by passwd file? (or PAM) */
int pap_require; /* Require PAP auth for PPP */
int chap_require; /* Require CHAP auth for PPP */
int pap_refuse; /* Refuse PAP authentication for us */
int chap_refuse; /* Refuse CHAP authentication for us */
int idle; /* Idle timeout in seconds */
unsigned int pridns; /* Primary DNS server */
unsigned int secdns; /* Secondary DNS server */
unsigned int priwins; /* Primary WINS server */
unsigned int secwins; /* Secondary WINS server */
int proxyarp; /* Use proxy-arp? */
int proxyauth; /* Allow proxy authentication? */
int debug; /* Debug PPP? */
char pppoptfile[STRLEN]; /* File containing PPP options */
struct tunnel *t; /* Tunnel of this, if it's ready */
};
struct lac
{
struct lac *next;
struct host *lns; /* LNS's we can connect to */
struct schedule_entry *rsched;
int tun_rws; /* Receive window size (tunnel) */
int call_rws; /* Call rws */
int active; /* Is this connection in active use? */
int hbit; /* Permit hidden AVP's? */
int lbit; /* Use the length field? */
int challenge; /* Challenge authenticate the peer? */
unsigned int localaddr; /* Local IP address */
unsigned int remoteaddr; /* Force remote address to this */
char authname[STRLEN]; /* Who we authenticate as */
char password[STRLEN]; /* Password to authenticate with */
char peername[STRLEN]; /* Force peer name to this */
char hostname[STRLEN]; /* Hostname to report */
char entname[STRLEN]; /* Name of this entry */
int authpeer; /* Authenticate our peer? */
int authself; /* Authenticate ourselves? */
int pap_require; /* Require PAP auth for PPP */
int chap_require; /* Require CHAP auth for PPP */
int pap_refuse; /* Refuse PAP authentication for us */
int chap_refuse; /* Refuse CHAP authentication for us */
int idle; /* Idle timeout in seconds */
int autodial; /* Try to dial immediately? */
int defaultroute; /* Use as default route? */
int redial; /* Redial if disconnected */
int rmax; /* Maximum # of consecutive redials */
int rtries; /* # of tries so far */
int rtimeout; /* Redial every this many # of seconds */
char pppoptfile[STRLEN]; /* File containing PPP options */
int debug;
struct tunnel *t; /* Our tunnel */
struct call *c; /* Our call */
};
struct global
{
unsigned int listenaddr; /* IP address to bind to */
int port; /* Port number to listen to */
char authfile[STRLEN]; /* File containing authentication info */
char altauthfile[STRLEN]; /* File containing authentication info */
char configfile[STRLEN]; /* File containing configuration info */
char altconfigfile[STRLEN]; /* File containing configuration info */
char pidfile[STRLEN]; /* File containing the pid number*/
char controlfile[STRLEN]; /* Control file name (named pipe) */
int daemon; /* Use daemon mode? */
int accesscontrol; /* Use access control? */
int forceuserspace; /* Force userspace? */
int packet_dump; /* Dump (print) all packets? */
int debug_avp; /* Print AVP debugging info? */
int debug_network; /* Print network debugging info? */
int debug_tunnel; /* Print tunnel debugging info? */
int debug_state; /* Print FSM debugging info? */
int ipsecsaref;
};
extern struct global gconfig; /* Global configuration options */
extern struct lns *lnslist; /* All LNS entries */
extern struct lac *laclist; /* All LAC entries */
extern struct lns *deflns; /* Default LNS config */
extern struct lac *deflac; /* Default LAC config */
extern int init_config (); /* Read in the config file */
#endif