[prev in list] [next in list] [prev in thread] [next in thread]
List: bochs-cvs
Subject: [Bochs-cvs] [13918] trunk/bochs
From: vruppert--- via Bochs-cvs <bochs-cvs () lists ! sourceforge ! net>
Date: 2020-08-09 17:24:08
Message-ID: 1596993848.744316.11333 () sfp-scm-3 ! v30 ! lw ! sourceforge ! com
[Download RAW message or body]
Revision: 13918
Author: vruppert
Date: 2020-08-09 17:24:08 +0000 (Sun, 09 Aug 2020)
Log Message:
-----------
Added support for setting up the network bootfile in the bxhub utility.
TODO: Implement configurable bootfile in the vnet module.
Modified Paths:
--------------
trunk/bochs/CHANGES
trunk/bochs/doc/docbook/user/user.dbk
trunk/bochs/iodev/network/eth_vnet.cc
trunk/bochs/iodev/network/netutil.cc
trunk/bochs/iodev/network/netutil.h
trunk/bochs/misc/bxhub.cc
Modified: trunk/bochs/CHANGES
===================================================================
--- trunk/bochs/CHANGES 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/CHANGES 2020-08-09 17:24:08 UTC (rev 13918)
@@ -16,6 +16,7 @@
- Added "multiple NICs" support to the NE2000 and E1000 devices. Up to 4 devices
per model are supported. Use the zero-based "card" parameter to specify device.
- Added experimental FTP service for networking modules 'vnet' and 'socket'.
+ - Fixes for network boot support with iPXE (modules 'slirp' and 'socket').
- Added log file support to 'bxhub' utility (networking module 'socket').
- Packet logging in text format for the 'slirp' and 'vnet' modules controlled
by runtime option (slirp: "pktlog" option in config / vnet: "script" parameter).
Modified: trunk/bochs/doc/docbook/user/user.dbk
===================================================================
--- trunk/bochs/doc/docbook/user/user.dbk 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/doc/docbook/user/user.dbk 2020-08-09 17:24:08 UTC (rev 13918)
@@ -8295,6 +8295,7 @@
-base=... base UDP port (bxhub uses 2 ports per Bochs session)
-mac=... host MAC address (default is b0:c4:20:00:00:0f)
-tftp=... enable FTP and TFTP support using specified directory as root
+ -bootfile=... network bootfile reported by DHCP - located on TFTP server
-loglev=... set log level (0 - 3, default 1)
-logfile=... send log output to file
--help display this help and exit
Modified: trunk/bochs/iodev/network/eth_vnet.cc
===================================================================
--- trunk/bochs/iodev/network/eth_vnet.cc 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/iodev/network/eth_vnet.cc 2020-08-09 17:24:08 UTC (rev 13918)
@@ -75,6 +75,7 @@
static const Bit8u default_dns_ipv4addr[4] = {192,168,10,2};
static const Bit8u default_ftp_ipv4addr[4] = {192,168,10,3};
static const Bit8u dhcp_base_ipv4addr[4] = {192,168,10,15};
+static const char default_bootfile[] = "pxelinux.0";
static Bit8u packet_buffer[BX_PACKET_BUFSIZE];
static unsigned packet_len;
@@ -152,6 +153,7 @@
memcpy(dhcp.srv_ipv4addr[VNET_DNS], default_dns_ipv4addr, 4);
memcpy(dhcp.srv_ipv4addr[VNET_MISC], default_ftp_ipv4addr, 4);
memcpy(dhcp.client_base_ipv4addr, dhcp_base_ipv4addr, 4);
+ strcpy(dhcp.bootfile, default_bootfile);
vnet_server.init(dev, &dhcp, netif);
vnet_server.init_client(0, (Bit8u*)macaddr);
Modified: trunk/bochs/iodev/network/netutil.cc
===================================================================
--- trunk/bochs/iodev/network/netutil.cc 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/iodev/network/netutil.cc 2020-08-09 17:24:08 UTC (rev 13918)
@@ -1740,7 +1740,7 @@
void vnet_server_c::ftp_recv_file(tcp_conn_t *tcpc_cmd, tcp_conn_t *tcpc_data,
const char *fname)
{
- char path[BX_PATHNAME_LEN], tmp_path[BX_PATHNAME_LEN], *cptr, reply[80];
+ char path[BX_PATHNAME_LEN], tmp_path[BX_PATHNAME_LEN+4], *cptr, reply[80];
ftp_session_t *fs = (ftp_session_t*)tcpc_cmd->data;
int fd = -1;
bx_bool exists;
@@ -2059,7 +2059,9 @@
memcpy(&replybuf[20], dhcp->srv_ipv4addr[VNET_SRV], 4);
memcpy(&replybuf[28],&data[28],6);
memcpy(&replybuf[44],"vnet",4);
- memcpy(&replybuf[108],"pxelinux.0",10);
+ if (strlen(dhcp->bootfile) > 0) {
+ memcpy(&replybuf[108], dhcp->bootfile, strlen(dhcp->bootfile));
+ }
replybuf[236] = 0x63;
replybuf[237] = 0x82;
replybuf[238] = 0x53;
@@ -2472,7 +2474,7 @@
s->options &= ~TFTP_OPTION_TSIZE;
} else {
s->tsize_val = (size_t)stbuf.st_size;
- BX_DEBUG(("tftp filesize: %lu", (unsigned long)s->tsize_val));
+ BX_DEBUG(("TFTP RRQ: filesize=%lu", (unsigned long)s->tsize_val));
}
}
if ((s->options & ~TFTP_OPTION_OCTET) > 0) {
Modified: trunk/bochs/iodev/network/netutil.h
===================================================================
--- trunk/bochs/iodev/network/netutil.h 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/iodev/network/netutil.h 2020-08-09 17:24:08 UTC (rev 13918)
@@ -165,6 +165,7 @@
Bit8u host_macaddr[6];
Bit8u srv_ipv4addr[3][4];
Bit8u client_base_ipv4addr[4];
+ char bootfile[128];
} dhcp_cfg_t;
// vnet functions shared with bxhub
Modified: trunk/bochs/misc/bxhub.cc
===================================================================
--- trunk/bochs/misc/bxhub.cc 2020-08-08 19:23:35 UTC (rev 13917)
+++ trunk/bochs/misc/bxhub.cc 2020-08-09 17:24:08 UTC (rev 13918)
@@ -88,9 +88,11 @@
const Bit8u default_dns_ipv4addr[4] = {10, 0, 2, 3};
const Bit8u default_ftp_ipv4addr[4] = {10, 0, 2, 4};
const Bit8u dhcp_base_ipv4addr[4] = {10, 0, 2, 15};
+const char default_bootfile[] = "pxelinux.0";
static Bit16u port_base = 40000;
static char tftp_root[BX_PATHNAME_LEN];
+static char dhcp_bootfile[128];
static Bit8u host_macaddr[6];
static int client_max;
static Bit8u n_clients;
@@ -164,6 +166,7 @@
" -base=... base UDP port (bxhub uses 2 ports per Bochs session)\n"
" -mac=... host MAC address (default is b0:c4:20:00:00:0f)\n"
" -tftp=... enable FTP and TFTP support using specified directory as root\n"
+ " -bootfile=... network bootfile reported by DHCP - located on TFTP server\n"
" -loglev=... set log level (0 - 3, default 1)\n"
" -logfile=... send log output to file\n"
" --help display this help and exit\n\n");
@@ -180,6 +183,7 @@
bx_loglev = 1;
port_base = 40000;
tftp_root[0] = 0;
+ dhcp_bootfile[0] = 0;
bx_logfname[0] = 0;
memcpy(host_macaddr, default_host_macaddr, ETHERNET_MAC_ADDR_LEN);
while ((arg < argc) && (ret == 1)) {
@@ -209,6 +213,9 @@
else if (!strncmp("-tftp=", argv[arg], 6)) {
strcpy(tftp_root, &argv[arg][6]);
}
+ else if (!strncmp("-bootfile=", argv[arg], 10)) {
+ strcpy(dhcp_bootfile, &argv[arg][10]);
+ }
else if (!strncmp("-mac=", argv[arg], 5)) {
n = sscanf(&argv[arg][5], "%x:%x:%x:%x:%x:%x",
&tmp[0],&tmp[1],&tmp[2],&tmp[3],&tmp[4],&tmp[5]);
@@ -316,6 +323,11 @@
memcpy(dhcp.srv_ipv4addr[VNET_DNS], default_dns_ipv4addr, 4);
memcpy(dhcp.srv_ipv4addr[VNET_MISC], default_ftp_ipv4addr, 4);
memcpy(dhcp.client_base_ipv4addr, &dhcp_base_ipv4addr, 4);
+ if (strlen(dhcp_bootfile) > 0) {
+ strcpy(dhcp.bootfile, dhcp_bootfile);
+ } else {
+ strcpy(dhcp.bootfile, default_bootfile);
+ }
vnet_server.init(NULL, &dhcp, tftp_root);
printf("Host MAC address: %02x:%02x:%02x:%02x:%02x:%02x\n",
host_macaddr[0], host_macaddr[1], host_macaddr[2],
@@ -323,8 +335,9 @@
);
if (strlen(tftp_root) > 0) {
printf("FTP / TFTP using root directory '%s'\n", tftp_root);
+ printf("Network bootfile set to '%s'\n", dhcp.bootfile);
} else {
- printf("FTP / TFTP support disabled\n");
+ printf("FTP / TFTP support and network boot disabled\n");
}
if (strlen(bx_logfname) > 0) {
_______________________________________________
Bochs-cvs mailing list
Bochs-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bochs-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic