summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/config.c4
-rw-r--r--src/include/console.h15
-rw-r--r--src/include/gpxe/dhcp.h3
-rw-r--r--src/net/udp/dhcp.c2
-rw-r--r--src/usr/dhcpmgmt.c5
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;
}