Hello,

In the Changelog I just saw that:

Dictionaries are now in /usr/local/share/freeradius

But for what I saw in the sources (cvs snapshot from 20030324),
dictionnaries are installed in /usr/local/share/freeradius but read from
/etc/raddb which leads to an error and radiusd not starting.

I made a quick patch to add a directive dictdir in the main radiusd.conf
file and use it from radiusd and it works.

BEWARE: This will not work with others binaries and a quick grep to the
source for the dict_init function says:

./main/radrelay.c
./main/radclient.c
./modules/rlm_dbm/rlm_dbm_parser.c
./modules/rlm_dictionary/rlm_dictionary.c

So modifications must be made to there sources to honor the dictdir
directive. I have not time to do this at once so enjoy yourself ;) I
just watched code and as I don't know how the CONF_PAIR and CONF_SECTION
work I didn't go on...

-- 
Christophe.
diff -urP plop.orig/src/main/mainconfig.c plop/src/main/mainconfig.c
--- plop.orig/src/main/mainconfig.c     Wed Feb 19 16:28:07 2003
+++ plop/src/main/mainconfig.c  Thu Mar 27 12:30:52 2003
@@ -57,6 +57,7 @@
  */
 static const char *localstatedir = NULL;
 static const char *prefix = NULL;
+static const char *dictdir = NULL;
 
 /*
  *  Map the proxy server configuration parameters to variables.
@@ -93,6 +94,7 @@
         *      files.
         */
        { "prefix",             PW_TYPE_STRING_PTR, 0, &prefix,            
"/usr/local"},
+       { "dictdir",            PW_TYPE_STRING_PTR, 0, &dictdir,           
"${prefix}/share/freeradius"}, 
        { "localstatedir",      PW_TYPE_STRING_PTR, 0, &localstatedir,     
"${prefix}/var"}, 
        { "logdir",             PW_TYPE_STRING_PTR, 0, &radlog_dir,        
"${localstatedir}/log"},
        { "libdir",             PW_TYPE_STRING_PTR, 0, &radlib_dir,        
"${prefix}/lib"},
@@ -695,7 +697,7 @@
 
        /* Initialize the dictionary */
        DEBUG2("read_config_files:  reading dictionary");
-       if (dict_init(radius_dir, RADIUS_DICTIONARY) != 0) {
+       if (dict_init(dictdir, RADIUS_DICTIONARY) != 0) {
                radlog(L_ERR|L_CONS, "Errors reading dictionary: %s",
                                librad_errstr);
                cf_section_free(&cs);

Reply via email to