david/ipxe
Archived
1
0

[syslog] Disable console when no syslog server is defined

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>
This commit is contained in:
Michael Brown 2012-02-28 22:27:48 +00:00
parent 99de239867
commit c72b8969e2

View File

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