diff options
Diffstat (limited to 'contrib/wakeonlan/wakeserver.patch')
-rw-r--r-- | contrib/wakeonlan/wakeserver.patch | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/contrib/wakeonlan/wakeserver.patch b/contrib/wakeonlan/wakeserver.patch new file mode 100644 index 00000000..43e78b1d --- /dev/null +++ b/contrib/wakeonlan/wakeserver.patch @@ -0,0 +1,179 @@ +To: etherboot-developers@lists.sourceforge.net +X-face: #Qvg5o3u!)WoVDDi4-bFy`fl@""4^pm68%_,`puon{0Q6lQ-O,)3D.J.":A&^,#4O2vc8`? + 3^1lhBh=EQH,"Qq*e1vY":she&t^8:!&Fb32Ed:nM2Y<E9|i[+z20G?CO=E=-IWv;bL"=Y`+`q,ML6 + ,!Me?==j&In1 +Mime-Version: 1.0 +Content-Type: multipart/mixed ; + boundary="==_Exmh_-19971541890" +From: Tilmann Bubeck <bubeck@think-at-work.de> +Message-Id: <20010219195622.C97A84ABD8@chaos.think-at-work.de> +Subject: [Etherboot-developers] Wake-on-LAN patch +Sender: etherboot-developers-admin@lists.sourceforge.net +Errors-To: etherboot-developers-admin@lists.sourceforge.net +X-BeenThere: etherboot-developers@lists.sourceforge.net +X-Mailman-Version: 2.0 +Precedence: bulk +List-Help: <mailto:etherboot-developers-request@lists.sourceforge.net?subject=help> +List-Post: <mailto:etherboot-developers@lists.sourceforge.net> +List-Subscribe: <http://lists.sourceforge.net/lists/listinfo/etherboot-developers>, + <mailto:etherboot-developers-request@lists.sourceforge.net?subject=subscribe> +List-Id: Discussion list for Etherboot developers <etherboot-developers.lists.sourceforge.net> +List-Unsubscribe: <http://lists.sourceforge.net/lists/listinfo/etherboot-developers>, + <mailto:etherboot-developers-request@lists.sourceforge.net?subject=unsubscribe> +List-Archive: <http://lists.sourceforge.net/archives//etherboot-developers/> +Date: Mon, 19 Feb 2001 20:56:22 +0100 +Status: RO +Content-Length: 5351 +Lines: 152 + +This is a multipart MIME message. + +--==_Exmh_-19971541890 +Content-Type: text/plain; charset=us-ascii + + +Hello! + +please find enclosed a patch to optionally enable etherboot to start the +server it is booting from by sending a magic wake-on-lan packet to the +sleeping server first. + +This is very important for an etherboot-server, which is not running all the +time and is not easily accessible from the etherboot machine (e.g. because it +is installed in the basement of the house and one must climb several stairs to +switch the server on...) + +Are the authors of etherboot willing to accept this patch for inclusion? +Please note, that the wake-on-lan code is only compiled in, when setting +appropriate flags in src/Config. + +If you don't want to include the patch, should I change anything of the +implementation or do you dislike the idea at all? + +Thanks! + Till + ++-------+--------------------------------------------------------------+ +| | dr. tilmann bubeck think@work it consulting | +| | professional services | +| think | cell.: +49 172 8842972 widmaierstrasse 58 | +| @work | fax : +49 711 7227734 70567 stuttgart | +| | email: bubeck@think-at-work.de http://www.think-at-work.de | ++-------+ -------------------------------------------------------------+ + + +--==_Exmh_-19971541890 +Content-Type: application/x-patch ; name="etherboot-4.7.17-wol.patch" +Content-Description: etherboot-4.7.17-wol.patch +Content-Disposition: attachment; filename="etherboot-4.7.17-wol.patch" + +diff -r -u etherboot-4.7.17/src/Config etherboot-4.7.17-wol/src/Config +--- etherboot-4.7.17/src/Config Sat Jan 6 16:25:23 2001 ++++ etherboot-4.7.17-wol/src/Config Mon Feb 19 20:28:00 2001 +@@ -113,6 +113,16 @@ + # -DINTERNAL_BOOTP_DATA + # - define if the area 0x93C00-0x93FFF is not available + # for use for bootpd_data by the loader for some reason ++# -DWAKEUP_SERVER ++# - define this for sending a Wake-On-LAN (WOL) ++# "Magic Packet" to a sleeping server, before trying ++# a etherboot. Useful if your server is soft-off all ++# the time and must be switched on when booting a ++# client. Define SERVER_MAC with the MAC address of the ++# server to wakeup. CAUTION! This MAC address is ++# stored in the rom image. The rom is therefore not ++# generic anymore but tailored for a specific ++# server! + + # These default settings compile Etherboot with a small number of options. + # You may wish to enable more of the features if the size of your ROM allows. +@@ -142,6 +152,10 @@ + + # These flags affect the loader that is prepended to the Etherboot image + LCONFIG+= -DMOVEROM ++ ++# Include code for sending a Wake-On-LAN (WOL) "Magic Packet" to a sleeping ++# server, before trying a etherboot. ++CFLAGS32+= -DWAKEUP_SERVER -DSERVER_MAC=0x00,0x01,0x02,0xDA,0xDF,0x77 + + # you should normally not need to change these + RM= rm -f +diff -r -u etherboot-4.7.17/src/main.c etherboot-4.7.17-wol/src/main.c +--- etherboot-4.7.17/src/main.c Fri Jan 5 12:45:29 2001 ++++ etherboot-4.7.17-wol/src/main.c Thu Feb 8 20:46:59 2001 +@@ -137,6 +137,7 @@ + * declarations, but in this case I like to see main() as the first + * routine. + */ ++static void wakeup_server(void) ; + static int bootp(void); + static int rarp(void); + static void load(void); +@@ -217,6 +218,11 @@ + rfc951_sleep(++card_retries); + } + #endif ++ ++#ifdef WAKEUP_SERVER ++ wakeup_server(); ++#endif ++ + while (1) { + /* -1: timeout or ESC + -2: error return from loader +@@ -650,6 +656,46 @@ + return (0); + } + #endif /* DOWNLOAD_PROTO_TFTP */ ++ ++#ifdef WAKEUP_SERVER ++#ifndef SERVER_MAC ++#error "Please define SERVER_MAC to the MAC address of the sleeping server" ++#endif ++ ++/************************************************************************** ++WOL - Wake up a sleeping server by transmitting a Wake-On-LAN (WOL) "Magic ++ Packet", used for restarting machines that have been soft-powered-down ++ (ACPI D3-warm state). It currently generates the standard AMD Magic ++ Packet format. ++**************************************************************************/ ++static void wakeup_server(void) ++{ ++ unsigned char data[100]; ++ int i, len, retry; ++ char server_adr[] = { SERVER_MAC }; ++ unsigned long time; ++ ++ /* build "Magic Packet" */ ++ len = 0; ++ data[len++] = 0xff; ++ data[len++] = 0xff; ++ data[len++] = 0xff; ++ data[len++] = 0xff; ++ data[len++] = 0xff; ++ data[len++] = 0xff; ++ for ( i = 0; i < 16; i++ ) { ++ memcpy(&data[len], server_adr, 6); ++ len += 6; ++ } ++ ++ printf("Sending Wake-On-LAN (WOL) \"Magic Packet\" to server %b:%b:%b:%b:%b:%b...", ++ server_adr[0], server_adr[1], server_adr[2], ++ server_adr[3], server_adr[4], server_adr[5]); ++ ++ eth_transmit(broadcast, 0x0842, len, data); ++ printf("done\n"); ++} ++#endif + + #ifdef RARP_NOT_BOOTP + /************************************************************************** + +--==_Exmh_-19971541890-- + + + +_______________________________________________ +Etherboot-developers mailing list +Etherboot-developers@lists.sourceforge.net +http://lists.sourceforge.net/lists/listinfo/etherboot-developers |