Compile-time options to remove session management functionality
authoraland <aland>
Thu, 5 Jun 2008 10:18:53 +0000 (10:18 +0000)
committeraland <aland>
Thu, 5 Jun 2008 10:18:53 +0000 (10:18 +0000)
src/include/radiusd.h
src/main/auth.c
src/main/modules.c
src/main/session.c

index 787dcc0..a3b2d23 100644 (file)
@@ -68,6 +68,10 @@ typedef pid_t child_pid_t;
 #define WITH_DETAIL (1)
 #endif
 
+#ifndef WITHOUT_SESSION_MGMT
+#define WITH_SESSION_MGMT (1)
+#endif
+
 /*
  *     See util.c
  */
@@ -148,9 +152,12 @@ struct auth_req {
        rad_listen_t            *proxy_listener;
 #endif
 
-       int                     simul_max;
+
+       int                     simul_max; /* see modcall.c && xlat.c */
+#ifdef WITH_SESSION_MGMT
        int                     simul_count;
        int                     simul_mpp; /* WEIRD: 1 is false, 2 is true */
+#endif
 
        int                     options; /* miscellanous options */
        const char              *module; /* for debugging unresponsive children */
index 8300528..169649a 100644 (file)
@@ -450,15 +450,11 @@ int rad_postauth(REQUEST *request)
 int rad_authenticate(REQUEST *request)
 {
        VALUE_PAIR      *namepair;
-       VALUE_PAIR      *check_item;
        VALUE_PAIR      *auth_item = NULL;
        VALUE_PAIR      *module_msg;
        VALUE_PAIR      *tmp = NULL;
        int             result;
-       char            umsg[MAX_STRING_LEN + 1];
-       const char      *user_msg = NULL;
        const char      *password;
-       char            logstr[1024];
        char            autz_retry = 0;
        int             autz_type = 0;
 
@@ -680,9 +676,14 @@ autz_redo:
                }
        }
 
+#ifdef WITH_SESSION_MGMT
        if (result >= 0 &&
            (check_item = pairfind(request->config_items, PW_SIMULTANEOUS_USE)) != NULL) {
                int r, session_type = 0;
+               VALUE_PAIR      *check_item;
+               char            logstr[1024];
+               char            umsg[MAX_STRING_LEN + 1];
+               const char      *user_msg = NULL;
 
                tmp = pairfind(request->config_items, PW_SESSION_TYPE);
                if (tmp) {
@@ -738,6 +739,7 @@ autz_redo:
                        }
                }
        }
+#endif
 
        /*
         *      Result should be >= 0 here - if not, it means the user
index 268d8df..e364f31 100644 (file)
@@ -1147,6 +1147,7 @@ int module_accounting(int acct_type, REQUEST *request)
        return indexed_modcall(RLM_COMPONENT_ACCT, acct_type, request);
 }
 
+#ifdef WITH_SESSION_MGMT
 /*
  *     See if a user is already logged in.
  *
@@ -1172,7 +1173,9 @@ int module_checksimul(int sess_type, REQUEST *request, int maxsimul)
 
        return (request->simul_count < maxsimul) ? 0 : request->simul_mpp;
 }
+#endif
 
+#ifdef WITH_PROXY
 /*
  *     Do pre-proxying for ALL configured sessions
  */
@@ -1188,6 +1191,7 @@ int module_post_proxy(int type, REQUEST *request)
 {
        return indexed_modcall(RLM_COMPONENT_POST_PROXY, type, request);
 }
+#endif
 
 /*
  *     Do post-authentication for ALL configured sessions
index d8bdf66..5d49861 100644 (file)
 RCSID("$Id$")
 
 #include       <freeradius-devel/radiusd.h>
+#include       <freeradius-devel/modules.h>
 #include       <freeradius-devel/rad_assert.h>
 
 #ifdef HAVE_SYS_WAIT_H
 #include       <sys/wait.h>
 #endif
 
+#ifdef WITH_SESSION_MGMT
 /*
  *     End a session by faking a Stop packet to all accounting modules.
  */
@@ -223,3 +225,22 @@ int rad_check_ts(UNUSED uint32_t nasaddr, UNUSED unsigned int portnum,
        return 2;
 }
 #endif
+
+#else
+/* WITH_SESSION_MGMT */
+
+int session_zap(UNUSED REQUEST *request, UNUSED uint32_t nasaddr, UNUSED unsigned int port,
+               UNUSED const char *user,
+               UNUSED const char *sessionid, UNUSED uint32_t cliaddr, UNUSED char proto,
+               UNUSED int session_time)
+{
+       return RLM_MODULE_FAIL;
+}
+
+int rad_check_ts(UNUSED uint32_t nasaddr, UNUSED unsigned int portnum,
+                UNUSED const char *user, UNUSED const char *session_id)
+{
+       radlog(L_ERR, "Simultaneous-Use is not supported");
+       return 2;
+}
+#endif