Hi, gentle ping
On Thu, Oct 1, 2026 at 11:17 PM Tim Pambor <[email protected]> wrote: > When a vmnet-host interface is added to an isolated network via > 'net-uuid', vmnet does not provide DHCP, and the host side of the > bridge gets no address, so the host cannot talk to guests on that > network without manually assigning an IP address to the bridge > interface after QEMU has started. > > vmnet provides the vmnet_host_ip_address_key, > vmnet_host_subnet_mask_key and vmnet_host_ipv6_address_key > properties to assign addresses to the host interface in this case. > Expose them as the 'host-ip-address', 'host-subnet-mask' and > 'host-ipv6-address' options of the vmnet-host backend. > > Acked-by: Markus Armbruster <[email protected]> > Signed-off-by: Tim Pambor <[email protected]> > --- > Changes in v2: > - Fixed spelling in the commit message > - Link to v1: > https://lore.kernel.org/qemu-devel/[email protected] > --- > net/vmnet-host.c | 35 +++++++++++++++++++++++++++++++++++ > qapi/net.json | 15 ++++++++++++++- > qemu-options.hx | 6 +++++- > 3 files changed, 54 insertions(+), 2 deletions(-) > > diff --git a/net/vmnet-host.c b/net/vmnet-host.c > index 49fb25c224..8ed7ee9d41 100644 > --- a/net/vmnet-host.c > +++ b/net/vmnet-host.c > @@ -41,6 +41,26 @@ static bool validate_options(const Netdev *netdev, > Error **errp) > return false; > } > > + if ((options->host_ip_address || options->host_subnet_mask) && > + !(options->host_ip_address && options->host_subnet_mask)) { > + error_setg(errp, > + "'host-ip-address' and 'host-subnet-mask' " > + "should be provided together"); > + return false; > + } > + > + if (options->host_ip_address && !options->net_uuid) { > + error_setg(errp, > + "'host-ip-address' requires 'net-uuid' to be > specified"); > + return false; > + } > + > + if (options->host_ipv6_address && !options->net_uuid) { > + error_setg(errp, > + "'host-ipv6-address' requires 'net-uuid' to be > specified"); > + return false; > + } > + > return true; > } > > @@ -77,6 +97,21 @@ static xpc_object_t build_if_desc(const Netdev *netdev) > options->subnet_mask); > } > > + if (options->host_ip_address) { > + xpc_dictionary_set_string(if_desc, > + vmnet_host_ip_address_key, > + options->host_ip_address); > + xpc_dictionary_set_string(if_desc, > + vmnet_host_subnet_mask_key, > + options->host_subnet_mask); > + } > + > + if (options->host_ipv6_address) { > + xpc_dictionary_set_string(if_desc, > + vmnet_host_ipv6_address_key, > + options->host_ipv6_address); > + } > + > return if_desc; > } > > diff --git a/qapi/net.json b/qapi/net.json > index b46af1fdc9..38b43d20ed 100644 > --- a/qapi/net.json > +++ b/qapi/net.json > @@ -795,6 +795,16 @@ > # is allowed only with other interfaces added to this network > # identified by the UUID. Requires at least macOS Big Sur 11.0. > # > +# @host-ip-address: The IPv4 address to set on the host side of the > +# interface. Only applicable when @net-uuid is also specified. > +# Must be specified along with @host-subnet-mask. > +# > +# @host-subnet-mask: The IPv4 subnet mask to set on the host side of > +# the interface. Must be specified along with @host-ip-address. > +# > +# @host-ipv6-address: The IPv6 address to set on the host side of the > +# interface. Only applicable when @net-uuid is also specified. > +# > # Since: 7.1 > ## > { 'struct': 'NetdevVmnetHostOptions', > @@ -803,7 +813,10 @@ > '*end-address': 'str', > '*subnet-mask': 'str', > '*isolated': 'bool', > - '*net-uuid': 'str' }, > + '*net-uuid': 'str', > + '*host-ip-address': 'str', > + '*host-subnet-mask': 'str', > + '*host-ipv6-address': 'str' }, > 'if': 'CONFIG_VMNET' } > > ## > diff --git a/qemu-options.hx b/qemu-options.hx > index 2f6863180b..9e250ad196 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -3137,11 +3137,15 @@ DEF("netdev", HAS_ARG, QEMU_OPTION_netdev, > #ifdef CONFIG_VMNET > "-netdev vmnet-host,id=str[,isolated=on|off][,net-uuid=uuid]\n" > " [,start-address=addr,end-address=addr,subnet-mask=mask]\n" > + " > [,host-ip-address=addr,host-subnet-mask=mask][,host-ipv6-address=addr]\n" > " configure a vmnet network backend in host mode with > ID 'str',\n" > " isolate this interface from others with > 'isolated',\n" > " configure the address range and choose a subnet > mask,\n" > " specify network UUID 'uuid' to disable DHCP and > interact with\n" > - " vmnet-host interfaces within this isolated network\n" > + " vmnet-host interfaces within this isolated > network,\n" > + " set the host-side IPv4 address and subnet mask on > an\n" > + " isolated network with 'host-ip-address' and > 'host-subnet-mask',\n" > + " set the host-side IPv6 address with > 'host-ipv6-address'\n" > "-netdev vmnet-shared,id=str[,isolated=on|off][,nat66-prefix=addr]\n" > " [,start-address=addr,end-address=addr,subnet-mask=mask]\n" > " configure a vmnet network backend in shared mode > with ID 'str',\n" > > --- > base-commit: efa3b9d5ac8024078225e1ab434411fdfe53b457 > change-id: 20260927-vmnet-host-address-47ff5d9adcbb > > Best regards, > -- > Tim Pambor <[email protected]> > >
