Re: [PATCH v15 2/8] net/vmnet: add vmnet backends to qapi/net
On Mon, Feb 28, 2022 at 1:07 PM Markus Armbruster wrote: > Vladislav Yaroshchuk writes: > > > Create separate netdevs for each vmnet operating mode: > > - vmnet-host > > - vmnet-shared > > - vmnet-bridged > > > > Signed-off-by: Vladislav Yaroshchuk > > I acked v8 and v13 of the QAPI schema part. You should add Acked-by and > Reviewed-by you receive in later revisions, unless you make changes that > invalidate them. When in doubt, drop them. However, this patch is > identical to v13. You dropping my Acked-by made me look at it again, > wasting my time. Please don't. > > I missed the qapi discussion thread while working on other parts, sincerely apologize. Don't want to waste your time, sorry. > > diff --git a/qapi/net.json b/qapi/net.json > > index 7fab2e7cd8..b922e2e34f 100644 > > --- a/qapi/net.json > > +++ b/qapi/net.json > > @@ -452,6 +452,120 @@ > > '*vhostdev': 'str', > > '*queues': 'int' } } > > > > +## > > +# @NetdevVmnetHostOptions: > > +# > > +# vmnet (host mode) network backend. > > +# > > +# Allows the vmnet interface to communicate with other vmnet > > +# interfaces that are in host mode and also with the host. > > +# > > +# @start-address: The starting IPv4 address to use for the interface. > > +# Must be in the private IP range (RFC 1918). Must be > > +# specified along with @end-address and @subnet-mask. > > +# This address is used as the gateway address. The > > +# subsequent address up to and including end-address are > > +# placed in the DHCP pool. > > +# > > +# @end-address: The DHCP IPv4 range end address to use for the > > +# interface. Must be in the private IP range (RFC 1918). > > +# Must be specified along with @start-address and > > +# @subnet-mask. > > +# > > +# @subnet-mask: The IPv4 subnet mask to use on the interface. Must > > +# be specified along with @start-address and @subnet-mask. > > +# > > +# @isolated: Enable isolation for this interface. Interface isolation > > +#ensures that vmnet interface is not able to communicate > > +#with any other vmnet interfaces. Only communication with > > +#host is allowed. Available since macOS Big Sur 11.0. > > In review of v13, I suggested to replace "Available since macOS Big Sur > 11.0" by "Requires at least macOS Big Sur 11.0" here and below, and you > agreed. Looks like you forgot to actually change them. > > With these changes, QAPI schema > Acked-by: Markus Armbruster > > Fixed locally, will submit within the next version. Thank you! [...] > > Best Regards, Vladislav Yaroshchuk
Re: [PATCH v15 2/8] net/vmnet: add vmnet backends to qapi/net
Vladislav Yaroshchuk writes: > Create separate netdevs for each vmnet operating mode: > - vmnet-host > - vmnet-shared > - vmnet-bridged > > Signed-off-by: Vladislav Yaroshchuk I acked v8 and v13 of the QAPI schema part. You should add Acked-by and Reviewed-by you receive in later revisions, unless you make changes that invalidate them. When in doubt, drop them. However, this patch is identical to v13. You dropping my Acked-by made me look at it again, wasting my time. Please don't. > diff --git a/qapi/net.json b/qapi/net.json > index 7fab2e7cd8..b922e2e34f 100644 > --- a/qapi/net.json > +++ b/qapi/net.json > @@ -452,6 +452,120 @@ > '*vhostdev': 'str', > '*queues': 'int' } } > > +## > +# @NetdevVmnetHostOptions: > +# > +# vmnet (host mode) network backend. > +# > +# Allows the vmnet interface to communicate with other vmnet > +# interfaces that are in host mode and also with the host. > +# > +# @start-address: The starting IPv4 address to use for the interface. > +# Must be in the private IP range (RFC 1918). Must be > +# specified along with @end-address and @subnet-mask. > +# This address is used as the gateway address. The > +# subsequent address up to and including end-address are > +# placed in the DHCP pool. > +# > +# @end-address: The DHCP IPv4 range end address to use for the > +# interface. Must be in the private IP range (RFC 1918). > +# Must be specified along with @start-address and > +# @subnet-mask. > +# > +# @subnet-mask: The IPv4 subnet mask to use on the interface. Must > +# be specified along with @start-address and @subnet-mask. > +# > +# @isolated: Enable isolation for this interface. Interface isolation > +#ensures that vmnet interface is not able to communicate > +#with any other vmnet interfaces. Only communication with > +#host is allowed. Available since macOS Big Sur 11.0. In review of v13, I suggested to replace "Available since macOS Big Sur 11.0" by "Requires at least macOS Big Sur 11.0" here and below, and you agreed. Looks like you forgot to actually change them. With these changes, QAPI schema Acked-by: Markus Armbruster [...]
[PATCH v15 2/8] net/vmnet: add vmnet backends to qapi/net
Create separate netdevs for each vmnet operating mode: - vmnet-host - vmnet-shared - vmnet-bridged Signed-off-by: Vladislav Yaroshchuk --- net/clients.h | 11 net/meson.build | 7 +++ net/net.c | 10 net/vmnet-bridged.m | 25 + net/vmnet-common.m | 20 +++ net/vmnet-host.c| 24 net/vmnet-shared.c | 25 + net/vmnet_int.h | 25 + qapi/net.json | 133 +++- 9 files changed, 278 insertions(+), 2 deletions(-) create mode 100644 net/vmnet-bridged.m create mode 100644 net/vmnet-common.m create mode 100644 net/vmnet-host.c create mode 100644 net/vmnet-shared.c create mode 100644 net/vmnet_int.h diff --git a/net/clients.h b/net/clients.h index 92f9b59aed..c9157789f2 100644 --- a/net/clients.h +++ b/net/clients.h @@ -63,4 +63,15 @@ int net_init_vhost_user(const Netdev *netdev, const char *name, int net_init_vhost_vdpa(const Netdev *netdev, const char *name, NetClientState *peer, Error **errp); +#ifdef CONFIG_VMNET +int net_init_vmnet_host(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp); + +int net_init_vmnet_shared(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp); + +int net_init_vmnet_bridged(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp); +#endif /* CONFIG_VMNET */ + #endif /* QEMU_NET_CLIENTS_H */ diff --git a/net/meson.build b/net/meson.build index 847bc2ac85..00a88c4951 100644 --- a/net/meson.build +++ b/net/meson.build @@ -42,4 +42,11 @@ softmmu_ss.add(when: 'CONFIG_POSIX', if_true: files(tap_posix)) softmmu_ss.add(when: 'CONFIG_WIN32', if_true: files('tap-win32.c')) softmmu_ss.add(when: 'CONFIG_VHOST_NET_VDPA', if_true: files('vhost-vdpa.c')) +vmnet_files = files( + 'vmnet-common.m', + 'vmnet-bridged.m', + 'vmnet-host.c', + 'vmnet-shared.c' +) +softmmu_ss.add(when: vmnet, if_true: vmnet_files) subdir('can') diff --git a/net/net.c b/net/net.c index f0d14dbfc1..1dbb64b935 100644 --- a/net/net.c +++ b/net/net.c @@ -1021,6 +1021,11 @@ static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])( #ifdef CONFIG_L2TPV3 [NET_CLIENT_DRIVER_L2TPV3]= net_init_l2tpv3, #endif +#ifdef CONFIG_VMNET +[NET_CLIENT_DRIVER_VMNET_HOST] = net_init_vmnet_host, +[NET_CLIENT_DRIVER_VMNET_SHARED] = net_init_vmnet_shared, +[NET_CLIENT_DRIVER_VMNET_BRIDGED] = net_init_vmnet_bridged, +#endif /* CONFIG_VMNET */ }; @@ -1106,6 +,11 @@ void show_netdevs(void) #endif #ifdef CONFIG_VHOST_VDPA "vhost-vdpa", +#endif +#ifdef CONFIG_VMNET +"vmnet-host", +"vmnet-shared", +"vmnet-bridged", #endif }; diff --git a/net/vmnet-bridged.m b/net/vmnet-bridged.m new file mode 100644 index 00..c735901666 --- /dev/null +++ b/net/vmnet-bridged.m @@ -0,0 +1,25 @@ +/* + * vmnet-bridged.m + * + * Copyright(c) 2021 Vladislav Yaroshchuk + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qapi/qapi-types-net.h" +#include "vmnet_int.h" +#include "clients.h" +#include "qemu/error-report.h" +#include "qapi/error.h" + +#include + +int net_init_vmnet_bridged(const Netdev *netdev, const char *name, + NetClientState *peer, Error **errp) +{ + error_setg(errp, "vmnet-bridged is not implemented yet"); + return -1; +} diff --git a/net/vmnet-common.m b/net/vmnet-common.m new file mode 100644 index 00..56612c72ce --- /dev/null +++ b/net/vmnet-common.m @@ -0,0 +1,20 @@ +/* + * vmnet-common.m - network client wrapper for Apple vmnet.framework + * + * Copyright(c) 2021 Vladislav Yaroshchuk + * Copyright(c) 2021 Phillip Tennen + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qapi/qapi-types-net.h" +#include "vmnet_int.h" +#include "clients.h" +#include "qemu/error-report.h" +#include "qapi/error.h" + +#include + diff --git a/net/vmnet-host.c b/net/vmnet-host.c new file mode 100644 index 00..32dc437037 --- /dev/null +++ b/net/vmnet-host.c @@ -0,0 +1,24 @@ +/* + * vmnet-host.c + * + * Copyright(c) 2021 Vladislav Yaroshchuk + * + * This work is licensed under the terms of the GNU GPL, version 2 or later. + * See the COPYING file in the top-level directory. + * + */ + +#include "qemu/osdep.h" +#include "qapi/qapi-types-net.h" +#include "vmnet_int.h" +#include "clients.h" +#include "qemu/error-report.h" +#include "qapi/error.h" + +#include + +int net_init_vmnet_host(const Netdev *netdev, const char *name, +NetClientState *peer, Error **errp) { + error_setg(errp, "vmnet-host is not implemented yet"); + return -1;