--- src/conf/network_conf.c | 19 ++++++++++++++++++- src/conf/network_conf.h | 10 ++++++++++ 2 files changed, 28 insertions(+), 1 deletions(-) diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c index 10afcde..d30d757 100644 --- a/src/conf/network_conf.c +++ b/src/conf/network_conf.c @@ -43,6 +43,7 @@ #include "buf.h" #include "c-ctype.h" #include "virfile.h" +#include "logging.h" #define MAX_BRIDGE_ID 256 #define VIR_FROM_THIS VIR_FROM_NETWORK @@ -103,6 +104,12 @@ virNetworkForwardIfDefClear(virNetworkForwardIfDefPtr def) VIR_FREE(def->dev); } +static void +virNetworkForwardVfDefClear(virNetworkForwardVfDefPtr def) +{ + VIR_FREE(def->dev); +} + static void virNetworkIpDefClear(virNetworkIpDefPtr def) { int ii; @@ -144,7 +151,7 @@ static void virNetworkDNSDefFree(virNetworkDNSDefPtr def) void virNetworkDefFree(virNetworkDefPtr def) { - int ii; + int ii, jj; if (!def) return; @@ -154,6 +161,10 @@ void virNetworkDefFree(virNetworkDefPtr def) VIR_FREE(def->domain); for (ii = 0 ; ii < def->nForwardIfs && def->forwardIfs ; ii++) { + for (jj = 0 ; jj < (def->forwardIfs[ii]).nForwardVfs ; jj++) { + virNetworkForwardVfDefClear(&(def->forwardIfs[ii].forwardVfs[jj])); + } + VIR_FREE(def->forwardIfs[ii].forwardVfs); virNetworkForwardIfDefClear(&def->forwardIfs[ii]); } VIR_FREE(def->forwardIfs); @@ -979,6 +990,9 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt) if (forwardDev) { def->forwardIfs[0].usageCount = 0; + def->forwardIfs[0].vfs_in_use_count = 0; + def->forwardIfs[0].nForwardVfs = 0; + def->forwardIfs[0].forwardVfs = NULL; def->forwardIfs[0].dev = forwardDev; forwardDev = NULL; def->nForwardIfs++; @@ -1011,6 +1025,9 @@ virNetworkDefParseXML(xmlXPathContextPtr ctxt) def->forwardIfs[ii].dev = forwardDev; forwardDev = NULL; def->forwardIfs[ii].usageCount = 0; + def->forwardIfs[ii].vfs_in_use_count = 0; + def->forwardIfs[ii].nForwardVfs = 0; + def->forwardIfs[ii].forwardVfs = NULL; def->nForwardIfs++; } } diff --git a/src/conf/network_conf.h b/src/conf/network_conf.h index 1be20f8..d1dba94 100644 --- a/src/conf/network_conf.h +++ b/src/conf/network_conf.h @@ -112,11 +112,21 @@ struct _virNetworkIpDef { virSocketAddr bootserver; }; +typedef struct _virNetworkForwardVfDef virNetworkForwardVfDef; +typedef virNetworkForwardVfDef *virNetworkForwardVfDefPtr; +struct _virNetworkForwardVfDef { + char *dev; + int usageCount; +}; + typedef struct _virNetworkForwardIfDef virNetworkForwardIfDef; typedef virNetworkForwardIfDef *virNetworkForwardIfDefPtr; struct _virNetworkForwardIfDef { char *dev; /* name of device */ int usageCount; /* how many guest interfaces are bound to this device? */ + int vfs_in_use_count; /*if SRIOV, Are any of the Vf's on the dev in use? */ + size_t nForwardVfs; + virNetworkForwardVfDefPtr forwardVfs; }; typedef struct _virPortGroupDef virPortGroupDef; -- 1.7.4.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list