1 /* modpriv.h: Stuff needed by both modules.c and modcall.c, but should not be
2 * accessed from anywhere else.
8 #include <freeradius-devel/radiusd.h>
9 #include <freeradius-devel/modules.h>
12 * Using the native dlopen() API means that we don't want to use libltdl.
15 #define WITHOUT_LIBLTDL
18 #ifndef WITHOUT_LIBLTDL
19 #ifdef WITH_SYSTEM_LTDL
22 #include "libltdl/ltdl.h"
30 #ifdef WITHOUT_LIBLTDL
31 typedef void *lt_dlhandle;
34 lt_dlhandle lt_dlopenext(const char *name);
35 void *lt_dlsym(lt_dlhandle handle, const char *symbol);
36 int lt_dlclose(lt_dlhandle handle);
37 const char *lt_dlerror(void);
39 #define LTDL_SET_PRELOADED_SYMBOLS(_x)
41 #define lt_dlsetsearchpath(_x)
45 * Keep track of which modules we've loaded.
47 typedef struct module_entry_t {
48 char name[MAX_STRING_LEN];
49 const module_t *module;
53 typedef struct fr_module_hup_t fr_module_hup_t;
56 * Per-instance data structure, to correlate the modules
57 * with the instance names (may NOT be the module names!),
58 * and the per-instance data structures.
60 typedef struct module_instance_t {
61 char name[MAX_STRING_LEN];
62 module_entry_t *entry;
65 pthread_mutex_t *mutex;
72 module_instance_t *find_module_instance(CONF_SECTION *, const char *instname,
74 int module_hup_module(CONF_SECTION *cs, module_instance_t *node, time_t when);
80 #endif /* FR_MODPRIV_H */