Laine Stump wrote: > On 12/8/25 1:02 PM, Roman Bogorodskiy wrote: > > Michal Prívozník wrote: > > > > > On 11/26/25 18:03, Roman Bogorodskiy wrote: > > > > SLIRP networking in bhyve doesn't support MAC and IP addresses > > > > configuration, so update the validation code to check that these options > > > > are not specified. > > > > > > > > Signed-off-by: Roman Bogorodskiy <[email protected]> > > > > --- > > > > src/bhyve/bhyve_domain.c | 17 +++++++++++++- > > > > .../bhyvexml2argv-slirp-ip.xml | 22 +++++++++++++++++++ > > > > .../bhyvexml2argv-slirp-mac-addr.xml | 22 +++++++++++++++++++ > > > > tests/bhyvexml2argvtest.c | 2 ++ > > > > 4 files changed, 62 insertions(+), 1 deletion(-) > > > > create mode 100644 tests/bhyvexml2argvdata/bhyvexml2argv-slirp-ip.xml > > > > create mode 100644 > > > > tests/bhyvexml2argvdata/bhyvexml2argv-slirp-mac-addr.xml > > > > > > > > diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c > > > > index 4c9ed29333..5c1ed86df6 100644 > > > > --- a/src/bhyve/bhyve_domain.c > > > > +++ b/src/bhyve/bhyve_domain.c > > > > @@ -325,6 +325,22 @@ bhyveDomainDeviceDefValidate(const > > > > virDomainDeviceDef *dev, > > > > break; > > > > } > > > > + case VIR_DOMAIN_DEVICE_NET: { > > > > + virDomainNetDef *net = dev->data.net; > > > > + > > > > + if (net->type == VIR_DOMAIN_NET_TYPE_USER) { > > > > + if (!net->mac_generated) { > > > > + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", > > > > + _("setting MAC address for SLIRP > > > > networking is not supported")); > > > > + return -1; > > > > > > This is a bit unfortunate as many of our public APIs (e.g. > > > virDomainDetachDevice()) try to match <interface/> using its MAC address > > > first. OTOH, they can find a match using other values specific to > > > individual device and we specifically document that device XML should be > > > passed full. > > > > Thanks for taking time to point that out. I looked to check how hard > > would that be to support that, but apparently, it's already there, > > just not mentioned in the manual page [1]. > > > > I'll push the series with this chunk removed after one more round of > > testing. > > > > 1: https://reviews.freebsd.org/D54133 > > (just now noticed this - I haven't been paying attention :-/) > > Whether or not the user provides a MAC address, the config that's stored on > disk will contain one (either user-supplied or auto-generated), and that MAC > address won't be honored, which could be confusing to users. > > When a MAC address isn't specified for <interface> we will always generate > one prior to saving the config, so that the same MAC setting will persist > across restarts of the guest; doing otherwise wreaks havoc in the guest OS - > any time the MAC address changes, it will think there is a new network > device and want to configure it (MS Windows does this even if the MAC > address of the default router changes). (Of course I'm assuming that bhyve > makes the guest NIC appear with a random MAC; does it instead always use the > same hard-coded MAC address? What if someone puts two slirp-backed > interfaces in the config?)
Could you please take a look at the v2 version of this series? I think it has these issues addressed. Roman
