]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[syslog] Disable console when no syslog server is defined
authorMichael Brown <mcb30@ipxe.org>
Tue, 28 Feb 2012 22:27:48 +0000 (22:27 +0000)
committerMichael Brown <mcb30@ipxe.org>
Tue, 28 Feb 2012 23:10:01 +0000 (23:10 +0000)
Explicitly disable the syslog console when no syslog server is
defined, rather than (ab)using the socket family address as an
equivalent console-enabled flag.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/net/udp/syslog.c

index 6d9fc2165bc09c6986ae488b0a36ad28c16a8425..775e3f4af88c68f7403aab5951c933814205b6b7 100644 (file)
@@ -37,6 +37,7 @@ FILE_LICENCE ( GPL2_OR_LATER );
 
 /** The syslog server */
 static struct sockaddr_tcpip logserver = {
+       .st_family = AF_INET,
        .st_port = htons ( SYSLOG_PORT ),
 };
 
@@ -84,10 +85,6 @@ static struct ansiesc_context syslog_ansiesc_ctx = {
 static void syslog_putchar ( int character ) {
        int rc;
 
-       /* Do nothing if we have no log server */
-       if ( ! logserver.st_family )
-               return;
-
        /* Ignore if we are already mid-logging */
        if ( syslog_entered )
                return;
@@ -136,6 +133,7 @@ static void syslog_putchar ( int character ) {
 /** Syslog console driver */
 struct console_driver syslog_console __console_driver = {
        .putchar = syslog_putchar,
+       .disabled = 1,
 };
 
 /******************************************************************************
@@ -166,11 +164,11 @@ static int apply_syslog_settings ( void ) {
        int rc;
 
        /* Fetch log server */
+       syslog_console.disabled = 1;
        old_addr.s_addr = sin_logserver->sin_addr.s_addr;
-       logserver.st_family = 0;
        if ( ( len = fetch_ipv4_setting ( NULL, &syslog_setting,
                                          &sin_logserver->sin_addr ) ) >= 0 ) {
-               sin_logserver->sin_family = AF_INET;
+               syslog_console.disabled = 0;
        }
 
        /* Do nothing unless log server has changed */
@@ -181,7 +179,7 @@ static int apply_syslog_settings ( void ) {
        intf_restart ( &syslogger, 0 );
 
        /* Do nothing unless we have a log server */
-       if ( ! logserver.st_family ) {
+       if ( syslog_console.disabled ) {
                DBG ( "SYSLOG has no log server\n" );
                return 0;
        }