|
|
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 |
|