net: simplify net_client_init1()
Drop the union and move the hubport creation into the !is_netdev case. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Message-id: 1432743412-15943-6-git-send-email-stefanha@redhat.com
This commit is contained in:
parent
4ef0defbad
commit
1e81aba5ac
38
net/net.c
38
net/net.c
@ -913,18 +913,14 @@ static int (* const net_client_init_fun[NET_CLIENT_OPTIONS_KIND_MAX])(
|
||||
|
||||
static int net_client_init1(const void *object, int is_netdev, Error **errp)
|
||||
{
|
||||
union {
|
||||
const Netdev *netdev;
|
||||
const NetLegacy *net;
|
||||
} u;
|
||||
const NetClientOptions *opts;
|
||||
const char *name;
|
||||
NetClientState *peer = NULL;
|
||||
|
||||
if (is_netdev) {
|
||||
u.netdev = object;
|
||||
opts = u.netdev->opts;
|
||||
name = u.netdev->id;
|
||||
const Netdev *netdev = object;
|
||||
opts = netdev->opts;
|
||||
name = netdev->id;
|
||||
|
||||
if (opts->kind == NET_CLIENT_OPTIONS_KIND_DUMP ||
|
||||
opts->kind == NET_CLIENT_OPTIONS_KIND_NIC ||
|
||||
@ -934,19 +930,19 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp)
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
u.net = object;
|
||||
opts = u.net->opts;
|
||||
const NetLegacy *net = object;
|
||||
opts = net->opts;
|
||||
/* missing optional values have been initialized to "all bits zero" */
|
||||
name = net->has_id ? net->id : net->name;
|
||||
|
||||
if (opts->kind == NET_CLIENT_OPTIONS_KIND_NONE) {
|
||||
return 0; /* nothing to do */
|
||||
}
|
||||
if (opts->kind == NET_CLIENT_OPTIONS_KIND_HUBPORT) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
|
||||
"a net type");
|
||||
return -1;
|
||||
}
|
||||
/* missing optional values have been initialized to "all bits zero" */
|
||||
name = u.net->has_id ? u.net->id : u.net->name;
|
||||
|
||||
if (opts->kind == NET_CLIENT_OPTIONS_KIND_NONE) {
|
||||
return 0; /* nothing to do */
|
||||
}
|
||||
|
||||
if (!net_client_init_fun[opts->kind]) {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
|
||||
@ -954,14 +950,12 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp)
|
||||
"into this binary)");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do not add to a vlan if it's a -netdev or a nic with a netdev=
|
||||
* parameter. */
|
||||
if (!is_netdev &&
|
||||
(opts->kind != NET_CLIENT_OPTIONS_KIND_NIC ||
|
||||
!opts->nic->has_netdev)) {
|
||||
peer = net_hub_add_port(u.net->has_vlan ? u.net->vlan : 0, NULL);
|
||||
/* Do not add to a vlan if it's a nic with a netdev= parameter. */
|
||||
if (opts->kind != NET_CLIENT_OPTIONS_KIND_NIC ||
|
||||
!opts->nic->has_netdev) {
|
||||
peer = net_hub_add_port(net->has_vlan ? net->vlan : 0, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
if (net_client_init_fun[opts->kind](opts, name, peer, errp) < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user