Skip to content

Commit

Permalink
net: simplify net_client_init1()
Browse files Browse the repository at this point in the history
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
  • Loading branch information
stefanhaRH committed Jun 24, 2015
1 parent 4ef0def commit 1e81aba
Showing 1 changed file with 16 additions and 22 deletions.
38 changes: 16 additions & 22 deletions net/net.c
Expand Up @@ -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 ||
Expand All @@ -934,34 +930,32 @@ static int net_client_init1(const void *object, int is_netdev, Error **errp)
return -1;
}
} else {
u.net = object;
opts = u.net->opts;
if (opts->kind == NET_CLIENT_OPTIONS_KIND_HUBPORT) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
"a net type");
return -1;
}
const NetLegacy *net = object;
opts = net->opts;
/* missing optional values have been initialized to "all bits zero" */
name = u.net->has_id ? u.net->id : u.net->name;
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;
}

if (!net_client_init_fun[opts->kind]) {
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "type",
"a net backend type (maybe it is not compiled "
"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) {
Expand Down

0 comments on commit 1e81aba

Please sign in to comment.