[libvirt] [PATCH v1 16/31] bridge_driver: Adapt to new virNetworkObjList accessors
Peter Krempa
pkrempa at redhat.com
Tue Mar 3 10:41:01 UTC 2015
On Thu, Feb 26, 2015 at 15:17:25 +0100, Michal Privoznik wrote:
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
> src/network/bridge_driver.c | 333 ++++++++++++++++++++------------------------
> 1 file changed, 148 insertions(+), 185 deletions(-)
>
Some bikeshedding below ...
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index 268af49..1c73342 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -342,105 +342,91 @@ networkBridgeDummyNicName(const char *brname)
> return nicname;
> }
>
> -/* Update the internal status of all allegedly active networks
> - * according to external conditions on the host (i.e. anything that
> - * isn't stored directly in each network's state file). */
> -static void
> -networkUpdateAllState(void)
> +static int
> +networkUpdateAllState(virNetworkObjPtr obj,
This function now updates state of one network, thus the 'All' word is
misleading.
> + void *opaque ATTRIBUTE_UNUSED)
> {
> - size_t i;
> + int ret = -1;
>
> - for (i = 0; i < driver->networks->count; i++) {
> - virNetworkObjPtr obj = driver->networks->objs[i];
> + virNetworkObjLock(obj);
> + if (!virNetworkObjIsActive(obj)) {
> + virNetworkObjUnlock(obj);
> + return 0;
> + }
>
> - virNetworkObjLock(obj);
> - if (!virNetworkObjIsActive(obj)) {
> - virNetworkObjUnlock(obj);
> - continue;
> - }
> + switch (obj->def->forward.type) {
> + case VIR_NETWORK_FORWARD_NONE:
> + case VIR_NETWORK_FORWARD_NAT:
> + case VIR_NETWORK_FORWARD_ROUTE:
> + /* If bridge doesn't exist, then mark it inactive */
> + if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) == 1))
> + obj->active = 0;
> + break;
>
> - switch (obj->def->forward.type) {
> - case VIR_NETWORK_FORWARD_NONE:
> - case VIR_NETWORK_FORWARD_NAT:
> - case VIR_NETWORK_FORWARD_ROUTE:
> - /* If bridge doesn't exist, then mark it inactive */
> - if (!(obj->def->bridge && virNetDevExists(obj->def->bridge) == 1))
> + case VIR_NETWORK_FORWARD_BRIDGE:
> + if (obj->def->bridge) {
> + if (virNetDevExists(obj->def->bridge) != 1)
> obj->active = 0;
> break;
> -
> - case VIR_NETWORK_FORWARD_BRIDGE:
> - if (obj->def->bridge) {
> - if (virNetDevExists(obj->def->bridge) != 1)
> - obj->active = 0;
> - break;
> - }
> - /* intentionally drop through to common case for all
> - * macvtap networks (forward='bridge' with no bridge
> - * device defined is macvtap using its 'bridge' mode)
> - */
> - case VIR_NETWORK_FORWARD_PRIVATE:
> - case VIR_NETWORK_FORWARD_VEPA:
> - case VIR_NETWORK_FORWARD_PASSTHROUGH:
> - /* so far no extra checks */
> - break;
> -
> - case VIR_NETWORK_FORWARD_HOSTDEV:
> - /* so far no extra checks */
> - break;
> - }
> -
> - /* Try and read dnsmasq/radvd pids of active networks */
> - if (obj->active && obj->def->ips && (obj->def->nips > 0)) {
> - char *radvdpidbase;
> -
> - ignore_value(virPidFileReadIfAlive(driver->pidDir,
> - obj->def->name,
> - &obj->dnsmasqPid,
> - dnsmasqCapsGetBinaryPath(driver->dnsmasqCaps)));
> - radvdpidbase = networkRadvdPidfileBasename(obj->def->name);
> - if (!radvdpidbase)
> - break;
> - ignore_value(virPidFileReadIfAlive(driver->pidDir,
> - radvdpidbase,
> - &obj->radvdPid, RADVD));
> - VIR_FREE(radvdpidbase);
> }
> -
> - virNetworkObjUnlock(obj);
> + /* intentionally drop through to common case for all
> + * macvtap networks (forward='bridge' with no bridge
> + * device defined is macvtap using its 'bridge' mode)
> + */
> + case VIR_NETWORK_FORWARD_PRIVATE:
> + case VIR_NETWORK_FORWARD_VEPA:
> + case VIR_NETWORK_FORWARD_PASSTHROUGH:
> + /* so far no extra checks */
> + break;
> +
> + case VIR_NETWORK_FORWARD_HOSTDEV:
> + /* so far no extra checks */
> + break;
> }
>
> - /* remove inactive transient networks */
> - i = 0;
> - while (i < driver->networks->count) {
> - virNetworkObjPtr obj = driver->networks->objs[i];
> - virNetworkObjLock(obj);
> -
> - if (!obj->persistent && !obj->active) {
> - networkRemoveInactive(obj);
> - continue;
> - }
> + /* Try and read dnsmasq/radvd pids of active networks */
> + if (obj->active && obj->def->ips && (obj->def->nips > 0)) {
> + char *radvdpidbase;
> +
> + ignore_value(virPidFileReadIfAlive(driver->pidDir,
> + obj->def->name,
> + &obj->dnsmasqPid,
> + dnsmasqCapsGetBinaryPath(driver->dnsmasqCaps)));
> + radvdpidbase = networkRadvdPidfileBasename(obj->def->name);
> + if (!radvdpidbase)
> + goto cleanup;
> +
> + ignore_value(virPidFileReadIfAlive(driver->pidDir,
> + radvdpidbase,
> + &obj->radvdPid, RADVD));
> + VIR_FREE(radvdpidbase);
> + }
>
> + ret = 0;
> + cleanup:
> + if (!obj->persistent && !obj->active)
> + networkRemoveInactive(obj);
> + else
> virNetworkObjUnlock(obj);
> - i++;
> - }
> + return ret;
> }
>
> -
> -static void
> -networkAutostartConfigs(void)
> +static int
> +networkAutostartConfigs(virNetworkObjPtr net,
> + void *opaque ATTRIBUTE_UNUSED)
Same here, plural may be misleading.
ACK with or without naming fixed.
Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150303/276d6b09/attachment-0001.sig>
More information about the libvir-list
mailing list