From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1HIaTq-0002LO-WB for qemu-devel@nongnu.org; Sat, 17 Feb 2007 20:04:43 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1HIaTq-0002LC-9D for qemu-devel@nongnu.org; Sat, 17 Feb 2007 20:04:42 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1HIaTq-0002L9-4D for qemu-devel@nongnu.org; Sat, 17 Feb 2007 20:04:42 -0500 Received: from nz-out-0506.google.com ([64.233.162.234]) by monty-python.gnu.org with esmtp (Exim 4.52) id 1HIaTp-0005CA-LT for qemu-devel@nongnu.org; Sat, 17 Feb 2007 20:04:41 -0500 Received: by nz-out-0506.google.com with SMTP id i11so2268743nzi for ; Sat, 17 Feb 2007 17:04:41 -0800 (PST) Message-ID: <45D7A625.2050503@codemonkey.ws> Date: Sat, 17 Feb 2007 19:04:37 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <45D7A43B.20808@codemonkey.ws> In-Reply-To: <45D7A43B.20808@codemonkey.ws> Content-Type: multipart/mixed; boundary="------------080704090203000605040703" Subject: [Qemu-devel] [PATCH 2/3] Add -bootp option for slip Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Erwan Velu This is a multi-part message in MIME format. --------------080704090203000605040703 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit The following patch adds a -bootp option. This option takes a filename that will be advertised as the BOOTP filename. Regards, Anthony Liguori --------------080704090203000605040703 Content-Type: text/x-patch; name="slirp-bootp.diff" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="slirp-bootp.diff" diff -r ea5eb79ade8d slirp/bootp.c --- a/slirp/bootp.c Thu Feb 15 16:49:28 2007 -0600 +++ b/slirp/bootp.c Thu Feb 15 16:49:30 2007 -0600 @@ -38,6 +38,8 @@ typedef struct { BOOTPClient bootp_clients[NB_ADDR]; +const char *bootp_filename; + static const uint8_t rfc1533_cookie[] = { RFC1533_COOKIE }; #ifdef DEBUG @@ -168,6 +170,10 @@ static void bootp_reply(struct bootp_t * goto new_addr; } } + + if (bootp_filename) + snprintf(rbp->bp_file, sizeof(rbp->bp_file), "%s", bootp_filename); + dprintf("offered addr=%08x\n", ntohl(daddr.sin_addr.s_addr)); saddr.sin_addr.s_addr = htonl(ntohl(special_addr.s_addr) | CTL_ALIAS); diff -r ea5eb79ade8d vl.c --- a/vl.c Thu Feb 15 16:49:28 2007 -0600 +++ b/vl.c Thu Feb 15 16:57:07 2007 -0600 @@ -6488,6 +6488,7 @@ void help(void) "\n" #ifdef CONFIG_SLIRP "-tftp prefix allow tftp access to files starting with prefix [-net user]\n" + "-bootp file advertise file in BOOTP replies\n" #ifndef _WIN32 "-smb dir allow SMB access to files in 'dir' [-net user]\n" #endif @@ -6576,6 +6577,7 @@ enum { QEMU_OPTION_net, QEMU_OPTION_tftp, + QEMU_OPTION_bootp, QEMU_OPTION_smb, QEMU_OPTION_redir, @@ -6652,6 +6654,7 @@ const QEMUOption qemu_options[] = { { "net", HAS_ARG, QEMU_OPTION_net}, #ifdef CONFIG_SLIRP { "tftp", HAS_ARG, QEMU_OPTION_tftp }, + { "bootp", HAS_ARG, QEMU_OPTION_bootp }, #ifndef _WIN32 { "smb", HAS_ARG, QEMU_OPTION_smb }, #endif @@ -7185,6 +7188,9 @@ int main(int argc, char **argv) case QEMU_OPTION_tftp: tftp_prefix = optarg; break; + case QEMU_OPTION_bootp: + bootp_filename = optarg; + break; #ifndef _WIN32 case QEMU_OPTION_smb: net_slirp_smb(optarg); diff -r ea5eb79ade8d vl.h --- a/vl.h Thu Feb 15 16:49:28 2007 -0600 +++ b/vl.h Thu Feb 15 16:49:30 2007 -0600 @@ -163,6 +163,7 @@ extern int no_quit; extern int no_quit; extern int semihosting_enabled; extern int autostart; +extern const char *bootp_filename; #define MAX_OPTION_ROMS 16 extern const char *option_rom[MAX_OPTION_ROMS]; diff -r ea5eb79ade8d qemu-doc.texi --- a/qemu-doc.texi Thu Feb 15 16:49:28 2007 -0600 +++ b/qemu-doc.texi Thu Feb 15 16:57:23 2007 -0600 @@ -445,6 +445,16 @@ guest must be configured in binary mode guest must be configured in binary mode (use the command @code{bin} of the Unix TFTP client). The host IP address on the guest is as usual 10.0.2.2. + +@item -bootp file +When using the user mode network stack, broadcast @var{file} as the BOOTP +filename. In conjunction with @option{-tftp}, this can be used to network boot +a guest from a local directory. + +Example (using pxelinux): +@example +qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0 +@end example @item -smb dir When using the user mode network stack, activate a built-in SMB --------------080704090203000605040703--