Exported methods in the instance data structure
authorAlan T. DeKok <aland@freeradius.org>
Sun, 7 Sep 2008 06:05:54 +0000 (08:05 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Sun, 7 Sep 2008 06:05:54 +0000 (08:05 +0200)
This should simplify rlm_sqlippool, and anything else that
needs access to SQL get/release socket, and set_user_name

src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_sql/rlm_sql.h

index 79e8615..0ec3314 100644 (file)
@@ -788,6 +788,13 @@ static int rlm_sql_instantiate(CONF_SECTION * conf, void **instance)
        memset(inst->config, 0, sizeof(SQL_CONFIG));
 
        /*
+        *      Export these methods, too.  This avoids RTDL_GLOBAL.
+        */
+       inst->sql_set_user = sql_set_user;
+       inst->sql_get_socket = sql_get_socket;
+       inst->sql_release_socket = sql_release_socket;
+
+       /*
         * If the configuration parameters can't be parsed, then
         * fail.
         */
index 54cc6ee..a40644b 100644 (file)
@@ -57,7 +57,9 @@ typedef struct rlm_sql_module_t {
        int (*sql_affected_rows)(SQLSOCK *sqlsocket, SQL_CONFIG *config);
 } rlm_sql_module_t;
 
-typedef struct sql_inst {
+typedef struct sql_inst SQL_INST;
+
+struct sql_inst {
        time_t          connect_after;
        SQLSOCK         *sqlpool;
        SQLSOCK         *last_used;
@@ -65,7 +67,11 @@ typedef struct sql_inst {
 
        lt_dlhandle handle;
        rlm_sql_module_t *module;
-} SQL_INST;
+
+       int (*sql_set_user)(SQL_INST *inst, REQUEST *request, char *sqlusername, const char *username);
+       SQLSOCK *(*sql_get_socket)(SQL_INST * inst);
+       int (*sql_release_socket)(SQL_INST * inst, SQLSOCK * sqlsocket);
+};
 
 typedef struct sql_grouplist {
        char                    groupname[MAX_STRING_LEN];