Add "extern C {...} to header files for C++ builds.
[freeradius.git] / src / include / radiusd.h
index 24cf81e..92a363b 100644 (file)
@@ -89,6 +89,8 @@ 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
 
@@ -102,6 +104,9 @@ typedef struct auth_req REQUEST;
 #include <freeradius-devel/stats.h>
 #include <freeradius-devel/realms.h>
 
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /*
  *     See util.c
@@ -140,6 +145,7 @@ typedef struct radclient {
        time_t                  created;
        time_t                  last_new_client;
        char                    *client_server;
+       int                     rate_limit;
 #endif
 
 #ifdef WITH_COA
@@ -304,7 +310,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 *);
 
@@ -399,7 +405,9 @@ typedef struct main_config_t {
        int             log_auth_goodpass;
        int             allow_core_dumps;
        int             debug_level;
+#ifdef WITH_PROXY
        int             proxy_requests;
+#endif
        int             reject_delay;
        int             status_server;
        int             max_request_time;
@@ -493,7 +501,7 @@ extern int          debug_flag;
 extern const char      *radacct_dir;
 extern const char      *radlog_dir;
 extern const char      *radlib_dir;
-extern const char      *radius_dir;
+extern char            *radius_dir;
 extern const char      *radius_libdir;
 extern uint32_t                expiration_seconds;
 extern int             log_stripped_names;
@@ -613,10 +621,10 @@ int               radius_exec_program(const char *,  REQUEST *, int,
 int            timestr_match(char *, time_t);
 
 /* valuepair.c */
-int            paircompare_register(int attr, int otherattr,
+int            paircompare_register(unsigned int attr, int otherattr,
                                     RAD_COMPARE_FUNC func,
                                     void *instance);
-void           paircompare_unregister(int attr, RAD_COMPARE_FUNC func);
+void           paircompare_unregister(unsigned int attr, RAD_COMPARE_FUNC func);
 int            paircompare(REQUEST *req, VALUE_PAIR *request, VALUE_PAIR *check,
                            VALUE_PAIR **reply);
 void           pairxlatmove(REQUEST *, VALUE_PAIR **to, VALUE_PAIR **from);
@@ -624,9 +632,9 @@ int radius_compare_vps(REQUEST *request, VALUE_PAIR *check, VALUE_PAIR *vp);
 int radius_callback_compare(REQUEST *req, VALUE_PAIR *request,
                            VALUE_PAIR *check, VALUE_PAIR *check_pairs,
                            VALUE_PAIR **reply_pairs);
-int radius_find_compare(int attribute);
+int radius_find_compare(unsigned int attribute);
 VALUE_PAIR     *radius_paircreate(REQUEST *request, VALUE_PAIR **vps,
-                                 int attribute, int type);
+                                  unsigned int attribute, unsigned int vendor, int type);
 VALUE_PAIR *radius_pairmake(REQUEST *request, VALUE_PAIR **vps,
                            const char *attribute, const char *value,
                            int operator);
@@ -672,14 +680,14 @@ void fr_suid_down_permanent(void);
 void listen_free(rad_listen_t **head);
 int listen_init(CONF_SECTION *cs, rad_listen_t **head);
 int proxy_new_listener(home_server *home, int src_port);
-RADCLIENT *client_listener_find(const rad_listen_t *listener,
+RADCLIENT *client_listener_find(rad_listen_t *listener,
                                const fr_ipaddr_t *ipaddr, int src_port);
 
 #ifdef WITH_STATS
 RADCLIENT_LIST *listener_find_client_list(const fr_ipaddr_t *ipaddr,
                                          int port);
-rad_listen_t *listener_find_byipaddr(const fr_ipaddr_t *ipaddr, int port);
 #endif
+rad_listen_t *listener_find_byipaddr(const fr_ipaddr_t *ipaddr, int port);
 
 /* event.c */
 int radius_event_init(CONF_SECTION *cs, int spawn_flag);
@@ -691,6 +699,8 @@ int received_request(rad_listen_t *listener,
                     RADCLIENT *client);
 REQUEST *received_proxy_response(RADIUS_PACKET *packet);
 int event_new_fd(rad_listen_t *listener);
+void revive_home_server(void *ctx);
+void mark_home_server_dead(home_server *home, struct timeval *when);
 
 /* evaluate.c */
 int radius_evaluate_condition(REQUEST *request, int modreturn, int depth,
@@ -698,4 +708,10 @@ int radius_evaluate_condition(REQUEST *request, int modreturn, int depth,
 int radius_update_attrlist(REQUEST *request, CONF_SECTION *cs,
                           VALUE_PAIR *input_vps, const char *name);
 void radius_pairmove(REQUEST *request, VALUE_PAIR **to, VALUE_PAIR *from);
+int radius_get_vp(REQUEST *request, const char *name, VALUE_PAIR **vp_p);
+
+#ifdef __cplusplus
+}
+#endif
+
 #endif /*RADIUSD_H*/