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 :) -- Martin - List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html