X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Finclude%2Fradiusd.h;h=a7b1278106234ab80266bebd11208a2b7fd08a43;hb=3ab506f60fb46010a;hp=52b5cbf5d0334e26d55ec5d29fb2565408541fac;hpb=5ee8707a30f718fdb4560a91a74dcf850bfdf198;p=freeradius.git diff --git a/src/include/radiusd.h b/src/include/radiusd.h index 52b5cbf..a7b1278 100644 --- a/src/include/radiusd.h +++ b/src/include/radiusd.h @@ -89,6 +89,15 @@ typedef struct auth_req REQUEST; #ifndef WITHOUT_COMMAND_SOCKET #ifdef HAVE_SYS_UN_H #define WITH_COMMAND_SOCKET (1) +#else +#define WITHOUT_COMMAND_SOCKET (1) +#endif +#endif + +#ifndef WITHOUT_COA +#define WITH_COA (1) +#ifndef WITH_PROXY +#error WITH_COA requires WITH_PROXY #endif #endif @@ -127,6 +136,13 @@ typedef struct radclient { time_t created; time_t last_new_client; char *client_server; + int rate_limit; +#endif + +#ifdef WITH_COA + char *coa_name; + home_server *coa_server; + home_pool_t *coa_pool; #endif } RADCLIENT; @@ -156,6 +172,9 @@ typedef enum RAD_LISTEN_TYPE { #ifdef WITH_COMMAND_SOCKET RAD_LISTEN_COMMAND, #endif +#ifdef WITH_COA + RAD_LISTEN_COA, +#endif RAD_LISTEN_MAX } RAD_LISTEN_TYPE; @@ -193,7 +212,7 @@ struct auth_req { pthread_t child_pid; #endif time_t timestamp; - int number; /* internal server number */ + unsigned int number; /* internal server number */ rad_listen_t *listener; #ifdef WITH_PROXY @@ -239,6 +258,10 @@ struct auth_req { const char *server; REQUEST *parent; radlog_func_t radlog; /* logging function, if set */ +#ifdef WITH_COA + REQUEST *coa; + int num_coa_requests; +#endif }; /* REQUEST typedef */ #define RAD_REQUEST_OPTION_NONE (0) @@ -278,7 +301,7 @@ typedef struct pair_list { typedef int (*rad_listen_recv_t)(rad_listen_t *, RAD_REQUEST_FUNP *, REQUEST **); typedef int (*rad_listen_send_t)(rad_listen_t *, REQUEST *); -typedef int (*rad_listen_print_t)(rad_listen_t *, char *, size_t); +typedef int (*rad_listen_print_t)(const rad_listen_t *, char *, size_t); typedef int (*rad_listen_encode_t)(rad_listen_t *, REQUEST *); typedef int (*rad_listen_decode_t)(rad_listen_t *, REQUEST *); @@ -348,6 +371,8 @@ typedef struct main_config_t { radlog_dest_t radlog_dest; CONF_SECTION *config; const char *name; + const char *auth_badpass_msg; + const char *auth_goodpass_msg; } MAIN_CONFIG_T; #define DEBUG if(debug_flag)log_debug @@ -468,6 +493,7 @@ int rad_checkfilename(const char *filename); void *rad_malloc(size_t size); /* calls exit(1) on error! */ REQUEST *request_alloc(void); REQUEST *request_alloc_fake(REQUEST *oldreq); +REQUEST *request_alloc_coa(REQUEST *request); int request_data_add(REQUEST *request, void *unique_ptr, int unique_int, void *opaque, void (*free_opaque)(void *)); @@ -570,7 +596,7 @@ void xlat_unregister(const char *module, RAD_XLAT_FUNC func); void xlat_free(void); /* threads.c */ -extern int thread_pool_init(CONF_SECTION *cs, int spawn_flag); +extern int thread_pool_init(CONF_SECTION *cs, int *spawn_flag); extern int thread_pool_addrequest(REQUEST *, RAD_REQUEST_FUNP); extern pid_t rad_fork(void); extern pid_t rad_waitpid(pid_t pid, int *status); @@ -590,6 +616,7 @@ extern struct main_config_t mainconfig; int read_mainconfig(int reload); int free_mainconfig(void); +void hup_mainconfig(void); void fr_suid_down(void); void fr_suid_up(void); void fr_suid_down_permanent(void); @@ -597,7 +624,7 @@ void fr_suid_down_permanent(void); /* listen.c */ void listen_free(rad_listen_t **head); int listen_init(CONF_SECTION *cs, rad_listen_t **head); -rad_listen_t *proxy_new_listener(void); +rad_listen_t *proxy_new_listener(fr_ipaddr_t *ipaddr, int exists); RADCLIENT *client_listener_find(const rad_listen_t *listener, const fr_ipaddr_t *ipaddr, int src_port); #ifdef WITH_STATS