5c27b6
From 243d1e0bc40312d06b967a1d4800a69cc518777f Mon Sep 17 00:00:00 2001
5c27b6
Message-Id: <243d1e0bc40312d06b967a1d4800a69cc518777f@dist-git>
5c27b6
From: Laine Stump <laine@laine.org>
5c27b6
Date: Thu, 13 Apr 2017 14:29:38 -0400
5c27b6
Subject: [PATCH] util: log all setting of MAC addresses and vlan tags
5c27b6
5c27b6
Having this information available will make it easier to determine the
5c27b6
culprit when MAC or vlan tag appear to not be set, eg.:
5c27b6
5c27b6
  https://bugzilla.redhat.com/1364073
5c27b6
5c27b6
(This patch doesn't fix that bug, just makes it easier to diagnose)
5c27b6
5c27b6
(cherry picked from commit 6ec36b06999cad155b75ed07ef656905b8a45180)
5c27b6
5c27b6
https://bugzilla.redhat.com/1442040
5c27b6
---
5c27b6
 src/util/virnetdev.c | 17 ++++++++++++++---
5c27b6
 1 file changed, 14 insertions(+), 3 deletions(-)
5c27b6
5c27b6
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
5c27b6
index a510ebc2e..37e47d165 100644
5c27b6
--- a/src/util/virnetdev.c
5c27b6
+++ b/src/util/virnetdev.c
5c27b6
@@ -241,6 +241,7 @@ virNetDevSetMACInternal(const char *ifname,
5c27b6
     int fd = -1;
5c27b6
     int ret = -1;
5c27b6
     struct ifreq ifr;
5c27b6
+    char macstr[VIR_MAC_STRING_BUFLEN];
5c27b6
 
5c27b6
     if ((fd = virNetDevSetupControl(ifname, &ifr)) < 0)
5c27b6
         return -1;
5c27b6
@@ -256,7 +257,6 @@ virNetDevSetMACInternal(const char *ifname,
5c27b6
     virMacAddrGetRaw(macaddr, (unsigned char *)ifr.ifr_hwaddr.sa_data);
5c27b6
 
5c27b6
     if (ioctl(fd, SIOCSIFHWADDR, &ifr) < 0) {
5c27b6
-        char macstr[VIR_MAC_STRING_BUFLEN];
5c27b6
 
5c27b6
         if (quiet && errno == EADDRNOTAVAIL)
5c27b6
             goto cleanup;
5c27b6
@@ -270,6 +270,10 @@ virNetDevSetMACInternal(const char *ifname,
5c27b6
     ret = 0;
5c27b6
 
5c27b6
  cleanup:
5c27b6
+    VIR_DEBUG("SIOCSIFHWADDR %s MAC=%s - %s",
5c27b6
+              ifname, virMacAddrFormat(macaddr, macstr),
5c27b6
+              ret < 0 ? "Fail" : "Success");
5c27b6
+
5c27b6
     VIR_FORCE_CLOSE(fd);
5c27b6
     return ret;
5c27b6
 }
5c27b6
@@ -312,6 +316,9 @@ virNetDevSetMACInternal(const char *ifname,
5c27b6
 
5c27b6
         ret = 0;
5c27b6
  cleanup:
5c27b6
+        VIR_DEBUG("SIOCSIFLLADDR %s MAC=%s - %s", ifname, mac + 1),
5c27b6
+                  ret < 0 ? "Fail" : "Success");
5c27b6
+
5c27b6
         VIR_FORCE_CLOSE(s);
5c27b6
 
5c27b6
         return ret;
5c27b6
@@ -1439,6 +1446,7 @@ virNetDevSetVfConfig(const char *ifname, int vf,
5c27b6
                      bool *allowRetry)
5c27b6
 {
5c27b6
     int rc = -1;
5c27b6
+    char macstr[VIR_MAC_STRING_BUFLEN];
5c27b6
     struct nlmsghdr *resp = NULL;
5c27b6
     struct nlmsgerr *err;
5c27b6
     unsigned int recvbuflen = 0;
5c27b6
@@ -1522,8 +1530,6 @@ virNetDevSetVfConfig(const char *ifname, int vf,
5c27b6
             goto cleanup;
5c27b6
         } else if (err->error) {
5c27b6
             /* other errors are permanent */
5c27b6
-            char macstr[VIR_MAC_STRING_BUFLEN];
5c27b6
-
5c27b6
             virReportSystemError(-err->error,
5c27b6
                                  _("Cannot set interface MAC/vlanid to %s/%d "
5c27b6
                                    "for ifname %s vf %d"),
5c27b6
@@ -1547,6 +1553,11 @@ virNetDevSetVfConfig(const char *ifname, int vf,
5c27b6
 
5c27b6
     rc = 0;
5c27b6
  cleanup:
5c27b6
+    VIR_DEBUG("RTM_SETLINK %s vf %d MAC=%s vlanid=%d - %s",
5c27b6
+              ifname, vf,
5c27b6
+              macaddr ? virMacAddrFormat(macaddr, macstr) : "(unchanged)",
5c27b6
+              vlanid, rc < 0 ? "Fail" : "Success");
5c27b6
+
5c27b6
     nlmsg_free(nl_msg);
5c27b6
     VIR_FREE(resp);
5c27b6
     return rc;
5c27b6
-- 
5c27b6
2.12.2
5c27b6