aboutsummaryrefslogtreecommitdiffstats
path: root/daemon/conf.c
diff options
context:
space:
mode:
authoryaworsky <yaworsky>2005-10-26 04:59:51 +0000
committeryaworsky <yaworsky>2005-10-26 04:59:51 +0000
commit0f6fa595431267af5550a1b937b20f68957ca33f (patch)
tree0f7d4fab32930067e9b751e2df518df9997804d4 /daemon/conf.c
parent2bc65a6d5b3aa6c33e0322b6bcb786841859262b (diff)
downloadsyslog-win32-0f6fa595431267af5550a1b937b20f68957ca33f.tar.gz
syslog-win32-0f6fa595431267af5550a1b937b20f68957ca33f.tar.xz
syslog-win32-0f6fa595431267af5550a1b937b20f68957ca33f.zip
Implemented relaying.
Diffstat (limited to 'daemon/conf.c')
-rw-r--r--daemon/conf.c85
1 files changed, 72 insertions, 13 deletions
diff --git a/daemon/conf.c b/daemon/conf.c
index 9dfb248..c31115b 100644
--- a/daemon/conf.c
+++ b/daemon/conf.c
@@ -125,8 +125,7 @@ static void create_source( int line_number,
/******************************************************************************
* init_file_dest
*
- * read attributes of element, initialize destination structure and append
- * it to the list of destinations
+ * read attributes of element and initialize destination structure
*/
static gboolean init_file_dest( struct destination *dest,
int line_number,
@@ -203,6 +202,46 @@ static gboolean init_file_dest( struct destination *dest,
}
/******************************************************************************
+ * init_relay_dest
+ *
+ * read attributes of element and initialize destination structure
+ */
+static gboolean init_relay_dest( struct destination *dest,
+ int line_number,
+ const gchar** attribute_names,
+ const gchar** attribute_values )
+{
+ const gchar *aname;
+
+ for( ; (aname = *attribute_names) != NULL; attribute_names++, attribute_values++ )
+ {
+ const gchar *aval = *attribute_values;
+ if( strcmp( aname, "collector" ) == 0 )
+ dest->u.relay.collector = g_strdup( aval );
+ else if( strcmp( aname, "omit_hostname" ) == 0 )
+ {
+ if( strcmp( aval, "yes" ) == 0 )
+ dest->u.relay.omit_hostname = TRUE;
+ else if( strcmp( aval, "no" ) == 0 )
+ dest->u.relay.omit_hostname = FALSE;
+ else
+ {
+ dest->u.relay.omit_hostname = FALSE;
+ ERR( "Invalid value \"%s\" of attribute \"%s\" at line %d; assumed \"no\"\n",
+ aval, aname, line_number );
+ }
+ }
+ }
+ if( !dest->u.relay.collector )
+ {
+ ERR( "Undefined destination relay at line %d\n", line_number );
+ return FALSE;
+ }
+
+ return init_destination_relay( dest );
+}
+
+/******************************************************************************
* create_destination
*
* read attributes of element, initialize destination structure and append
@@ -231,6 +270,11 @@ static void create_destination( int line_number,
dest->type = DT_FILE;
break;
}
+ else if( strcmp( aname, "collector" ) == 0 )
+ {
+ dest->type = DT_RELAY;
+ break;
+ }
}
if( !dest->name )
{
@@ -245,6 +289,10 @@ static void create_destination( int line_number,
r = init_file_dest( dest, line_number, attribute_names, attribute_values );
break;
+ case DT_RELAY:
+ r = init_relay_dest( dest, line_number, attribute_names, attribute_values );
+ break;
+
default:
ERR( "Undefined destination type at line %d\n", line_number );
break;
@@ -734,17 +782,28 @@ static void dump_configuration()
for( item = destinations; item; item = item->next )
{
struct destination *d = item->data;
- TRACE( "\tname=%s\tfile=%s\n"
- "\t\trotate=%s size=%d backlogs=%d ifempty=%s\n"
- "\t\tolddir=%s compresscmd=%s\n",
- d->name, d->u.file.name_pattern,
- (d->u.file.rotate == RP_DAILY)? "daily"
- : (d->u.file.rotate == RP_WEEKLY)? "weekly"
- : (d->u.file.rotate == RP_MONTHLY)? "monthly"
- : "undefined",
- d->u.file.size, d->u.file.backlogs, d->u.file.ifempty? "yes" : "no",
- d->u.file.olddir? d->u.file.olddir : "NULL",
- d->u.file.compresscmd? d->u.file.compresscmd : "NULL" );
+ switch( d->type )
+ {
+ case DT_FILE:
+ TRACE( "\tname=%s\tfile=%s\n"
+ "\t\trotate=%s size=%d backlogs=%d ifempty=%s\n"
+ "\t\tolddir=%s compresscmd=%s\n",
+ d->name, d->u.file.name_pattern,
+ (d->u.file.rotate == RP_DAILY)? "daily"
+ : (d->u.file.rotate == RP_WEEKLY)? "weekly"
+ : (d->u.file.rotate == RP_MONTHLY)? "monthly"
+ : "undefined",
+ d->u.file.size, d->u.file.backlogs, d->u.file.ifempty? "yes" : "no",
+ d->u.file.olddir? d->u.file.olddir : "NULL",
+ d->u.file.compresscmd? d->u.file.compresscmd : "NULL" );
+ break;
+ case DT_RELAY:
+ TRACE( "\tname=%s\tcollector=%s\n"
+ "\t\tomit_hostname=%s\n",
+ d->name, d->u.file.name_pattern,
+ d->u.relay.omit_hostname? "yes" : "no" );
+ break;
+ }
}
TRACE( "Filters:\n" );
for( item = filters; item; item = item->next )