[libvirt] [PATCH 0/6] networkStartNetworkVirtual: Cleanup error labels

*** BLURB HERE *** Michal Prívozník (6): networkStartNetworkVirtual: s/err5/error networkStartNetworkVirtual: Dissolve 'err4' label in 'error' networkStartNetworkVirtual: Dissolve 'err3' label in 'error' networkStartNetworkVirtual: Dissolve 'err2' label in 'error' networkStartNetworkVirtual: Dissolve 'err1' label in 'error' networkStartNetworkVirtual: Dissolve 'err0' label in 'error' src/network/bridge_driver.c | 73 +++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 40 deletions(-) -- 2.21.0

In attempt to getting rid of errN labels let's start with the most upper one and rename it to 'error'. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 26f7f80418..ef82a3e310 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2485,14 +2485,14 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, } if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true, true) < 0) - goto err5; + goto error; VIR_FREE(macTapIfName); VIR_FREE(macMapFile); return 0; - err5: + error: virErrorPreserveLast(&save_err); if (def->bandwidth) virNetDevBandwidthClear(def->bridge); -- 2.21.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index ef82a3e310..88e49969b5 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2335,7 +2335,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virMacMapPtr macmap; char *macMapFile = NULL; int tapfd = -1; - pid_t dnsmasqPid; + bool dnsmasqStarted = false; /* Check to see if any network IP collides with an existing route */ if (networkCheckRouteCollision(def) < 0) @@ -2465,22 +2465,24 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, networkStartDhcpDaemon(driver, obj) < 0) goto err3; + dnsmasqStarted = true; + /* start radvd if there are any ipv6 addresses */ if (v6present && networkStartRadvd(driver, obj) < 0) - goto err4; + goto error; /* dnsmasq does not wait for DAD to complete before daemonizing, * so we need to wait for it ourselves. */ if (v6present && networkWaitDadFinish(obj) < 0) - goto err4; + goto error; /* DAD has finished, dnsmasq is now bound to the * bridge's IPv6 address, so we can set the dummy tun down. */ if (tapfd >= 0) { if (virNetDevSetOnline(macTapIfName, false) < 0) - goto err4; + goto error; VIR_FORCE_CLOSE(tapfd); } @@ -2497,12 +2499,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (def->bandwidth) virNetDevBandwidthClear(def->bridge); - err4: - if (!save_err) - virErrorPreserveLast(&save_err); - - dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); - if (dnsmasqPid > 0) { + if (dnsmasqStarted) { + pid_t dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); kill(dnsmasqPid, SIGTERM); virNetworkObjSetDnsmasqPid(obj, -1); } -- 2.21.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 88e49969b5..cd59039bdb 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2336,6 +2336,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, char *macMapFile = NULL; int tapfd = -1; bool dnsmasqStarted = false; + bool devOnline = false; /* Check to see if any network IP collides with an existing route */ if (networkCheckRouteCollision(def) < 0) @@ -2430,6 +2431,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (virNetDevSetOnline(def->bridge, 1) < 0) goto err2; + devOnline = true; + for (i = 0; i < def->nroutes; i++) { virSocketAddrPtr gateway = NULL; @@ -2450,12 +2453,12 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* If forward.type != NONE, turn on global IP forwarding */ if (def->forward.type != VIR_NETWORK_FORWARD_NONE) { if (v6present && !virNetDevIPCheckIPv6Forwarding()) - goto err3; /* Precise error message already provided */ + goto error; /* Precise error message already provided */ if (networkEnableIPForwarding(v4present, v6present) < 0) { virReportSystemError(errno, "%s", _("failed to enable IP forwarding")); - goto err3; + goto error; } } @@ -2463,7 +2466,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* start dnsmasq if there are any IP addresses (v4 or v6) */ if ((v4present || v6present) && networkStartDhcpDaemon(driver, obj) < 0) - goto err3; + goto error; dnsmasqStarted = true; @@ -2505,10 +2508,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjSetDnsmasqPid(obj, -1); } - err3: - if (!save_err) - virErrorPreserveLast(&save_err); - ignore_value(virNetDevSetOnline(def->bridge, 0)); + if (devOnline) + ignore_value(virNetDevSetOnline(def->bridge, 0)); err2: if (!save_err) -- 2.21.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index cd59039bdb..4c920d1fdd 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2337,6 +2337,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, int tapfd = -1; bool dnsmasqStarted = false; bool devOnline = false; + bool firewalRulesAdded = false; /* Check to see if any network IP collides with an existing route */ if (networkCheckRouteCollision(def) < 0) @@ -2413,6 +2414,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, networkAddFirewallRules(def) < 0) goto err1; + firewalRulesAdded = true; + for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_UNSPEC, i)); i++) { if (VIR_SOCKET_ADDR_IS_FAMILY(&ipdef->address, AF_INET)) v4present = true; @@ -2421,15 +2424,15 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, /* Add the IP address/netmask to the bridge */ if (networkAddAddrToBridge(obj, ipdef) < 0) - goto err2; + goto error; } if (networkStartHandleMACTableManagerMode(obj, macTapIfName) < 0) - goto err2; + goto error; /* Bring up the bridge interface */ if (virNetDevSetOnline(def->bridge, 1) < 0) - goto err2; + goto error; devOnline = true; @@ -2511,10 +2514,8 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (devOnline) ignore_value(virNetDevSetOnline(def->bridge, 0)); - err2: - if (!save_err) - virErrorPreserveLast(&save_err); - if (def->forward.type != VIR_NETWORK_FORWARD_OPEN) + if (firewalRulesAdded && + def->forward.type != VIR_NETWORK_FORWARD_OPEN) networkRemoveFirewallRules(def); err1: -- 2.21.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 4c920d1fdd..59c9780a7e 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2387,7 +2387,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, if (!(macMapFile = virMacMapFileName(driver->dnsmasqStateDir, def->bridge)) || !(macmap = virMacMapNew(macMapFile))) - goto err1; + goto error; virNetworkObjSetMacMap(obj, macmap); macmap = NULL; @@ -2398,21 +2398,21 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, * expects milliseconds */ if (virNetDevBridgeSetSTPDelay(def->bridge, def->delay * 1000) < 0) - goto err1; + goto error; if (virNetDevBridgeSetSTP(def->bridge, def->stp ? true : false) < 0) - goto err1; + goto error; /* Disable IPv6 on the bridge if there are no IPv6 addresses * defined, and set other IPv6 sysctl tunables appropriately. */ if (networkSetIPv6Sysctls(obj) < 0) - goto err1; + goto error; /* Add "once per network" rules */ if (def->forward.type != VIR_NETWORK_FORWARD_OPEN && networkAddFirewallRules(def) < 0) - goto err1; + goto error; firewalRulesAdded = true; @@ -2518,10 +2518,6 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, def->forward.type != VIR_NETWORK_FORWARD_OPEN) networkRemoveFirewallRules(def); - err1: - if (!save_err) - virErrorPreserveLast(&save_err); - if (macTapIfName) { VIR_FORCE_CLOSE(tapfd); ignore_value(virNetDevTapDelete(macTapIfName, NULL)); -- 2.21.0

Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/network/bridge_driver.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 59c9780a7e..0e9bb78c32 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -2370,7 +2370,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, */ macTapIfName = networkBridgeDummyNicName(def->bridge); if (!macTapIfName) - goto err0; + goto error; /* Keep tun fd open and interface up to allow for IPv6 DAD to happen */ if (virNetDevTapCreateInBridgePort(def->bridge, &macTapIfName, &def->mac, @@ -2380,7 +2380,7 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, VIR_NETDEV_TAP_CREATE_IFUP | VIR_NETDEV_TAP_CREATE_PERSIST) < 0) { VIR_FREE(macTapIfName); - goto err0; + goto error; } } @@ -2526,9 +2526,6 @@ networkStartNetworkVirtual(virNetworkDriverStatePtr driver, virNetworkObjUnrefMacMap(obj); VIR_FREE(macMapFile); - err0: - if (!save_err) - virErrorPreserveLast(&save_err); ignore_value(virNetDevBridgeDelete(def->bridge)); virErrorRestore(&save_err); -- 2.21.0
participants (2)
-
Erik Skultety
-
Michal Privoznik