1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-02-04 21:47:16 +03:00

conf: interface: Use g_auto

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Tim Wiederhake 2022-01-11 17:29:22 +01:00
parent 77eb77ef4a
commit 9dde307c44

View File

@ -68,6 +68,7 @@ virInterfaceProtocolDefFree(virInterfaceProtocolDef *def)
g_free(def->gateway); g_free(def->gateway);
g_free(def); g_free(def);
} }
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virInterfaceProtocolDef, virInterfaceProtocolDefFree);
void void
@ -155,9 +156,8 @@ static int
virInterfaceDefParseStartMode(virInterfaceDef *def, virInterfaceDefParseStartMode(virInterfaceDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
char *tmp; g_autofree char *tmp = virXPathString("string(./start/@mode)", ctxt);
tmp = virXPathString("string(./start/@mode)", ctxt);
if (tmp == NULL) { if (tmp == NULL) {
def->startmode = VIR_INTERFACE_START_UNSPECIFIED; def->startmode = VIR_INTERFACE_START_UNSPECIFIED;
} else if (STREQ(tmp, "onboot")) { } else if (STREQ(tmp, "onboot")) {
@ -169,10 +169,8 @@ virInterfaceDefParseStartMode(virInterfaceDef *def,
} else { } else {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("unknown interface startmode %s"), tmp); _("unknown interface startmode %s"), tmp);
VIR_FREE(tmp);
return -1; return -1;
} }
VIR_FREE(tmp);
return 0; return 0;
} }
@ -180,10 +178,9 @@ virInterfaceDefParseStartMode(virInterfaceDef *def,
static int static int
virInterfaceDefParseBondMode(xmlXPathContextPtr ctxt) virInterfaceDefParseBondMode(xmlXPathContextPtr ctxt)
{ {
char *tmp; g_autofree char *tmp = virXPathString("string(./@mode)", ctxt);
int ret = 0; int ret = 0;
tmp = virXPathString("string(./@mode)", ctxt);
if (tmp == NULL) if (tmp == NULL)
return VIR_INTERFACE_BOND_NONE; return VIR_INTERFACE_BOND_NONE;
if (STREQ(tmp, "balance-rr")) { if (STREQ(tmp, "balance-rr")) {
@ -205,7 +202,6 @@ virInterfaceDefParseBondMode(xmlXPathContextPtr ctxt)
_("unknown bonding mode %s"), tmp); _("unknown bonding mode %s"), tmp);
ret = -1; ret = -1;
} }
VIR_FREE(tmp);
return ret; return ret;
} }
@ -213,10 +209,9 @@ virInterfaceDefParseBondMode(xmlXPathContextPtr ctxt)
static int static int
virInterfaceDefParseBondMiiCarrier(xmlXPathContextPtr ctxt) virInterfaceDefParseBondMiiCarrier(xmlXPathContextPtr ctxt)
{ {
char *tmp; g_autofree char *tmp = virXPathString("string(./miimon/@carrier)", ctxt);
int ret = 0; int ret = 0;
tmp = virXPathString("string(./miimon/@carrier)", ctxt);
if (tmp == NULL) if (tmp == NULL)
return VIR_INTERFACE_BOND_MII_NONE; return VIR_INTERFACE_BOND_MII_NONE;
if (STREQ(tmp, "ioctl")) { if (STREQ(tmp, "ioctl")) {
@ -228,7 +223,6 @@ virInterfaceDefParseBondMiiCarrier(xmlXPathContextPtr ctxt)
_("unknown mii bonding carrier %s"), tmp); _("unknown mii bonding carrier %s"), tmp);
ret = -1; ret = -1;
} }
VIR_FREE(tmp);
return ret; return ret;
} }
@ -236,10 +230,9 @@ virInterfaceDefParseBondMiiCarrier(xmlXPathContextPtr ctxt)
static int static int
virInterfaceDefParseBondArpValid(xmlXPathContextPtr ctxt) virInterfaceDefParseBondArpValid(xmlXPathContextPtr ctxt)
{ {
char *tmp; g_autofree char *tmp = virXPathString("string(./arpmon/@validate)", ctxt);
int ret = 0; int ret = 0;
tmp = virXPathString("string(./arpmon/@validate)", ctxt);
if (tmp == NULL) if (tmp == NULL)
return VIR_INTERFACE_BOND_ARP_NONE; return VIR_INTERFACE_BOND_ARP_NONE;
if (STREQ(tmp, "active")) { if (STREQ(tmp, "active")) {
@ -253,7 +246,6 @@ virInterfaceDefParseBondArpValid(xmlXPathContextPtr ctxt)
_("unknown arp bonding validate %s"), tmp); _("unknown arp bonding validate %s"), tmp);
ret = -1; ret = -1;
} }
VIR_FREE(tmp);
return ret; return ret;
} }
@ -263,7 +255,7 @@ virInterfaceDefParseDhcp(virInterfaceProtocolDef *def,
xmlNodePtr dhcp, xmlXPathContextPtr ctxt) xmlNodePtr dhcp, xmlXPathContextPtr ctxt)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt) VIR_XPATH_NODE_AUTORESTORE(ctxt)
char *tmp; g_autofree char *tmp = NULL;
int ret = 0; int ret = 0;
def->dhcp = 1; def->dhcp = 1;
@ -280,7 +272,6 @@ virInterfaceDefParseDhcp(virInterfaceProtocolDef *def,
} else { } else {
def->peerdns = state ? 1 : 0; def->peerdns = state ? 1 : 0;
} }
VIR_FREE(tmp);
} }
return ret; return ret;
@ -317,7 +308,7 @@ virInterfaceDefParseProtoIPv4(virInterfaceProtocolDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr dhcp; xmlNodePtr dhcp;
xmlNodePtr *ipNodes = NULL; g_autofree xmlNodePtr *ipNodes = NULL;
int nipNodes, ret = -1; int nipNodes, ret = -1;
size_t i; size_t i;
char *tmp; char *tmp;
@ -357,7 +348,6 @@ virInterfaceDefParseProtoIPv4(virInterfaceProtocolDef *def,
ret = 0; ret = 0;
error: error:
VIR_FREE(ipNodes);
return ret; return ret;
} }
@ -367,7 +357,7 @@ virInterfaceDefParseProtoIPv6(virInterfaceProtocolDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr dhcp, autoconf; xmlNodePtr dhcp, autoconf;
xmlNodePtr *ipNodes = NULL; g_autofree xmlNodePtr *ipNodes = NULL;
int nipNodes, ret = -1; int nipNodes, ret = -1;
size_t i; size_t i;
char *tmp; char *tmp;
@ -411,7 +401,6 @@ virInterfaceDefParseProtoIPv6(virInterfaceProtocolDef *def,
ret = 0; ret = 0;
error: error:
VIR_FREE(ipNodes);
return ret; return ret;
} }
@ -421,7 +410,7 @@ virInterfaceDefParseIfAdressing(virInterfaceDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt) VIR_XPATH_NODE_AUTORESTORE(ctxt)
xmlNodePtr *protoNodes = NULL; g_autofree xmlNodePtr *protoNodes = NULL;
int nProtoNodes, pp, ret = -1; int nProtoNodes, pp, ret = -1;
char *tmp; char *tmp;
@ -439,42 +428,33 @@ virInterfaceDefParseIfAdressing(virInterfaceDef *def,
def->nprotos = 0; def->nprotos = 0;
for (pp = 0; pp < nProtoNodes; pp++) { for (pp = 0; pp < nProtoNodes; pp++) {
virInterfaceProtocolDef *proto; g_autoptr(virInterfaceProtocolDef) proto = g_new0(virInterfaceProtocolDef, 1);
proto = g_new0(virInterfaceProtocolDef, 1);
ctxt->node = protoNodes[pp]; ctxt->node = protoNodes[pp];
tmp = virXPathString("string(./@family)", ctxt); tmp = virXPathString("string(./@family)", ctxt);
if (tmp == NULL) { if (tmp == NULL) {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
"%s", _("protocol misses the family attribute")); "%s", _("protocol misses the family attribute"));
virInterfaceProtocolDefFree(proto);
goto error; goto error;
} }
proto->family = tmp; proto->family = tmp;
if (STREQ(tmp, "ipv4")) { if (STREQ(tmp, "ipv4")) {
if (virInterfaceDefParseProtoIPv4(proto, ctxt) != 0) { if (virInterfaceDefParseProtoIPv4(proto, ctxt) != 0)
virInterfaceProtocolDefFree(proto);
goto error; goto error;
}
} else if (STREQ(tmp, "ipv6")) { } else if (STREQ(tmp, "ipv6")) {
if (virInterfaceDefParseProtoIPv6(proto, ctxt) != 0) { if (virInterfaceDefParseProtoIPv6(proto, ctxt) != 0)
virInterfaceProtocolDefFree(proto);
goto error; goto error;
}
} else { } else {
virReportError(VIR_ERR_XML_ERROR, virReportError(VIR_ERR_XML_ERROR,
_("unsupported protocol family '%s'"), tmp); _("unsupported protocol family '%s'"), tmp);
virInterfaceProtocolDefFree(proto);
goto error; goto error;
} }
def->protos[def->nprotos++] = proto; def->protos[def->nprotos++] = g_steal_pointer(&proto);
} }
ret = 0; ret = 0;
error: error:
VIR_FREE(protoNodes);
return ret; return ret;
} }
@ -484,17 +464,16 @@ static int
virInterfaceDefParseBridge(virInterfaceDef *def, virInterfaceDefParseBridge(virInterfaceDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr *interfaces = NULL; VIR_XPATH_NODE_AUTORESTORE(ctxt)
xmlNodePtr bridge; g_autofree xmlNodePtr *interfaces = NULL;
virInterfaceDef *itf; virInterfaceDef *itf;
char *tmp = NULL; g_autofree char *tmp = NULL;
int nbItf; int nbItf;
size_t i; size_t i;
int ret = 0; int ret = 0;
bridge = ctxt->node;
def->data.bridge.stp = -1; def->data.bridge.stp = -1;
if ((tmp = virXMLPropString(bridge, "stp"))) { if ((tmp = virXMLPropString(ctxt->node, "stp"))) {
if (STREQ(tmp, "on")) { if (STREQ(tmp, "on")) {
def->data.bridge.stp = 1; def->data.bridge.stp = 1;
} else if (STREQ(tmp, "off")) { } else if (STREQ(tmp, "off")) {
@ -506,7 +485,7 @@ virInterfaceDefParseBridge(virInterfaceDef *def,
goto error; goto error;
} }
} }
def->data.bridge.delay = virXMLPropString(bridge, "delay"); def->data.bridge.delay = virXMLPropString(ctxt->node, "delay");
nbItf = virXPathNodeSet("./interface", ctxt, &interfaces); nbItf = virXPathNodeSet("./interface", ctxt, &interfaces);
if (nbItf < 0) { if (nbItf < 0) {
@ -530,9 +509,6 @@ virInterfaceDefParseBridge(virInterfaceDef *def,
} }
error: error:
VIR_FREE(tmp);
VIR_FREE(interfaces);
ctxt->node = bridge;
return ret; return ret;
} }
@ -541,8 +517,8 @@ static int
virInterfaceDefParseBondItfs(virInterfaceDef *def, virInterfaceDefParseBondItfs(virInterfaceDef *def,
xmlXPathContextPtr ctxt) xmlXPathContextPtr ctxt)
{ {
xmlNodePtr *interfaces = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt) VIR_XPATH_NODE_AUTORESTORE(ctxt)
g_autofree xmlNodePtr *interfaces = NULL;
virInterfaceDef *itf; virInterfaceDef *itf;
int nbItf; int nbItf;
size_t i; size_t i;
@ -573,7 +549,6 @@ virInterfaceDefParseBondItfs(virInterfaceDef *def,
ret = 0; ret = 0;
cleanup: cleanup:
VIR_FREE(interfaces);
return ret; return ret;
} }
@ -679,7 +654,7 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
{ {
g_autoptr(virInterfaceDef) def = NULL; g_autoptr(virInterfaceDef) def = NULL;
int type; int type;
char *tmp; g_autofree char *tmp = NULL;
VIR_XPATH_NODE_AUTORESTORE(ctxt) VIR_XPATH_NODE_AUTORESTORE(ctxt)
xmlNodePtr lnk; xmlNodePtr lnk;
@ -695,10 +670,8 @@ virInterfaceDefParseXML(xmlXPathContextPtr ctxt,
if (type == -1) { if (type == -1) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown interface type %s"), tmp); _("unknown interface type %s"), tmp);
VIR_FREE(tmp);
return NULL; return NULL;
} }
VIR_FREE(tmp);
def = g_new0(virInterfaceDef, 1); def = g_new0(virInterfaceDef, 1);