#ifndef _LOCALCONF_H
#define _LOCALCONF_H
#if !TARGET_OS_EMBEDDED
#include <vproc.h>
#endif
#define LC_DEFAULT_CF SYSCONFDIR "/racoon.conf"
#define LC_PATHTYPE_INCLUDE 0
#define LC_PATHTYPE_PSK 1
#define LC_PATHTYPE_CERT 2
#define LC_PATHTYPE_BACKUPSA 3
#define LC_PATHTYPE_SCRIPT 4
#define LC_PATHTYPE_PIDFILE 5
#define LC_PATHTYPE_LOGFILE 6
#define LC_PATHTYPE_MAX 7
#define LC_DEFAULT_PAD_MAXSIZE 20
#define LC_DEFAULT_PAD_RANDOM TRUE
#define LC_DEFAULT_PAD_RANDOMLEN FALSE
#define LC_DEFAULT_PAD_STRICT FALSE
#define LC_DEFAULT_PAD_EXCLTAIL TRUE
#define LC_DEFAULT_RETRY_COUNTER 5
#define LC_DEFAULT_RETRY_INTERVAL 2
#define LC_DEFAULT_COUNT_PERSEND 1
#define LC_DEFAULT_RETRY_CHECKPH1 30
#define LC_DEFAULT_WAIT_PH2COMPLETE 30
#define LC_DEFAULT_NATT_KA_INTERVAL 20
#define LC_DEFAULT_SECRETSIZE 16
#define LC_IDENTTYPE_MAX 5
#define LC_GSSENC_UTF16LE 0
#define LC_GSSENC_LATIN1 1
#define LC_GSSENC_MAX 2
#define LC_AUTOEXITSTATE_SET 0x00000001
#define LC_AUTOEXITSTATE_CLIENT 0x00000010
#define LC_AUTOEXITSTATE_ENABLED 0x00000011
struct vpnctl_socket_elem {
LIST_ENTRY(vpnctl_socket_elem) chain;
int sock;
LIST_HEAD(_bound_addrs, bound_addr) bound_addresses;
};
struct bound_addr {
LIST_ENTRY(bound_addr) chain;
u_int32_t address;
vchar_t *user_id;
vchar_t *user_pw;
vchar_t *version;
};
struct redirect {
LIST_ENTRY(redirect) chain;
u_int32_t cluster_address;
u_int32_t redirect_address;
u_int16_t force;
};
struct saved_msg_elem {
TAILQ_ENTRY(saved_msg_elem) chain;
void* msg;
};
struct localconf {
char *racoon_conf;
uid_t uid;
gid_t gid;
char *chroot;
u_int16_t port_isakmp;
u_int16_t port_isakmp_natt;
u_int16_t port_admin;
int default_af;
int sock_admin;
int sock_vpncontrol;
int sock_pfkey;
int rtsock;
LIST_HEAD(_vpnctl_socket_elem_, vpnctl_socket_elem) vpnctl_comm_socks;
LIST_HEAD(_redirect_, redirect) redirect_addresses;
int auto_exit_state;
int auto_exit_delay;
struct sched *auto_exit_sched;
TAILQ_HEAD(_saved_msg_elem, saved_msg_elem) saved_msg_queue;
int autograbaddr;
struct myaddrs *myaddrs;
char *logfile_param;
char *pathinfo[LC_PATHTYPE_MAX];
vchar_t *ident[LC_IDENTTYPE_MAX];
int pad_random;
int pad_randomlen;
int pad_maxsize;
int pad_strict;
int pad_excltail;
int retry_counter;
int retry_interval;
int count_persend;
int retry_checkph1;
int wait_ph2complete;
int natt_ka_interval;
vchar_t *ext_nat_id;
int secret_size;
int strict_address;
int complex_bundle;
int gss_id_enc;
#if !TARGET_OS_EMBEDDED
vproc_transaction_t vt;
#endif
};
extern struct localconf *lcconf;
extern void initlcconf __P((void));
extern void flushlcconf __P((void));
extern vchar_t *getpskbyname __P((vchar_t *));
extern vchar_t *getpskbyaddr __P((struct sockaddr_storage *));
#if HAVE_KEYCHAIN
extern vchar_t *getpskfromkeychain __P((const char *, u_int8_t, int, vchar_t *));
#endif
extern void getpathname __P((char *, int, int, const char *));
extern int sittype2doi __P((int));
extern int doitype2doi __P((int));
extern vchar_t *getpsk __P((const char *, const int));
#endif