On 07/20/2012 10:25 AM, Osier Yang wrote:
src/network/bridge_driver.c: Implement listAllNetworks.
---
src/network/bridge_driver.c | 18 ++++++++++++++++++
1 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index bb2a765..6a3ed3f 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -47,6 +47,7 @@
#include "datatypes.h"
#include "bridge_driver.h"
#include "network_conf.h"
+#include "virobjectlist.h"
#include "driver.h"
#include "buf.h"
#include "virpidfile.h"
@@ -2201,6 +2202,22 @@ static int networkListDefinedNetworks(virConnectPtr conn, char
**const names, in
return -1;
}
+static int
+networkListAllNetworks(virConnectPtr conn,
+ virNetworkPtr **nets,
+ unsigned int flags)
+{
+ struct network_driver *driver = conn->networkPrivateData;
+ int ret = -1;
+
+ virCheckFlags(VIR_CONNECT_LIST_NETWORKS_FILTERS_ALL, -1);
If you return with an error here, nets will be unset. Even though a
*sane* caller would check the return value prior to dereferencing
anything in nets, it would still be a good idea to to "*nets = NULL"
before anything else.
Otherwise, ACK.
+
+ networkDriverLock(driver);
+ ret = virNetworkList(conn, driver->networks, nets, flags);
+ networkDriverUnlock(driver);
+
+ return ret;
+}
static int networkIsActive(virNetworkPtr net)
{
@@ -2689,6 +2706,7 @@ static virNetworkDriver networkDriver = {
.listNetworks = networkListNetworks, /* 0.2.0 */
.numOfDefinedNetworks = networkNumDefinedNetworks, /* 0.2.0 */
.listDefinedNetworks = networkListDefinedNetworks, /* 0.2.0 */
+ .listAllNetworks = networkListAllNetworks, /* 0.9.14 */
.networkLookupByUUID = networkLookupByUUID, /* 0.2.0 */
.networkLookupByName = networkLookupByName, /* 0.2.0 */
.networkCreateXML = networkCreate, /* 0.2.0 */