***********************************************************************/
static char const RCSID[] =
-"$Id: radattr.c,v 1.1 2002/01/22 16:03:00 dfs Exp $";
+"$Id: radattr.c,v 1.2 2004/10/28 00:24:40 paulus Exp $";
-#include "pppd.h"
-#include "radiusclient.h"
#include <stdio.h>
+#include <sys/stat.h>
+#include <pppd/pppd.h>
+
+#include "radiusclient.h"
extern void (*radius_attributes_hook)(VALUE_PAIR *);
static void print_attributes(VALUE_PAIR *);
static void cleanup(void *opaque, int arg);
-char pppd_version[] = VERSION;
+char pppd_version[] = PPPD_VERSION;
/**********************************************************************
* %FUNCTION: plugin_init
{
radius_attributes_hook = print_attributes;
+#if 0
+ /* calling cleanup() on link down is problematic because print_attributes()
+ is called only after PAP or CHAP authentication, but not when the link
+ should go up again for any other reason */
add_notifier(&link_down_notifier, cleanup, NULL);
+#endif
/* Just in case... */
add_notifier(&exitnotify, cleanup, NULL);
char fname[512];
char name[2048];
char value[2048];
+ int cnt = 0;
+ mode_t old_umask;
slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
+ old_umask = umask(077);
fp = fopen(fname, "w");
+ umask(old_umask);
if (!fp) {
warn("radattr plugin: Could not open %s for writing: %m", fname);
return;
continue;
}
fprintf(fp, "%s %s\n", name, value);
+ cnt++;
}
fclose(fp);
+ dbglog("RADATTR plugin wrote %d line(s) to file %s.", cnt, fname);
}
/**********************************************************************
slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
(void) remove(fname);
+ dbglog("RADATTR plugin removed file %s.", fname);
}