On 03/26/2013 12:26 PM, Peter Krempa wrote: > Format the address using the helper to avoid code duplication. > --- > src/conf/domain_conf.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 4cae0d3..40dfc99 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -13354,6 +13354,7 @@ virDomainNetDefFormat(virBufferPtr buf, > unsigned int flags) > { > const char *type = virDomainNetTypeToString(def->type); > + char macstr[VIR_MAC_STRING_BUFLEN]; > > if (!type) { > virReportError(VIR_ERR_INTERNAL_ERROR, > @@ -13369,10 +13370,8 @@ virDomainNetDefFormat(virBufferPtr buf, > virBufferAddLit(buf, ">\n"); > > virBufferAdjustIndent(buf, 6); > - virBufferAsprintf(buf, > - "<mac address='%02x:%02x:%02x:%02x:%02x:%02x'/>\n", > - def->mac.addr[0], def->mac.addr[1], def->mac.addr[2], > - def->mac.addr[3], def->mac.addr[4], def->mac.addr[5]); > + virBufferAsprintf(buf, "<mac address='%s'/>\n", > + virMacAddrFormat(&def->mac, macstr)); > > switch (def->type) { > case VIR_DOMAIN_NET_TYPE_NETWORK: > I'd ACK that, fine use for the cleanup, but pity it's fixed on only one place. How about squashing in the following? diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 40dfc99..ba3bb59 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -11486,14 +11486,15 @@ static bool virDomainNetDefCheckABIStability(virDomainNetDefPtr src, virDomainNetDefPtr dst) { + char srcmac[VIR_MAC_STRING_BUFLEN]; + char dstmac[VIR_MAC_STRING_BUFLEN]; + if (virMacAddrCmp(&src->mac, &dst->mac) != 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Target network card mac %02x:%02x:%02x:%02x:%02x:%02x" - " does not match source %02x:%02x:%02x:%02x:%02x:%02x"), - dst->mac.addr[0], dst->mac.addr[1], dst->mac.addr[2], - dst->mac.addr[3], dst->mac.addr[4], dst->mac.addr[5], - src->mac.addr[0], src->mac.addr[1], src->mac.addr[2], - src->mac.addr[3], src->mac.addr[4], src->mac.addr[5]); + _("Target network card mac %s" + " does not match source %s"), + virMacAddrFormat(&dst->mac, dstmac), + virMacAddrFormat(&src->mac, srcmac)); return false; } diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a0c278f..d539dbd 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -3635,12 +3635,12 @@ qemuBuildNicStr(virDomainNetDefPtr net, int vlan) { char *str; + char macaddr[VIR_MAC_STRING_BUFLEN]; + if (virAsprintf(&str, - "%smacaddr=%02x:%02x:%02x:%02x:%02x:%02x,vlan=%d%s%s%s%s", + "%smacaddr=%s,vlan=%d%s%s%s%s", prefix ? prefix : "", - net->mac.addr[0], net->mac.addr[1], - net->mac.addr[2], net->mac.addr[3], - net->mac.addr[4], net->mac.addr[5], + virMacAddrFormat(&net->mac, macaddr), vlan, (net->model ? ",model=" : ""), (net->model ? net->model : ""), @@ -3663,6 +3663,7 @@ qemuBuildNicDevStr(virDomainNetDefPtr net, virBuffer buf = VIR_BUFFER_INITIALIZER; const char *nic; bool usingVirtio = false; + char macaddr[VIR_MAC_STRING_BUFLEN]; if (!net->model) { nic = "rtl8139"; @@ -3719,10 +3720,8 @@ qemuBuildNicDevStr(virDomainNetDefPtr net, else virBufferAsprintf(&buf, ",vlan=%d", vlan); virBufferAsprintf(&buf, ",id=%s", net->info.alias); - virBufferAsprintf(&buf, ",mac=%02x:%02x:%02x:%02x:%02x:%02x", - net->mac.addr[0], net->mac.addr[1], - net->mac.addr[2], net->mac.addr[3], - net->mac.addr[4], net->mac.addr[5]); + virBufferAsprintf(&buf, ",mac=%s", + virMacAddrFormat(&net->mac, macaddr)); if (qemuBuildDeviceAddressStr(&buf, &net->info, qemuCaps) < 0) goto error; if (qemuBuildRomStr(&buf, &net->info, qemuCaps) < 0) diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c index b3ac326..0fe59fb 100644 --- a/src/uml/uml_conf.c +++ b/src/uml/uml_conf.c @@ -1,7 +1,7 @@ /* * uml_conf.c: UML driver configuration * - * Copyright (C) 2006-2012 Red Hat, Inc. + * Copyright (C) 2006-2013 Red Hat, Inc. * Copyright (C) 2006 Daniel P. Berrange * * This library is free software; you can redistribute it and/or @@ -164,6 +164,7 @@ umlBuildCommandLineNet(virConnectPtr conn, int idx) { virBuffer buf = VIR_BUFFER_INITIALIZER; + char macaddr[VIR_MAC_STRING_BUFLEN]; /* General format: ethNN=type,options */ @@ -264,9 +265,7 @@ umlBuildCommandLineNet(virConnectPtr conn, goto error; } - virBufferAsprintf(&buf, ",%02x:%02x:%02x:%02x:%02x:%02x", - def->mac.addr[0], def->mac.addr[1], def->mac.addr[2], - def->mac.addr[3], def->mac.addr[4], def->mac.addr[5]); + virBufferAsprintf(&buf, ",%s", virMacAddrFormat(&def->mac, macaddr)); if (def->type == VIR_DOMAIN_NET_TYPE_MCAST) { virBufferAsprintf(&buf, ",%s,%d", diff --git a/src/util/virebtables.c b/src/util/virebtables.c index ded62d7..e1c18f0 100644 --- a/src/util/virebtables.c +++ b/src/util/virebtables.c @@ -1,7 +1,7 @@ /* * virebtables.c: Helper APIs for managing ebtables * - * Copyright (C) 2007-2012 Red Hat, Inc. + * Copyright (C) 2007-2013 Red Hat, Inc. * Copyright (C) 2009 IBM Corp. * * This library is free software; you can redistribute it and/or @@ -447,14 +447,10 @@ ebtablesAddForwardAllowIn(ebtablesContext *ctx, const virMacAddrPtr mac) { char *macaddr; - - if (virAsprintf(&macaddr, - "%02x:%02x:%02x:%02x:%02x:%02x", - mac->addr[0], mac->addr[1], - mac->addr[2], mac->addr[3], - mac->addr[4], mac->addr[5]) < 0) { + if (VIR_ALLOC_N(macaddr, VIR_MAC_STRING_BUFLEN) < 0) return -1; - } + + virMacAddrFormat(mac, macaddr); return ebtablesForwardAllowIn(ctx, iface, macaddr, ADD); } @@ -476,13 +472,9 @@ ebtablesRemoveForwardAllowIn(ebtablesContext *ctx, const virMacAddrPtr mac) { char *macaddr; + if (VIR_ALLOC_N(macaddr, VIR_MAC_STRING_BUFLEN) < 0) + return -1; - if (virAsprintf(&macaddr, - "%02x:%02x:%02x:%02x:%02x:%02x", - mac->addr[0], mac->addr[1], - mac->addr[2], mac->addr[3], - mac->addr[4], mac->addr[5]) < 0) { - return -1; - } + virMacAddrFormat(mac, macaddr); return ebtablesForwardAllowIn(ctx, iface, macaddr, REMOVE); } diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c index ddea11f..2578ff0 100644 --- a/src/util/virnetdevmacvlan.c +++ b/src/util/virnetdevmacvlan.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright (C) 2010-2012 IBM Corporation * * This library is free software; you can redistribute it and/or @@ -518,6 +518,7 @@ virNetDevMacVLanVPortProfileCallback(unsigned char *msg, virNetlinkCallbackDataPtr calld = opaque; pid_t lldpad_pid = 0; pid_t virip_pid = 0; + char macaddr[VIR_MAC_STRING_BUFLEN]; hdr = (struct nlmsghdr *) msg; data = nlmsg_data(hdr); @@ -707,11 +708,7 @@ virNetDevMacVLanVPortProfileCallback(unsigned char *msg, VIR_INFO("Re-send 802.1qbg associate request:"); VIR_INFO(" if: %s", calld->cr_ifname); VIR_INFO(" lf: %s", calld->linkdev); - VIR_INFO(" mac: %02x:%02x:%02x:%02x:%02x:%02x", - calld->macaddress.addr[0], calld->macaddress.addr[1], - calld->macaddress.addr[2], calld->macaddress.addr[3], - calld->macaddress.addr[4], calld->macaddress.addr[5]); - + VIR_INFO(" mac: %s", virMacAddrFormat(&calld->macaddress, macaddr)); ignore_value(virNetDevVPortProfileAssociate(calld->cr_ifname, calld->virtPortProfile, &calld->macaddress, diff --git a/src/util/virnetdevtap.c b/src/util/virnetdevtap.c index a884de1..871376e 100644 --- a/src/util/virnetdevtap.c +++ b/src/util/virnetdevtap.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Red Hat, Inc. + * Copyright (C) 2007-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -286,6 +286,7 @@ int virNetDevTapCreateInBridgePort(const char *brname, unsigned int flags) { virMacAddr tapmac; + char macaddrstr[VIR_MAC_STRING_BUFLEN]; if (virNetDevTapCreate(ifname, tapfd, flags) < 0) return -1; @@ -306,10 +307,8 @@ int virNetDevTapCreateInBridgePort(const char *brname, */ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unable to use MAC address starting with " - "reserved value 0xFE - '%02X:%02X:%02X:%02X:%02X:%02X' - "), - macaddr->addr[0], macaddr->addr[1], - macaddr->addr[2], macaddr->addr[3], - macaddr->addr[4], macaddr->addr[5]); + "reserved value 0xFE - '%s' - "), + virMacAddrFormat(macaddr, macaddrstr)); goto error; } tapmac.addr[0] = 0xFE; /* Discourage bridge from using TAP dev MAC */ diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c index 398da0d..835296a 100644 --- a/src/xen/xend_internal.c +++ b/src/xen/xend_internal.c @@ -3730,17 +3730,14 @@ virDomainXMLDevID(virDomainPtr domain, if (tmp == NULL) return -1; } else if (dev->type == VIR_DOMAIN_DEVICE_NET) { - char mac[30]; + char mac[VIR_MAC_STRING_BUFLEN]; virDomainNetDefPtr def = dev->data.net; - snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x", - def->mac.addr[0], def->mac.addr[1], def->mac.addr[2], - def->mac.addr[3], def->mac.addr[4], def->mac.addr[5]); + virMacAddrFormat(&def->mac, mac)); strcpy(class, "vif"); xenUnifiedLock(priv); - xref = xenStoreDomainGetNetworkID(domain->conn, domain->id, - mac); + xref = xenStoreDomainGetNetworkID(domain->conn, domain->id, mac); xenUnifiedUnlock(priv); if (xref == NULL) return -1; diff --git a/src/xenxs/xen_sxpr.c b/src/xenxs/xen_sxpr.c index 83b7c74..cc4225b 100644 --- a/src/xenxs/xen_sxpr.c +++ b/src/xenxs/xen_sxpr.c @@ -1,7 +1,7 @@ /* * xen_sxpr.c: Xen SEXPR parsing functions * - * Copyright (C) 2010-2012 Red Hat, Inc. + * Copyright (C) 2010-2013 Red Hat, Inc. * Copyright (C) 2011 Univention GmbH * Copyright (C) 2005 Anthony Liguori <aliguori@xxxxxxxxxx> * @@ -1914,6 +1914,7 @@ xenFormatSxprNet(virConnectPtr conn, int isAttach) { const char *script = DEFAULT_VIF_SCRIPT; + char macaddr[VIR_MAC_STRING_BUFLEN]; if (def->type != VIR_DOMAIN_NET_TYPE_BRIDGE && def->type != VIR_DOMAIN_NET_TYPE_NETWORK && @@ -1936,10 +1937,7 @@ xenFormatSxprNet(virConnectPtr conn, virBufferAddLit(buf, "(vif "); - virBufferAsprintf(buf, - "(mac '%02x:%02x:%02x:%02x:%02x:%02x')", - def->mac.addr[0], def->mac.addr[1], def->mac.addr[2], - def->mac.addr[3], def->mac.addr[4], def->mac.addr[5]); + virBufferAsprintf(buf, "(mac '%s')", virMacAddrFormat(&def->mac, macaddr)); switch (def->type) { case VIR_DOMAIN_NET_TYPE_BRIDGE: diff --git a/src/xenxs/xen_xm.c b/src/xenxs/xen_xm.c index 73ba06b..405ebf3 100644 --- a/src/xenxs/xen_xm.c +++ b/src/xenxs/xen_xm.c @@ -1,7 +1,7 @@ /* * xen_xm.c: Xen XM parsing functions * - * Copyright (C) 2006-2007, 2009-2010, 2012 Red Hat, Inc. + * Copyright (C) 2006-2007, 2009-2010, 2012, 2013 Red Hat, Inc. * Copyright (C) 2011 Univention GmbH * Copyright (C) 2006 Daniel P. Berrange * @@ -1335,11 +1335,9 @@ static int xenFormatXMNet(virConnectPtr conn, { virBuffer buf = VIR_BUFFER_INITIALIZER; virConfValuePtr val, tmp; + char macaddr[VIR_MAC_STRING_BUFLEN]; - virBufferAsprintf(&buf, "mac=%02x:%02x:%02x:%02x:%02x:%02x", - net->mac.addr[0], net->mac.addr[1], - net->mac.addr[2], net->mac.addr[3], - net->mac.addr[4], net->mac.addr[5]); + virBufferAsprintf(&buf, "mac=%s", virMacAddrFormat(&net->mac, macaddr)); switch (net->type) { case VIR_DOMAIN_NET_TYPE_BRIDGE: -- Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list