+++ /dev/null
-diff -Naur radsecproxy-1.5-orig/debug.c radsecproxy-1.5/debug.c
---- radsecproxy-1.5-orig/debug.c 2011-10-01 10:26:44.000000000 +0200
-+++ radsecproxy-1.5/debug.c 2011-12-12 14:43:32.000000000 +0100
-@@ -28,6 +28,9 @@
- static char *debug_filepath = NULL;
- static FILE *debug_file = NULL;
- static int debug_syslogfacility = 0;
-+#if defined(WANT_FTICKS)
-+static int fticks_syslogfacility = 0;
-+#endif
- static uint8_t debug_timestamp = 0;
-
- void debug_init(char *ident) {
-@@ -64,40 +67,60 @@
- return debug_level;
- }
-
--int debug_set_destination(char *dest) {
-- static const char *facstrings[] = { "LOG_DAEMON", "LOG_MAIL", "LOG_USER", "LOG_LOCAL0",
-- "LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4",
-- "LOG_LOCAL5", "LOG_LOCAL6", "LOG_LOCAL7", NULL };
-- static const int facvals[] = { LOG_DAEMON, LOG_MAIL, LOG_USER, LOG_LOCAL0,
-- LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4,
-- LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7 };
-+int debug_set_destination(char *dest, int log_type) {
-+ static const char *facstrings[] = {
-+ "LOG_DAEMON", "LOG_MAIL", "LOG_USER", "LOG_LOCAL0",
-+ "LOG_LOCAL1", "LOG_LOCAL2", "LOG_LOCAL3", "LOG_LOCAL4",
-+ "LOG_LOCAL5", "LOG_LOCAL6", "LOG_LOCAL7", NULL };
-+ static const int facvals[] = {
-+ LOG_DAEMON, LOG_MAIL, LOG_USER, LOG_LOCAL0,
-+ LOG_LOCAL1, LOG_LOCAL2, LOG_LOCAL3, LOG_LOCAL4,
-+ LOG_LOCAL5, LOG_LOCAL6, LOG_LOCAL7 };
- extern int errno;
- int i;
-
- if (!strncasecmp(dest, "file:///", 8)) {
-- debug_filepath = stringcopy(dest + 7, 0);
-- debug_file = fopen(debug_filepath, "a");
-- if (!debug_file) {
-- debug_file = stderr;
-- debugx(1, DBG_ERR, "Failed to open logfile %s\n%s",
-- debug_filepath, strerror(errno));
-+ if (log_type != LOG_TYPE_FTICKS) {
-+ debug_filepath = stringcopy(dest + 7, 0);
-+ debug_file = fopen(debug_filepath, "a");
-+ if (!debug_file) {
-+ debug_file = stderr;
-+ debugx(1, DBG_ERR, "Failed to open logfile %s\n%s",
-+ debug_filepath, strerror(errno));
-+ }
-+ setvbuf(debug_file, NULL, _IONBF, 0);
-+ } else {
-+ debug(DBG_WARN, "FTicksSyslogFacility starting with file:/// not "
-+ "permitted, assuming default F-Ticks destination");
- }
-- setvbuf(debug_file, NULL, _IONBF, 0);
- return 1;
- }
-- if (!strncasecmp(dest, "x-syslog://", 11)) {
-- dest += 11;
-- if (*dest == '/')
-- dest++;
-+ if (!strncasecmp(dest, "x-syslog://", 11) || log_type == LOG_TYPE_FTICKS) {
-+ if (!strncasecmp(dest, "x-syslog://", 11)) {
-+ dest += 11;
-+ if (*dest == '/')
-+ dest++;
-+ }
- if (*dest) {
- for (i = 0; facstrings[i]; i++)
- if (!strcasecmp(dest, facstrings[i]))
- break;
- if (!facstrings[i])
- debugx(1, DBG_ERR, "Unknown syslog facility %s", dest);
-- debug_syslogfacility = facvals[i];
-- } else
-- debug_syslogfacility = LOG_DAEMON;
-+ if (log_type != LOG_TYPE_FTICKS)
-+ debug_syslogfacility = facvals[i];
-+#if defined(WANT_FTICKS)
-+ else if (log_type == LOG_TYPE_FTICKS)
-+ fticks_syslogfacility = facvals[i];
-+#endif
-+ } else {
-+ if (log_type != LOG_TYPE_FTICKS)
-+ debug_syslogfacility = LOG_DAEMON;
-+#if defined(WANT_FTICKS)
-+ else if (log_type == LOG_TYPE_FTICKS)
-+ fticks_syslogfacility = 0;
-+#endif
-+ }
- openlog(debug_ident, LOG_PID, debug_syslogfacility);
- return 1;
- }
-@@ -213,6 +236,20 @@
- exit(err);
- }
-
-+#if defined(WANT_FTICKS)
-+void fticks_debug(const char *format, ...) {
-+ int priority;
-+ va_list ap;
-+ va_start(ap, format);
-+ if (!debug_syslogfacility && !fticks_syslogfacility)
-+ debug_logit(0xff, format, ap);
-+ else {
-+ priority = LOG_DEBUG | fticks_syslogfacility;
-+ vsyslog(priority, format, ap);
-+ va_end(ap);
-+ }
-+}
-+#endif
- /* Local Variables: */
- /* c-file-style: "stroustrup" */
- /* End: */
-diff -Naur radsecproxy-1.5-orig/debug.h radsecproxy-1.5/debug.h
---- radsecproxy-1.5-orig/debug.h 2011-10-01 10:26:44.000000000 +0200
-+++ radsecproxy-1.5/debug.h 2011-12-12 14:46:04.000000000 +0100
-@@ -17,6 +17,9 @@
- #define DBG_WARN 64
- #define DBG_ERR 128
-
-+#define LOG_TYPE_DEBUG 0
-+#define LOG_TYPE_FTICKS 1
-+
- void debug_init(char *ident);
- void debug_set_level(uint8_t level);
- void debug_timestamp_on();
-@@ -25,8 +28,11 @@
- void debugx(int status, uint8_t level, char *format, ...);
- void debugerrno(int err, uint8_t level, char *format, ...);
- void debugerrnox(int err, uint8_t level, char *format, ...);
--int debug_set_destination(char *dest);
-+int debug_set_destination(char *dest, int log_type);
- void debug_reopen_log();
-+#if defined(WANT_FTICKS)
-+void fticks_debug(const char *format, ...);
-+#endif
-
- /* Local Variables: */
- /* c-file-style: "stroustrup" */
-diff -Naur radsecproxy-1.5-orig/fticks.c radsecproxy-1.5/fticks.c
---- radsecproxy-1.5-orig/fticks.c 2011-10-08 16:03:47.000000000 +0200
-+++ radsecproxy-1.5/fticks.c 2011-11-30 13:03:37.000000000 +0100
-@@ -152,7 +152,7 @@
- }
- }
- }
-- debug(0xff,
-+ fticks_debug(
- "F-TICKS/eduroam/1.0#REALM=%s#VISCOUNTRY=%s#%sCSI=%s#RESULT=%s#",
- realm,
- client->conf->fticks_viscountry,
-diff -Naur radsecproxy-1.5-orig/radsecproxy.c radsecproxy-1.5/radsecproxy.c
---- radsecproxy-1.5-orig/radsecproxy.c 2011-10-08 16:03:48.000000000 +0200
-+++ radsecproxy-1.5/radsecproxy.c 2011-12-12 14:46:25.000000000 +0100
-@@ -3085,6 +3085,7 @@
- "FTicksReporting", CONF_STR, &fticks_reporting_str,
- "FTicksMAC", CONF_STR, &fticks_mac_str,
- "FTicksKey", CONF_STR, &fticks_key_str,
-+ "FTicksSyslogFacility", CONF_STR, &options.ftickssyslogfacility,
- #endif
- NULL
- ))
-@@ -3239,8 +3240,18 @@
- options.loglevel = loglevel;
- else if (options.loglevel)
- debug_set_level(options.loglevel);
-- if (!foreground)
-- debug_set_destination(options.logdestination ? options.logdestination : "x-syslog:///");
-+ if (!foreground) {
-+ debug_set_destination(options.logdestination
-+ ? options.logdestination
-+ : "x-syslog:///", LOG_TYPE_DEBUG);
-+#if defined(WANT_FTICKS)
-+ if (options.ftickssyslogfacility) {
-+ debug_set_destination(options.ftickssyslogfacility,
-+ LOG_TYPE_FTICKS);
-+ free(options.ftickssyslogfacility);
-+ }
-+#endif
-+ }
- free(options.logdestination);
-
- if (!list_first(clconfs))
-diff -Naur radsecproxy-1.5-orig/radsecproxy.conf.5.xml radsecproxy-1.5/radsecproxy.conf.5.xml
---- radsecproxy-1.5-orig/radsecproxy.conf.5.xml 2011-10-08 15:59:25.000000000 +0200
-+++ radsecproxy-1.5/radsecproxy.conf.5.xml 2011-11-30 13:03:58.000000000 +0100
-@@ -243,6 +243,24 @@
- </varlistentry>
-
- <varlistentry>
-+ <term><literal>FTicksSyslogFacility</literal></term>
-+ <listitem>
-+ <para>
-+ The FTicksSyslogFacility option is used to specify
-+ a dedicated syslog facility for F-Ticks messages.
-+ This allows easy filtering of F-Ticks messages.
-+ By default, if FTicksSyslogFacility is not given,
-+ F-Ticks messages are written to the LogDestination.
-+ </para>
-+ <para>
-+ For F-Ticks messages always LOG_DEBUG level is used.
-+ Note that FTicksSyslogFacility value specifying a file
-+ (via file:/// prefix) is ignored.
-+ </para>
-+ </listitem>
-+ </varlistentry>
-+
-+ <varlistentry>
- <term><literal>ListenUDP</literal></term>
- <listitem>
- <para>
-diff -Naur radsecproxy-1.5-orig/radsecproxy.conf-example radsecproxy-1.5/radsecproxy.conf-example
---- radsecproxy-1.5-orig/radsecproxy.conf-example 2011-10-08 15:00:14.000000000 +0200
-+++ radsecproxy-1.5/radsecproxy.conf-example 2011-11-30 13:03:58.000000000 +0100
-@@ -57,6 +57,14 @@
- #FTicksReporting None
- #FTicksMAC Static
-
-+# You can optionally specify FTicksSyslogFacility to use a dedicated
-+# syslog facility for F-Ticks messages. This allows easy filtering
-+# of F-Ticks messages.
-+# For F-Ticks messages always LOG_DEBUG level is used.
-+# Please note that FTicksSyslogFacility cannot specify a file (file:///...)
-+#FTicksSyslogFacility log_local1
-+#FTicksSyslogFacility x-syslog:///log_local1
-+
- # There is an option for doing some simple loop prevention. Note that
- # the LoopPrevention directive can be used in server blocks too,
- # overriding what's set here in the basic settings.
-diff -Naur radsecproxy-1.5-orig/radsecproxy.h radsecproxy-1.5/radsecproxy.h
---- radsecproxy-1.5-orig/radsecproxy.h 2011-10-08 14:35:39.000000000 +0200
-+++ radsecproxy-1.5/radsecproxy.h 2011-11-30 13:03:47.000000000 +0100
-@@ -55,6 +55,7 @@
-
- struct options {
- char *logdestination;
-+ char *ftickssyslogfacility;
- char *ttlattr;
- uint32_t ttlattrtype[2];
- uint8_t addttl;
+++ /dev/null
---- ./radsecproxy.c.org 2011-12-20 12:46:01.678987351 +0100
-+++ ./radsecproxy.c 2011-12-20 15:44:24.186577784 +0100
-@@ -2690,6 +2690,7 @@ int confclient_cb(struct gconffile **cf,
- "rewriteattribute", CONF_STR, &conf->confrewriteusername,
- #if defined(WANT_FTICKS)
- "fticksVISCOUNTRY", CONF_STR, &conf->fticks_viscountry,
-+ "fticksVISINST", CONF_STR, &conf->fticks_visinst,
- #endif
- NULL
- ))
---- ./radsecproxy.h.org 2011-12-20 12:46:01.685654326 +0100
-+++ ./radsecproxy.h 2011-12-20 15:43:05.166261843 +0100
-@@ -131,6 +131,7 @@ struct clsrvconf {
- struct list *clients;
- struct server *servers;
- char *fticks_viscountry;
-+ char *fticks_visinst;
- };
-
- #include "tlscommon.h"
---- ./fticks.c.org 2011-12-20 12:46:01.678987351 +0100
-+++ ./fticks.c 2011-12-20 15:51:30.612937428 +0100
-@@ -107,8 +107,13 @@ fticks_log(const struct options *options
-
- memset(visinst, 0, sizeof(visinst));
- if (options->fticks_reporting == RSP_FTICKS_REPORTING_FULL) {
-- snprintf((char *) visinst, sizeof(visinst), "VISINST=%s#",
-- client->conf->name);
-+ if (client->conf->fticks_visinst != NULL ) {
-+ snprintf((char *) visinst, sizeof(visinst), "VISINST=%s#",
-+ client->conf->fticks_visinst);
-+ } else {
-+ snprintf((char *) visinst, sizeof(visinst), "VISINST=%s#",
-+ client->conf->name);
-+ }
- }
-
- memset(macout, 0, sizeof(macout));
---- ./radsecproxy.conf-example.org 2011-12-20 12:46:01.682320839 +0100
-+++ ./radsecproxy.conf-example 2011-12-20 16:32:38.963596053 +0100
-@@ -36,7 +36,7 @@
- # Full -- Do log in F-Ticks format and do log VISINST.
- # Please note that in order to get F-Ticks logging for a given client,
- # its matching client configuration block has to contain the
--# fticksVISCOUNTRY option.
-+# fticksVISCOUNTRY option and it can contain the fticksVISINST option.
-
- # You can optionally specify FTicksMAC in order to determine if and
- # how Calling-Station-Id (users Ethernet MAC address) is being logged.
---- ./radsecproxy.conf.5.xml.org 2011-12-20 16:26:32.610010659 +0100
-+++ ./radsecproxy.conf.5.xml 2011-12-20 16:32:01.411861864 +0100
-@@ -479,9 +479,9 @@ blocktype name {
- <literal>certificateNameCheck</literal>,
- <literal>matchCertificateAttribute</literal>,
- <literal>duplicateInterval</literal>, <literal>AddTTL</literal>,
-- <literal>fticksVISCOUNTRY</literal>, <literal>rewrite</literal>,
-- <literal>rewriteIn</literal>, <literal>rewriteOut</literal>, and
-- <literal>rewriteAttribute</literal>.
-+ <literal>fticksVISCOUNTRY</literal>, <literal>fticksVISINST</literal>,
-+ <literal>rewrite</literal>, <literal>rewriteIn</literal>,
-+ <literal>rewriteOut</literal>, and <literal>rewriteAttribute</literal>.
-
- We already discussed the <literal>host</literal> option. The
- value of <literal>type</literal> must be one of
-@@ -543,6 +543,10 @@ blocktype name {
- <literal>FTicksReporting</literal> basic option.
- </para>
- <para>
-+ The <literal>fticksVISINST</literal> option overwrites
-+ <literal>VISINST</literal> value.
-+ </para>
-+ <para>
- The <literal>rewrite</literal> option is deprecated. Use
- <literal>rewriteIn</literal> instead.
- </para>