
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 */