hoffmeis: Preparations for syslog support (LOGSERVER in DHCP, linewise
authorAnselm Martin Hoffmeister <stockholm@users.sourceforge.net>
Mon, 9 Apr 2007 18:01:43 +0000 (18:01 +0000)
committerAnselm Martin Hoffmeister <stockholm@users.sourceforge.net>
Mon, 9 Apr 2007 18:01:43 +0000 (18:01 +0000)
output buffering defintions and the like)

src/core/config.c
src/include/console.h
src/include/gpxe/dhcp.h
src/net/udp/dhcp.c
src/usr/dhcpmgmt.c

index a4c3168..ac3100a 100644 (file)
@@ -74,6 +74,10 @@ REQUIRE_OBJECT ( btext );
 REQUIRE_OBJECT ( pc_kbd );
 #endif
 
+#ifdef CONSOLE_SYSLOG
+REQUIRE_OBJECT ( syslog );
+#endif
+
 /*
  * Drag in all requested protocols
  *
index b1fe955..fd1382b 100644 (file)
@@ -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              -
index a3311d1..1ec7ca0 100644 (file)
@@ -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
 
index c782fed..2caea33 100644 (file)
@@ -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,
index 060dd67..7c15b5f 100644 (file)
@@ -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;
 }