[libvirt] [PATCH v4 5/7] Added network events to the bridged network driver
Daniel P. Berrange
berrange at redhat.com
Wed Dec 11 13:29:56 UTC 2013
On Wed, Dec 11, 2013 at 11:38:02AM +0100, Cédric Bosdonnat wrote:
> ---
> src/network/bridge_driver.c | 90 ++++++++++++++++++++++++++++++++++++
> src/network/bridge_driver_platform.h | 3 ++
> 2 files changed, 93 insertions(+)
ACK
> +static int
> +networkConnectNetworkEventRegisterAny(virConnectPtr conn,
> + virNetworkPtr net,
> + int eventID,
> + virConnectNetworkEventGenericCallback callback,
> + void *opaque,
> + virFreeCallback freecb)
> +{
> + virNetworkDriverStatePtr driver = conn->networkPrivateData;
> + int ret = -1;
> +
> + networkDriverLock(driver);
> +
> + if (virConnectNetworkEventRegisterAnyEnsureACL(conn) < 0)
> + goto cleanup;
> +
> + if (virNetworkEventStateRegisterID(conn, driver->networkEventState,
> + net, eventID,
> + VIR_OBJECT_EVENT_CALLBACK(callback),
> + opaque, freecb, &ret) < 0)
> + ret = -1;
> +
> + networkDriverUnlock(driver);
> +
> +cleanup:
> + return ret;
> +}
Opps, locking is wrong - if the ACL check fails we leave the driver locked.
We can actually do without locking entirely, since the event state struct
is self-locking, so I'll remove the lock/unlock
> +
> +static int
> +networkConnectNetworkEventDeregisterAny(virConnectPtr conn,
> + int callbackID)
> +{
> + virNetworkDriverStatePtr driver = conn->networkPrivateData;
> + int ret = -1;
> +
> + if (virConnectNetworkEventDeregisterAnyEnsureACL(conn) < 0)
> + goto cleanup;
> +
> +
> + networkDriverLock(driver);
> + ret = virObjectEventStateDeregisterID(conn,
> + driver->networkEventState,
> + callbackID);
> + networkDriverUnlock(driver);
> +
> +cleanup:
> + return ret;
> +}
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list