X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=src%2Finclude%2Frealms.h;h=0b00a1b78f9c8b303b8e54f70c08d7695e4eff2f;hb=e2eaf9194b16fdd15ebf274aafd05edc9fefb4bb;hp=c94f3ef4a62fa77a9ec59741b1b219d8a13639d2;hpb=66e72f96e307f416064ba1ea485501025cb32c1d;p=freeradius.git diff --git a/src/include/realms.h b/src/include/realms.h index c94f3ef..0b00a1b 100644 --- a/src/include/realms.h +++ b/src/include/realms.h @@ -12,9 +12,16 @@ #include RCSIDH(realms_h, "$Id$") +#ifdef __cplusplus +extern "C" { +#endif + #define HOME_TYPE_INVALID (0) #define HOME_TYPE_AUTH (1) #define HOME_TYPE_ACCT (2) +#ifdef WITH_COA +#define HOME_TYPE_COA (3) +#endif #define HOME_PING_CHECK_NONE (0) #define HOME_PING_CHECK_STATUS_SERVER (1) @@ -28,27 +35,37 @@ typedef struct home_server { const char *name; const char *hostname; + const char *server; /* for internal proxying */ - lrad_ipaddr_t ipaddr; - + fr_ipaddr_t ipaddr; int port; int type; /* auth/acct */ + int proto; + int max_connections; + int num_connections; /* protected by proxy mutex */ + int max_requests; /* for one connection */ + int lifetime; + int idle_timeout; + /* * Maybe also have list of source IP/ports, && socket? */ const char *secret; - lrad_event_t *ev; + fr_event_t *ev; struct timeval when; int response_window; + int no_response_fail; int max_outstanding; /* don't overload it */ int currently_outstanding; - uint32_t total_requests_sent; + int message_authenticator; + time_t last_packet; + struct timeval revive_time; struct timeval zombie_period_start; int zombie_period; /* unresponsive for T, mark it dead */ @@ -65,6 +82,21 @@ typedef struct home_server { int revive_interval; /* if it doesn't support pings */ CONF_SECTION *cs; +#ifdef WITH_COA + int coa_irt; + int coa_mrc; + int coa_mrt; + int coa_mrd; +#endif +#ifdef WITH_STATS + int number; + + fr_ipaddr_t src_ipaddr; /* preferred source IP address */ + + fr_stats_t stats; + + fr_stats_ema_t ema; +#endif } home_server; @@ -85,7 +117,9 @@ typedef struct home_pool_t { int server_type; CONF_SECTION *cs; - const char *virtual_server; + const char *virtual_server; /* for pre/post-proxy */ + + home_server *fallback; int num_home_servers; home_server *servers[1]; @@ -103,9 +137,21 @@ typedef struct _realm { int realms_init(CONF_SECTION *config); void realms_free(void); -REALM *realm_find(const char *name); +REALM *realm_find(const char *name); /* name is from a packet */ +REALM *realm_find2(const char *name); /* ... with name taken from realm_find */ home_server *home_server_ldb(const char *realmname, home_pool_t *pool, REQUEST *request); -home_server *home_server_find(lrad_ipaddr_t *ipaddr, int port); +home_server *home_server_find(fr_ipaddr_t *ipaddr, int port, int proto); +#ifdef WITH_COA +home_server *home_server_byname(const char *name, int type); +#endif +#ifdef WITH_STATS +home_server *home_server_bynumber(int number); +#endif +home_pool_t *home_pool_byname(const char *name, int type); + +#ifdef __cplusplus +} +#endif #endif /* REALMS_H */