net/tap: net_init_tap(): refactor parameter checking
Move checks to the top of the function to simplify further refactoring. Merge duplicated checks. Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> Reviewed-by: Ben Chaney <bchaney@akamai.com> Signed-off-by: Jason Wang <jasowang@redhat.com>
This commit is contained in:
committed by
Jason Wang
parent
b8ae1e56d4
commit
24f458abe7
53
net/tap.c
53
net/tap.c
@@ -841,16 +841,30 @@ int net_init_tap(const Netdev *netdev, const char *name,
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tap->fd) {
|
||||
if (tap->ifname || tap->script || tap->downscript ||
|
||||
tap->has_vnet_hdr || tap->helper || tap->has_queues ||
|
||||
tap->fds || tap->vhostfds) {
|
||||
error_setg(errp, "ifname=, script=, downscript=, vnet_hdr=, "
|
||||
"helper=, queues=, fds=, and vhostfds= "
|
||||
"are invalid with fd=");
|
||||
return -1;
|
||||
}
|
||||
if (tap->has_queues + !!tap->helper + !!tap->fds + !!tap->fd > 1) {
|
||||
error_setg(errp, "queues=, helper=, fds= and fd= are mutual exclusive");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((tap->fd || tap->fds || tap->helper) &&
|
||||
(tap->ifname || tap->script || tap->downscript ||
|
||||
tap->has_vnet_hdr)) {
|
||||
error_setg(errp, "ifname=, script=, downscript=, vnet_hdr= "
|
||||
"are invalid with fd=/fds=/helper=");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tap->vhostfds && !tap->fds) {
|
||||
error_setg(errp, "vhostfds= is invalid if fds= wasn't specified");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tap->vhostfd && tap->fds) {
|
||||
error_setg(errp, "vhostfd= is invalid with fds=");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tap->fd) {
|
||||
fd = monitor_fd_param(monitor_cur(), tap->fd, errp);
|
||||
if (fd == -1) {
|
||||
return -1;
|
||||
@@ -878,15 +892,6 @@ int net_init_tap(const Netdev *netdev, const char *name,
|
||||
char **vhost_fds;
|
||||
int nfds = 0, nvhosts = 0;
|
||||
|
||||
if (tap->ifname || tap->script || tap->downscript ||
|
||||
tap->has_vnet_hdr || tap->helper || tap->has_queues ||
|
||||
tap->vhostfd) {
|
||||
error_setg(errp, "ifname=, script=, downscript=, vnet_hdr=, "
|
||||
"helper=, queues=, and vhostfd= "
|
||||
"are invalid with fds=");
|
||||
return -1;
|
||||
}
|
||||
|
||||
fds = g_new0(char *, MAX_TAP_QUEUES);
|
||||
vhost_fds = g_new0(char *, MAX_TAP_QUEUES);
|
||||
|
||||
@@ -946,13 +951,6 @@ free_fail:
|
||||
g_free(vhost_fds);
|
||||
return ret;
|
||||
} else if (tap->helper) {
|
||||
if (tap->ifname || tap->script || tap->downscript ||
|
||||
tap->has_vnet_hdr || tap->has_queues || tap->vhostfds) {
|
||||
error_setg(errp, "ifname=, script=, downscript=, vnet_hdr=, "
|
||||
"queues=, and vhostfds= are invalid with helper=");
|
||||
return -1;
|
||||
}
|
||||
|
||||
fd = net_bridge_run_helper(tap->helper,
|
||||
tap->br ?: DEFAULT_BRIDGE_INTERFACE,
|
||||
errp);
|
||||
@@ -981,11 +979,6 @@ free_fail:
|
||||
g_autofree char *downscript =
|
||||
tap_parse_script(tap->downscript, DEFAULT_NETWORK_DOWN_SCRIPT);
|
||||
|
||||
if (tap->vhostfds) {
|
||||
error_setg(errp, "vhostfds= is invalid if fds= wasn't specified");
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (tap->ifname) {
|
||||
pstrcpy(ifname, sizeof ifname, tap->ifname);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user