From ed7dc02a95026f85cdd4c2c350a034458343d340 Mon Sep 17 00:00:00 2001 From: Anselm Martin Hoffmeister Date: Mon, 9 Apr 2007 18:01:43 +0000 Subject: [PATCH] hoffmeis: Preparations for syslog support (LOGSERVER in DHCP, linewise output buffering defintions and the like) --- src/core/config.c | 4 ++++ src/include/console.h | 15 +++++++++++++-- src/include/gpxe/dhcp.h | 3 +++ src/net/udp/dhcp.c | 2 +- src/usr/dhcpmgmt.c | 5 +++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/core/config.c b/src/core/config.c index a4c31681..ac3100a3 100644 --- a/src/core/config.c +++ b/src/core/config.c @@ -74,6 +74,10 @@ REQUIRE_OBJECT ( btext ); REQUIRE_OBJECT ( pc_kbd ); #endif +#ifdef CONSOLE_SYSLOG +REQUIRE_OBJECT ( syslog ); +#endif + /* * Drag in all requested protocols * diff --git a/src/include/console.h b/src/include/console.h index b1fe955b..fd1382b4 100644 --- a/src/include/console.h +++ b/src/include/console.h @@ -30,8 +30,8 @@ struct console_driver { /** Console is disabled. * - * The console's putchar(), getchar() and iskey() methods will - * not be called while #disabled==1. Typically the + * The console's putchar(), putline(), getchar() and iskey() + * methods will not be called while #disabled==1. Typically the * console's initialisation functions (called via INIT_FN()) * will set #disabled=0 upon completion. * @@ -47,6 +47,17 @@ struct console_driver { */ void ( *putchar ) ( int character ); + /** Write an entire line to the console. + * This is intended to be used by line-oriented output media, + * like system logging facilities or line printers. + * Line output will not contain non-printable characters. + * + * @v linebuffer Pointer to the \0-terminated line + * @ret None - + * @err None - + */ + void ( * putline ) ( unsigned char * linebuffer ); + /** Read a character from the console. * * @v None - diff --git a/src/include/gpxe/dhcp.h b/src/include/gpxe/dhcp.h index a3311d1a..1ec7ca03 100644 --- a/src/include/gpxe/dhcp.h +++ b/src/include/gpxe/dhcp.h @@ -60,6 +60,9 @@ /** DNS servers */ #define DHCP_DNS_SERVERS 6 +/** Syslog servers */ +#define DHCP_LOG_SERVERS 7 + /** Host name */ #define DHCP_HOST_NAME 12 diff --git a/src/net/udp/dhcp.c b/src/net/udp/dhcp.c index c782fed1..2caea335 100644 --- a/src/net/udp/dhcp.c +++ b/src/net/udp/dhcp.c @@ -54,7 +54,7 @@ static uint8_t dhcp_request_options_data[] = { DHCP_VENDOR_CLASS_ID, DHCP_STRING ( 'E', 't', 'h', 'e', 'r', 'b', 'o', 'o', 't' ), DHCP_PARAMETER_REQUEST_LIST, - DHCP_OPTION ( DHCP_SUBNET_MASK, DHCP_ROUTERS, DHCP_DNS_SERVERS, + DHCP_OPTION ( DHCP_SUBNET_MASK, DHCP_ROUTERS, DHCP_DNS_SERVERS, DHCP_LOG_SERVERS, DHCP_HOST_NAME, DHCP_DOMAIN_NAME, DHCP_ROOT_PATH, DHCP_VENDOR_ENCAP, DHCP_TFTP_SERVER_NAME, DHCP_BOOTFILE_NAME, DHCP_EB_ENCAP, diff --git a/src/usr/dhcpmgmt.c b/src/usr/dhcpmgmt.c index 060dd67e..7c15b5f9 100644 --- a/src/usr/dhcpmgmt.c +++ b/src/usr/dhcpmgmt.c @@ -37,6 +37,9 @@ /* Avoid dragging in dns.o */ struct in_addr nameserver; +/* Avoid dragging in syslog.o */ +struct in_addr syslogserver; + /** * Configure network device via DHCP * @@ -97,6 +100,8 @@ int dhcp ( struct net_device *netdev ) { /* Retrieve other DHCP options that we care about */ find_dhcp_ipv4_option ( dhcp_options, DHCP_DNS_SERVERS, &nameserver ); + find_dhcp_ipv4_option ( dhcp_options, DHCP_LOG_SERVERS, + &syslogserver ); return 0; }