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

Reply via email to