On 06/22/2016 01:37 PM, Laine Stump wrote: > --- > src/util/virnetdevip.c | 30 ++++++++++++++++++------------ > 1 file changed, 18 insertions(+), 12 deletions(-) > > diff --git a/src/util/virnetdevip.c b/src/util/virnetdevip.c > index 6889f81..5daeed5 100644 > --- a/src/util/virnetdevip.c > +++ b/src/util/virnetdevip.c > @@ -315,7 +315,6 @@ virNetDevIPRouteAdd(const char *ifname, > > /* If we have no valid network address, then use the default one */ > if (!addr || !VIR_SOCKET_ADDR_VALID(addr)) { > - VIR_DEBUG("computing default address"); > int family = VIR_SOCKET_ADDR_FAMILY(gateway); > if (family == AF_INET) { > if (virSocketAddrParseIPv4(&defaultAddr, VIR_SOCKET_ADDR_IPV4_ALL) < 0) > @@ -328,9 +327,11 @@ virNetDevIPRouteAdd(const char *ifname, > actualAddr = &defaultAddr; > } > > - toStr = virSocketAddrFormat(actualAddr); > - viaStr = virSocketAddrFormat(gateway); > - VIR_DEBUG("Adding route %s/%d via %s", toStr, prefix, viaStr); > + if (!(toStr = virSocketAddrFormat(actualAddr))) > + goto cleanup; > + if (!(viaStr = virSocketAddrFormat(gateway))) > + goto cleanup; > + VIR_DEBUG("Adding route to %s/%u via %s on %s", toStr, prefix, viaStr, ifname); > > if (virNetDevGetIPAddressBinary(actualAddr, &addrData, &addrDataLen) < 0 || > virNetDevGetIPAddressBinary(gateway, &gatewayData, &addrDataLen) < 0) > @@ -376,7 +377,9 @@ virNetDevIPRouteAdd(const char *ifname, > goto cleanup; > > if ((errCode = virNetlinkGetErrorCode(resp, recvbuflen)) < 0) { > - virReportSystemError(errCode, _("Error adding route to %s"), ifname); > + virReportSystemError(errCode, > + _("Error adding route to %s/%u via %s on %s"), > + toStr, prefix, viaStr, ifname); > goto cleanup; > } > > @@ -617,7 +620,8 @@ virNetDevIPRouteAdd(const char *ifname, > unsigned int metric) > { > virCommandPtr cmd = NULL; > - char *addrstr = NULL, *gatewaystr = NULL; > + char *toStr = NULL; > + char *viaStr = NULL; > virSocketAddr defaultAddr; > virSocketAddrPtr actualAddr; > int ret = -1; > @@ -638,14 +642,16 @@ virNetDevIPRouteAdd(const char *ifname, > actualAddr = &defaultAddr; > } > > - if (!(addrstr = virSocketAddrFormat(actualAddr))) > + if (!(toStr = virSocketAddrFormat(actualAddr))) > goto cleanup; > - if (!(gatewaystr = virSocketAddrFormat(gateway))) > + if (!(viaStr = virSocketAddrFormat(gateway))) > goto cleanup; > + VIR_DEBUG("Adding route to %s/%u via %s on %s", toStr, prefix, viaStr, ifname); > + > cmd = virCommandNew(IP_PATH); > virCommandAddArgList(cmd, "route", "add", NULL); > - virCommandAddArgFormat(cmd, "%s/%u", addrstr, prefix); > - virCommandAddArgList(cmd, "via", gatewaystr, "dev", ifname, > + virCommandAddArgFormat(cmd, "%s/%u", toStr, prefix); > + virCommandAddArgList(cmd, "via", viaStr, "dev", ifname, > "proto", "static", "metric", NULL); > virCommandAddArgFormat(cmd, "%u", metric); > If you add "&exitstatus" as the 2nd parameter to virCommandRun, then you can also add a message to the virCommandRun failure similar to the error for the virNetlinkCommand failure. Additionally adding virCommandSetOutputBuffer and/or virCommandSetErrorBuffer can really help you become more verbose about what the failure was. ACK - with or without the virCommandRun adjustments - just figured I'd note that this path does have an error path difference w/r/t verbosity if there's an error that virNetlinkGetErrorCode finds... John > @@ -654,8 +660,8 @@ virNetDevIPRouteAdd(const char *ifname, > > ret = 0; > cleanup: > - VIR_FREE(addrstr); > - VIR_FREE(gatewaystr); > + VIR_FREE(toStr); > + VIR_FREE(viaStr); > virCommandFree(cmd); > return ret; > } > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list