- bxhub.cc: Put all client data in a structure and added send_packet() function.
- bxhub.cc: Added SVN ID line.
- netmod.cc: Changed some DHCP messages to BX_DEBUG.
- eth_socket.cc: Minor cleanups.
external program 'bxhub' (simulating a two port ethernet hub). It is based on
an old SF patch and it has been updated and extended:
- Windows support (tested with MinGW/MSYS and MSVC nmake).
- Command line arguments for 'bxhub' (base port number, MAC address, TFTP).
- Added support for DHCP, TFTP, ARP and ICMP echo (ping). It uses parts of the
code for the 'vnet' module with some additions from the former "slirp backend".
- TODO: code cleanup to reduce duplication, rewrite of the networking plugins
stuff similar to the work done with the sound drivers.
"fatal". It can be used for all cases when there is no workaroud present to
avoid application crash or incorrect simulation behaviour. As a first step now
using BX_FATAL() for some data structure size and bit field errors.
- added Android case to the configure script.
- renamed file memory.h to memory-bochs.h to fix conflict with NDK.
- fixed Android issues in some files.
USB UHCI and the E1000 NIC are known to work fine on some guest systems, so
it's safe to remove this attribute.
TODO: Some other Bochs features need to be reviewed for this.
the init code. Started with the SeeReg[] array values. Some other setting could
be added later. The parser code is based on the slirp config parser.
Slirp: fixed possible segfault if the value for a parameter is missing.
- embedding combined manifest makes BOCHS.EXE usable
- list of DLL plugins now depends on the pci and debugger options
- 'make clean' now removes the generated manifest files
- renamed variable for external rules
- documentation update
sections. A better solution must be found for the basic set of device plugins
in iodev that don't require special rules.
Switched back to the original gui macro naming for linking plugins.
rules can be built now (keyboard, pit, gameport, serial, vga, svga_cirrus,
hdimage, netmod, soundmod, usb_common). The generated DLLs are usable with the
BOCHS.EXE built with the IDE, but the nmake won't work at all yet.
required an external binary and it couldn't be ported to Windows. Now the new
builtin and portable slirp support based on Qemu's implementation is almost
stable and all the 'vnet' DHCP and TFTP features have been ported to the new
slirp module.
TODO: rename all the "slirp_new" stuff to "slirp"
- removed obsolete local variables that made the hostname and bootfile options fail
- store requested hostname as a string to simplify the code
- check free space while processing the parameter list
- setting the max. DHCP message size is not supported yet (send error to log)
TODO #1: implement all features of the existing (vnet) TFTP support in Slirp.
TODO #2: make the slirp DHCP server work like the vnet one.
TODO #3: finally remove the slirp backend and rename the new one to "slirp".
- bx_param_string_c method isempty() didn't work for raw byte strings. Now using
it to check whether or not the current value matches the initial one. The
parameter handling of the network adapters now use this method to check if
the MAC address is already initialized to avoid incorrect BX_ERRORs.
- small documentation update
TODO: 'dnssearch' option should accept a comma-separated list of suffixes.
Other slirp TODOs: SMB support on Linux, reduce code duplication (ARP, DHCP, TFTP)
- added support for a separate slirp config file specified with the "script"
parameter. Added sample config in the "misc" subdirectory.
- now creating one logfunctions object per slirp instance and added new function
slirp_warning() to send error messages to the Bochs log.
- regenerated dependencies for the iodev/network Makefile and updated command
line example for generating them.
Updated workspace files after adding slirp and avx sources
Updated slirp TODO list:
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
'script' parameter)
- add SMB support on Linux
- remove slirp backend module after next Bochs release
- applied remaining updates from Qemu slirp
- add #if blocks to all slirp .cc files for conditional compilation
- fixed some uninitialized variable warnings
- added container_of() macro replacement
- fixed unresolved symbol in netmod.cc
- added MSVC-style structure packing pragmas
- check for the presence of min / max macros
- enabled slirp_new for MSVC in configure script
TODO list:
- check for more updates from Qemu
- fix lots of compiler warnings
- reduce code duplication with 'vnet' module (DHCP, TFTP, ARP)
- add separate config file for slirp to make it more flexible (using the
'script' parameter)
- update MSVC workspace files
- add SMB support on Linux
- remove slirp backend module after next Bochs release
is almost a port of the Qemu 1.1.2 implementation. It has been tested successfully
on Linux and Windows (MinGW/MSYS). The networking module is currently called
"slirp_new", since the "slirp" backend module still exists.
TODO list:
- MSVC support (requires container_of() macro replacement)
- apply fixes and improvements from recent Qemu releases
- use our TFTP implementation to reduce code duplication
- check if we can share ARP and DHCP support with "vnet"
- add SMB support on Linux
- finally remove the slirp backend module support
usb device plugins. Loading the plugin means that the user wants to enable it.
Disabling the device on the command line and in the config interface is still
possible.
Detect and reply all supported TFTP extension options for both read and write
operations. Use 'blksize' value if smaller than buffer size.
TODO: increase buffer size, implement timeout mechanism
- isempty() returns 1 if string length is 0 or string has special value "none"
- sprint() copies the formatted / converted string into a buffer
- use new methods in some parts of the code (TODO: win32 dialogs)
- check for the special value "none" to avoid failures
- fixed bochsrc line after a "raw byte" string parameter
- changed parameter name "macaddr" to "mac" (same as bochsrc option parameter)
- skip disabled parameters when building the bochsrc line
- added "multiline" switch to select the output format (one or multiple lines)
- renamed siminterface method and use it in the network devices code
- renamed config parameter "i440fx_support" to "enabled"
- new config parameter "chipset" added (current choices "i430FX" and "i440FX")
- don't load ACPI support if the i430FX chipset is selected
- select register values for the core PCI devices depending on the chipset
- USB UHCI must be connected to a PCI slot if the i430FX chipset is used
- rombios changes to make the i430FX chipset work
- TODO #1: implement limitation to 1 cpu and 128 MB RAM for the i430FX chipset
- TODO #2: verify register behaviour of both chipsets
- SIM->opt_plugin_ctrl() now can be used to verify the optional plugin
configuration when using the plugin name "*". The 'load' value 1 makes
sure that all plugins with the value 1 are loaded. The 'load' value 0
unloads all plugin with the value 0 (marked for removal).
- add the default set of plugins to the 'plugin_ctrl' list and load all these
pre-defined optional plugins before parsing the configuration.
- special wx case: verify plugin configuration before showing the plugin
control dialog and before initialising hardware.
- device plugins that have been loaded, but not configured now set their
plugin control value to 0. Added the plugin unload check before signalling reset.
- ne2k: replaced debugger command 'info ne2k' completely by a new version based
on 'info device' with additional arguments and removed all of the now obsolete
stuff (ne2k device stub, macro for print_info())
- pci: added option 'dump=full' for the debugger command 'info device' to show
the whole PCI config space
- TODO: some other devices could have support for additional options in
debug_dump()
- removed FILE parameter from print_info() (unused - since dbg_printf() doesn't
need it)
- converted tabs to spaces
- TODO: implement 'info device' with optional arguments to get rid of the
print_info() method