hmm I just tried -X on running freeradius, disregard my last email
---
rlm_dbm: try open database file: 
/usr/local/freeradius-0.6-cvs-20020719/etc/raddb/users_db
rlm_dbm: Cannot open database file: No such file or directory
  modcall[authorize]: module "dbm" returns fail
---
The problem is the file DOES exist, I copy/pasted and did less and got a nice 
binary looking file ~

the code in rlm_dbm.c

-----
        /* open database */
        if ( ( pdb = dbm_open(inst -> userfile, O_RDONLY, 0600) ) != NULL ) {
                DEBUG("rlm_dbm: Call parse_user:\n");
                found = sm_parse_user(pdb, name, request_pairs, &check_tmp, 
&reply_tmp, &ulist);
                if ( found == RLM_MODULE_NOTFOUND ) {
                  sm_user_list_wipe(&ulist);
                  found = sm_parse_user(pdb, "DEFAULT", request_pairs, 
&check_tmp, &reply_tmp, &ulist);
                }
                dbm_close(pdb);
        } else {
                found = RLM_MODULE_FAIL;
                DEBUG2("rlm_dbm: Cannot open database file: 
%s\n",strerror(errno));
        }
-----

Can the filemode cause this? or maybe file format? guessing the later.

Isn't it amazing how far you can solve things for yourself by writing an 
email :p

Cheers

Martin


On Fri, 19 Jul 2002 13:49, you wrote:
 Hi all

 I have been using freeradius for a while using 'users' files to hold users
 information.  I now have 60,000+ users and this takes too much memory.

 I am attempting to use rlm_dbm with source taken via cvs to get the latest
 code.  I do not quite understand how fastusers works and it might be a
 better solution, if anyone has any comments on that I would appreciate it.

 Setting up rlm_dbm looks very straight forward, I have in radiusd.conf:

 -----

 modules {

        .... existing entries

        dbm {
                usersfile = ${confdir}/users.db
        }
 }

 authorize {

        preprocess
        suffix
        files
        dbm
 }

 -----

 I have used rlm_dbm_parser to generate my dbm file (only one entry while
 testing) and used rlm_dbm_cat to test the dbm file.

 If I comment out dbm from authorize { .. } I can authenticate from the users
 file as I have been previously. As soon as I uncomment dbm from authorize {
 .. } I get this in my radius.log when using radtest or actually dialing in.

 Fri Jul 19 12:57:20 2002 : Info: Starting - reading configuration files ...
 Fri Jul 19 12:57:21 2002 : Info: Listening on IP address *, ports 1822/udp
 and 1823/udp, with proxy on 1824/udp.
 Fri Jul 19 12:57:21 2002 : Info: Ready to process requests.
 Fri Jul 19 12:57:30 2002 : Error: Dropping packet from client localhost:1560
 - ID: 142 due to dead request 0
 Fri Jul 19 12:57:36 2002 : Error: Dropping packet from client localhost:1560
 - ID: 142 due to dead request 2
 Fri Jul 19 12:57:39 2002 : Error: Dropping packet from client localhost:1560
 - ID: 142 due to dead request 2

 I have tried playing around with my input structure for rlm_dbm_parser as
 that is one thing I am still not sure I am doing right.  However those error
 messages really don't appear to be associated with the dbm even though they
 only occur when i put dbm configuration into radiusd.conf

 I grep'd the source code for "due to dead request" and there is a chunk of
 code in radiusd.conf
 -----
                         /*
                          *      At this point, there isn't a live
                          *      thread handling the old request.  The
                          *      old request isn't finished, AND
                          *      there's no reply for it.
                          *
                          *      Therefore, we MUST be waiting for a reply
                          *      from the proxy.
                          *
                          *      If not, then we have no clue what to
                          *      do, so we drop the new request, and
                          *      hope that the NAS doesn't bug us about
                          *      it.
                          */
                         if (!curreq->proxy) {
                                 radlog(L_ERR, "Dropping packet from client "
                                        "%s:%d - ID: %d due to dead request
 %d",

 client_name(request->packet->src_ipaddr),
                                        request->packet->src_port,
                                        request->packet->id,
                                        curreq->number);
                                 request_free(&request);
                                 return NULL;
                         }
 -----

 This is where i get lost and I do not see what this has to do with my dbm
 configuration.  I am not a c coder so flicking over code and getting the
 general jist of it is as far as I go.

 I am using a fairly old OS, Redhat 5.1, so maybe I have some old libraries
 that can also put a knife in the works.  To get freeradius running i have to
 disable threads and snmp.  The radius.conf file is nearly default except
 simple things like nospaces,lowercase, commented out unix whever i found it
 and added dbm.

 Any ideas would be appreciated, if all else fails I will switch to
 SQL....but databases can crash, files dont.

 Cheers :)

- 
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to