virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
int parentIfType)
{
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
int type;
char *tmp;
VIR_XPATH_NODE_AUTORESTORE(ctxt)
virReportError(VIR_ERR_XML_ERROR,
_("interface has unsupported type '%s'"),
virInterfaceTypeToString(type));
- goto error;
+ return NULL;
}
def->type = type;
if (virInterfaceDefParseName(def, ctxt) < 0)
- goto error;
+ return NULL;
if (parentIfType == VIR_INTERFACE_TYPE_LAST) {
/* only recognize these in toplevel bond interfaces */
if (virInterfaceDefParseStartMode(def, ctxt) < 0)
- goto error;
+ return NULL;
if (virInterfaceDefParseMtu(def, ctxt) < 0)
- goto error;
+ return NULL;
if (virInterfaceDefParseIfAdressing(def, ctxt) < 0)
- goto error;
+ return NULL;
}
if (type != VIR_INTERFACE_TYPE_BRIDGE) {
/* link status makes no sense for a bridge */
lnk = virXPathNode("./link", ctxt);
if (lnk && virInterfaceLinkParseXML(lnk, &def->lnk) < 0)
- goto error;
+ return NULL;
}
switch (type) {
if (!(bridge = virXPathNode("./bridge[1]", ctxt))) {
virReportError(VIR_ERR_XML_ERROR,
"%s", _("bridge interface misses the bridge element"));
- goto error;
+ return NULL;
}
ctxt->node = bridge;
if (virInterfaceDefParseBridge(def, ctxt) < 0)
- goto error;
+ return NULL;
break;
}
case VIR_INTERFACE_TYPE_BOND: {
if (!(bond = virXPathNode("./bond[1]", ctxt))) {
virReportError(VIR_ERR_XML_ERROR,
"%s", _("bond interface misses the bond element"));
- goto error;
+ return NULL;
}
ctxt->node = bond;
if (virInterfaceDefParseBond(def, ctxt) < 0)
- goto error;
+ return NULL;
break;
}
case VIR_INTERFACE_TYPE_VLAN: {
if (!(vlan = virXPathNode("./vlan[1]", ctxt))) {
virReportError(VIR_ERR_XML_ERROR,
"%s", _("vlan interface misses the vlan element"));
- goto error;
+ return NULL;
}
ctxt->node = vlan;
if (virInterfaceDefParseVlan(def, ctxt) < 0)
- goto error;
+ return NULL;
break;
}
}
- return def;
-
- error:
- virInterfaceDefFree(def);
- return NULL;
+ return g_steal_pointer(&def);
}
void
virInterfaceDefFree(virInterfaceDef *def);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virInterfaceDef, virInterfaceDefFree);
virInterfaceDef *
virInterfaceDefParseString(const char *xmlStr,
virInterfaceObj *srcObj = payload;
struct _virInterfaceObjListCloneData *data = opaque;
char *xml = NULL;
- virInterfaceDef *backup = NULL;
+ g_autoptr(virInterfaceDef) backup = NULL;
virInterfaceObj *obj;
if (data->error)
if (!(obj = virInterfaceObjListAssignDef(data->dest, backup)))
goto error;
+ backup = NULL;
virInterfaceObjEndAPI(&obj);
virObjectUnlock(srcObj);
error:
data->error = true;
VIR_FREE(xml);
- virInterfaceDefFree(backup);
virObjectUnlock(srcObj);
return 0;
}
}
for (i = 0; i < count; i++) {
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
struct netcf_if *iface;
iface = ncf_lookup_by_name(driver->netcf, names[i]);
}
ncf_if_free(iface);
- if (!filter(conn, def)) {
- virInterfaceDefFree(def);
+ if (!filter(conn, def))
continue;
- }
- virInterfaceDefFree(def);
want++;
}
}
for (i = 0; i < count && want < nnames; i++) {
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
struct netcf_if *iface;
iface = ncf_lookup_by_name(driver->netcf, allnames[i]);
}
ncf_if_free(iface);
- if (!filter(conn, def)) {
- virInterfaceDefFree(def);
+ if (!filter(conn, def))
continue;
- }
- virInterfaceDefFree(def);
names[want++] = g_steal_pointer(&allnames[i]);
}
tmp_iface_objs = g_new0(virInterfacePtr, count + 1);
for (i = 0; i < count; i++) {
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
iface = ncf_lookup_by_name(driver->netcf, names[i]);
if (!iface) {
if (!virConnectListAllInterfacesCheckACL(conn, def)) {
ncf_if_free(iface);
iface = NULL;
- virInterfaceDefFree(def);
continue;
}
if (ifaces) {
- if (!(iface_obj = virGetInterface(conn, def->name, def->mac))) {
- virInterfaceDefFree(def);
+ if (!(iface_obj = virGetInterface(conn, def->name, def->mac)))
goto cleanup;
- }
+
tmp_iface_objs[niface_objs] = iface_obj;
}
niface_objs++;
- virInterfaceDefFree(def);
ncf_if_free(iface);
iface = NULL;
}
{
struct netcf_if *iface;
virInterfacePtr ret = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
virObjectLock(driver);
iface = ncf_lookup_by_name(driver->netcf, name);
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
struct netcf_if *iface;
int niface;
virInterfacePtr ret = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
virObjectLock(driver);
niface = ncf_lookup_by_mac_string(driver->netcf, macstr, 1, &iface);
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
{
struct netcf_if *iface = NULL;
char *xmlstr = NULL;
- virInterfaceDef *ifacedef = NULL;
+ g_autoptr(virInterfaceDef) ifacedef = NULL;
char *ret = NULL;
bool active;
cleanup:
ncf_if_free(iface);
VIR_FREE(xmlstr);
- virInterfaceDefFree(ifacedef);
virObjectUnlock(driver);
return ret;
}
{
struct netcf_if *iface = NULL;
char *xmlstr = NULL;
- virInterfaceDef *ifacedef = NULL;
+ g_autoptr(virInterfaceDef) ifacedef = NULL;
virInterfacePtr ret = NULL;
virCheckFlags(VIR_INTERFACE_DEFINE_VALIDATE, NULL);
cleanup:
ncf_if_free(iface);
VIR_FREE(xmlstr);
- virInterfaceDefFree(ifacedef);
virObjectUnlock(driver);
return ret;
}
static int netcfInterfaceUndefine(virInterfacePtr ifinfo)
{
struct netcf_if *iface = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
int ret = -1;
virObjectLock(driver);
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
unsigned int flags)
{
struct netcf_if *iface = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
int ret = -1;
bool active;
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
unsigned int flags)
{
struct netcf_if *iface = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
int ret = -1;
bool active;
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
static int netcfInterfaceIsActive(virInterfacePtr ifinfo)
{
struct netcf_if *iface = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
int ret = -1;
bool active;
cleanup:
ncf_if_free(iface);
- virInterfaceDefFree(def);
virObjectUnlock(driver);
return ret;
}
udev_list_entry_foreach(dev_entry, devices) {
struct udev_device *dev;
const char *path;
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
path = udev_list_entry_get_name(dev_entry);
dev = udev_device_new_from_syspath(udev, path);
if (filter(conn, def))
count++;
udev_device_unref(dev);
- virInterfaceDefFree(def);
}
cleanup:
udev_list_entry_foreach(dev_entry, devices) {
struct udev_device *dev;
const char *path;
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
/* Ensure we won't exceed the size of our array */
if (count > names_len)
count++;
}
udev_device_unref(dev);
- virInterfaceDefFree(def);
}
udev_enumerate_unref(enumerate);
const char *path;
const char *name;
const char *macaddr;
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
path = udev_list_entry_get_name(dev_entry);
dev = udev_device_new_from_syspath(udev, path);
def = udevGetMinimalDefForDevice(dev);
if (!virConnectListAllInterfacesCheckACL(conn, def)) {
udev_device_unref(dev);
- virInterfaceDefFree(def);
continue;
}
- virInterfaceDefFree(def);
/* Filter the results */
if (MATCH(VIR_CONNECT_LIST_INTERFACES_FILTERS_ACTIVE) &&
struct udev *udev = udev_ref(driver->udev);
struct udev_device *dev;
virInterfacePtr ret = NULL;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
/* get a device reference based on the device name */
dev = udev_device_new_from_subsystem_sysname(udev, "net", name);
cleanup:
udev_unref(udev);
- virInterfaceDefFree(def);
return ret;
}
struct udev_enumerate *enumerate = NULL;
struct udev_list_entry *dev_entry;
struct udev_device *dev;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
virInterfacePtr ret = NULL;
enumerate = udevGetDevices(udev, VIR_UDEV_IFACE_ALL);
if (enumerate)
udev_enumerate_unref(enumerate);
udev_unref(udev);
- virInterfaceDefFree(def);
return ret;
}
udevGetIfaceDef(struct udev *udev, const char *name)
{
struct udev_device *dev = NULL;
- virInterfaceDef *ifacedef;
+ g_autoptr(virInterfaceDef) ifacedef = NULL;
unsigned int mtu;
const char *mtu_str;
char *vlan_parent_dev = NULL;
udev_device_unref(dev);
- return ifacedef;
+ return g_steal_pointer(&ifacedef);
error:
udev_device_unref(dev);
- virInterfaceDefFree(ifacedef);
-
return NULL;
}
unsigned int flags)
{
struct udev *udev = udev_ref(driver->udev);
- virInterfaceDef *ifacedef;
+ g_autoptr(virInterfaceDef) ifacedef = NULL;
char *xmlstr = NULL;
virCheckFlags(VIR_INTERFACE_XML_INACTIVE, NULL);
xmlstr = virInterfaceDefFormat(ifacedef);
- virInterfaceDefFree(ifacedef);
-
cleanup:
/* decrement our udev ptr */
udev_unref(udev);
{
struct udev *udev = udev_ref(driver->udev);
struct udev_device *dev;
- virInterfaceDef *def = NULL;
+ g_autoptr(virInterfaceDef) def = NULL;
int status = -1;
dev = udev_device_new_from_subsystem_sysname(udev, "net",
cleanup:
udev_unref(udev);
- virInterfaceDefFree(def);
return status;
}
return -1;
for (i = 0; i < num; i++) {
- virNetworkDef *def;
+ g_autoptr(virNetworkDef) def = NULL;
xmlNodePtr node = testParseXMLDocFromFile(nodes[i], file, "network");
if (!node)
return -1;
if (!def)
return -1;
- if (!(obj = virNetworkObjAssignDef(privconn->networks, def, 0))) {
- virNetworkDefFree(def);
+ if (!(obj = virNetworkObjAssignDef(privconn->networks, def, 0)))
return -1;
- }
+ def = NULL;
virNetworkObjSetActive(obj, true);
virNetworkObjEndAPI(&obj);
return -1;
for (i = 0; i < num; i++) {
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
xmlNodePtr node = testParseXMLDocFromFile(nodes[i], file,
"interface");
if (!node)
if (!def)
return -1;
- if (!(obj = virInterfaceObjListAssignDef(privconn->ifaces, def))) {
- virInterfaceDefFree(def);
+ if (!(obj = virInterfaceObjListAssignDef(privconn->ifaces, def)))
return -1;
- }
+ def = NULL;
virInterfaceObjSetActive(obj, true);
virInterfaceObjEndAPI(&obj);
unsigned int flags)
{
testDriver *privconn = conn->privateData;
- virInterfaceDef *def;
+ g_autoptr(virInterfaceDef) def = NULL;
virInterfaceObj *obj = NULL;
virInterfaceDef *objdef;
virInterfacePtr ret = NULL;
ret = virGetInterface(conn, objdef->name, objdef->mac);
cleanup:
- virInterfaceDefFree(def);
virInterfaceObjEndAPI(&obj);
virObjectUnlock(privconn);
return ret;
{
g_autofree char *xmlData = NULL;
g_autofree char *actual = NULL;
- int ret = -1;
- virInterfaceDef *dev = NULL;
+ g_autoptr(virInterfaceDef) dev = NULL;
if (virTestLoadFile(xml, &xmlData) < 0)
- goto fail;
+ return -1;
if (!(dev = virInterfaceDefParseString(xmlData, 0)))
- goto fail;
+ return -1;
if (!(actual = virInterfaceDefFormat(dev)))
- goto fail;
+ return -1;
if (STRNEQ(xmlData, actual)) {
virTestDifferenceFull(stderr, xmlData, xml, actual, NULL);
- goto fail;
+ return -1;
}
- ret = 0;
-
- fail:
- virInterfaceDefFree(dev);
- return ret;
+ return 0;
}
static int