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:
parent
77eb77ef4a
commit
9dde307c44
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user