net: Flatten simple union NetLegacyOptions
Simple unions are simpler than flat unions in the schema, but more complicated in C and on the QMP wire: there's extra indirection in C and extra nesting on the wire, both pointless. They're best avoided in new code. NetLegacyOptions isn't new, but it's only used internally, not in QMP. Convert it to a flat union. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <1487709988-14322-3-git-send-email-armbru@redhat.com>
This commit is contained in:
parent
d081a49af8
commit
d3be4b57ce
44
net/net.c
44
net/net.c
@ -993,47 +993,47 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
|
||||
|
||||
/* Map the old options to the new flat type */
|
||||
switch (opts->type) {
|
||||
case NET_LEGACY_OPTIONS_KIND_NONE:
|
||||
case NET_LEGACY_OPTIONS_TYPE_NONE:
|
||||
return 0; /* nothing to do */
|
||||
case NET_LEGACY_OPTIONS_KIND_NIC:
|
||||
case NET_LEGACY_OPTIONS_TYPE_NIC:
|
||||
legacy.type = NET_CLIENT_DRIVER_NIC;
|
||||
legacy.u.nic = *opts->u.nic.data;
|
||||
legacy.u.nic = opts->u.nic;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_USER:
|
||||
case NET_LEGACY_OPTIONS_TYPE_USER:
|
||||
legacy.type = NET_CLIENT_DRIVER_USER;
|
||||
legacy.u.user = *opts->u.user.data;
|
||||
legacy.u.user = opts->u.user;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_TAP:
|
||||
case NET_LEGACY_OPTIONS_TYPE_TAP:
|
||||
legacy.type = NET_CLIENT_DRIVER_TAP;
|
||||
legacy.u.tap = *opts->u.tap.data;
|
||||
legacy.u.tap = opts->u.tap;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_L2TPV3:
|
||||
case NET_LEGACY_OPTIONS_TYPE_L2TPV3:
|
||||
legacy.type = NET_CLIENT_DRIVER_L2TPV3;
|
||||
legacy.u.l2tpv3 = *opts->u.l2tpv3.data;
|
||||
legacy.u.l2tpv3 = opts->u.l2tpv3;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_SOCKET:
|
||||
case NET_LEGACY_OPTIONS_TYPE_SOCKET:
|
||||
legacy.type = NET_CLIENT_DRIVER_SOCKET;
|
||||
legacy.u.socket = *opts->u.socket.data;
|
||||
legacy.u.socket = opts->u.socket;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_VDE:
|
||||
case NET_LEGACY_OPTIONS_TYPE_VDE:
|
||||
legacy.type = NET_CLIENT_DRIVER_VDE;
|
||||
legacy.u.vde = *opts->u.vde.data;
|
||||
legacy.u.vde = opts->u.vde;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_DUMP:
|
||||
case NET_LEGACY_OPTIONS_TYPE_DUMP:
|
||||
legacy.type = NET_CLIENT_DRIVER_DUMP;
|
||||
legacy.u.dump = *opts->u.dump.data;
|
||||
legacy.u.dump = opts->u.dump;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_BRIDGE:
|
||||
case NET_LEGACY_OPTIONS_TYPE_BRIDGE:
|
||||
legacy.type = NET_CLIENT_DRIVER_BRIDGE;
|
||||
legacy.u.bridge = *opts->u.bridge.data;
|
||||
legacy.u.bridge = opts->u.bridge;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_NETMAP:
|
||||
case NET_LEGACY_OPTIONS_TYPE_NETMAP:
|
||||
legacy.type = NET_CLIENT_DRIVER_NETMAP;
|
||||
legacy.u.netmap = *opts->u.netmap.data;
|
||||
legacy.u.netmap = opts->u.netmap;
|
||||
break;
|
||||
case NET_LEGACY_OPTIONS_KIND_VHOST_USER:
|
||||
case NET_LEGACY_OPTIONS_TYPE_VHOST_USER:
|
||||
legacy.type = NET_CLIENT_DRIVER_VHOST_USER;
|
||||
legacy.u.vhost_user = *opts->u.vhost_user.data;
|
||||
legacy.u.vhost_user = opts->u.vhost_user;
|
||||
break;
|
||||
default:
|
||||
abort();
|
||||
@ -1048,7 +1048,7 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
|
||||
|
||||
/* Do not add to a vlan if it's a nic with a netdev= parameter. */
|
||||
if (netdev->type != NET_CLIENT_DRIVER_NIC ||
|
||||
!opts->u.nic.data->has_netdev) {
|
||||
!opts->u.nic.has_netdev) {
|
||||
peer = net_hub_add_port(net->has_vlan ? net->vlan : 0, NULL);
|
||||
}
|
||||
|
||||
|
@ -3958,6 +3958,15 @@
|
||||
'*name': 'str',
|
||||
'opts': 'NetLegacyOptions' } }
|
||||
|
||||
##
|
||||
# @NetLegacyOptionsType:
|
||||
#
|
||||
# Since: 1.2
|
||||
##
|
||||
{ 'enum': 'NetLegacyOptionsType',
|
||||
'data': ['none', 'nic', 'user', 'tap', 'l2tpv3', 'socket', 'vde',
|
||||
'dump', 'bridge', 'netmap', 'vhost-user'] }
|
||||
|
||||
##
|
||||
# @NetLegacyOptions:
|
||||
#
|
||||
@ -3966,6 +3975,8 @@
|
||||
# Since: 1.2
|
||||
##
|
||||
{ 'union': 'NetLegacyOptions',
|
||||
'base': { 'type': 'NetLegacyOptionsType' },
|
||||
'discriminator': 'type',
|
||||
'data': {
|
||||
'none': 'NetdevNoneOptions',
|
||||
'nic': 'NetLegacyNicOptions',
|
||||
|
Loading…
Reference in New Issue
Block a user