[libvirt] [PATCH 24/33] Move MAC address replacement functions to virnetdev.c

Daniel P. Berrange berrange at redhat.com
Thu Nov 3 17:30:20 UTC 2011


From: "Daniel P. Berrange" <berrange at redhat.com>

Move virNetDevReplaceMacAddress and virNetDevRestoreMacAddress
to the virnetdev.c file where they naturally belong

* util/interface.c, util/interface.h: Remove
  virNetDevReplaceMacAddress and virNetDevRestoreMacAddress
* util/virnetdev.c, util/virnetdev.h: Add
  virNetDevReplaceMacAddress and virNetDevRestoreMacAddress
---
 src/util/interface.c |   84 ----------------------------------------------
 src/util/interface.h |   10 -----
 src/util/virnetdev.c |   91 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/util/virnetdev.h |   12 ++++++
 4 files changed, 103 insertions(+), 94 deletions(-)

diff --git a/src/util/interface.c b/src/util/interface.c
index df2aa88..ebe537e 100644
--- a/src/util/interface.c
+++ b/src/util/interface.c
@@ -553,90 +553,6 @@ ifaceGetNthParent(int ifindex ATTRIBUTE_UNUSED,
 
 #endif
 
-/**
- * virNetDevReplaceMacAddress:
- * @macaddress: new MAC address for interface
- * @linkdev: name of interface
- * @stateDir: directory to store old MAC address
- *
- * Returns 0 on success, -1 on failure
- *
- */
-int
-virNetDevReplaceMacAddress(const char *linkdev,
-                           const unsigned char *macaddress,
-                           const char *stateDir)
-{
-    unsigned char oldmac[6];
-    char *path = NULL;
-    char macstr[VIR_MAC_STRING_BUFLEN];
-
-    if (virNetDevGetMAC(linkdev, oldmac) < 0)
-        return -1;
-
-
-    if (virAsprintf(&path, "%s/%s",
-                    stateDir,
-                    linkdev) < 0) {
-        virReportOOMError();
-        return -1;
-    }
-    virFormatMacAddr(oldmac, macstr);
-    if (virFileWriteStr(path, macstr, O_CREAT|O_TRUNC|O_WRONLY) < 0) {
-        virReportSystemError(errno, _("Unable to preserve mac for %s"),
-                             linkdev);
-        return -1;
-    }
-
-    if (virNetDevSetMAC(linkdev, macaddress) < 0)
-        return -1;
-
-    return 0;
-}
-
-/**
- * virNetDevRestoreMacAddress:
- * @linkdev: name of interface
- * @stateDir: directory containing old MAC address
- *
- * Returns 0 on success, -errno on failure.
- *
- */
-int
-virNetDevRestoreMacAddress(const char *linkdev,
-                           const char *stateDir)
-{
-    int rc;
-    char *oldmacname = NULL;
-    char *macstr = NULL;
-    char *path = NULL;
-    unsigned char oldmac[6];
-
-    if (virAsprintf(&path, "%s/%s",
-                    stateDir,
-                    linkdev) < 0) {
-        virReportOOMError();
-        return -1;
-    }
-
-    if (virFileReadAll(path, VIR_MAC_STRING_BUFLEN, &macstr) < 0)
-        return -1;
-
-    if (virParseMacAddr(macstr, &oldmac[0]) != 0) {
-        ifaceError(VIR_ERR_INTERNAL_ERROR,
-                   _("Cannot parse MAC address from '%s'"),
-                   oldmacname);
-        VIR_FREE(macstr);
-        return -1;
-    }
-
-    /*reset mac and remove file-ignore results*/
-    rc = virNetDevSetMAC(linkdev, oldmac);
-    ignore_value(unlink(path));
-    VIR_FREE(macstr);
-
-    return rc;
-}
 
 #ifdef __linux__
 static int
diff --git a/src/util/interface.h b/src/util/interface.h
index 6a4631c..e322a21 100644
--- a/src/util/interface.h
+++ b/src/util/interface.h
@@ -49,16 +49,6 @@ int ifaceGetNthParent(int ifindex, const char *ifname, unsigned int nthParent,
     ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5)
     ATTRIBUTE_NONNULL(6);
 
-int virNetDevReplaceMacAddress(const char *linkdev,
-                               const unsigned char *macaddress,
-                               const char *stateDir)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
-    ATTRIBUTE_RETURN_CHECK;
-
-int virNetDevRestoreMacAddress(const char *linkdev,
-                               const char *stateDir)
-    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
-
 int ifaceIsVirtualFunction(const char *ifname);
 
 int ifaceGetVirtualFunctionIndex(const char *pfname, const char *vfname,
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index 5311ae7..9674391 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -32,8 +32,12 @@
 #ifdef HAVE_NET_IF_H
 # include <net/if.h>
 #endif
+#include <fcntl.h>
 
 #define VIR_FROM_THIS VIR_FROM_NONE
+#define virNetDevError(code, ...)                                      \
+    virReportErrorHelper(VIR_FROM_THIS, code, __FILE__,                \
+                         __FUNCTION__, __LINE__, __VA_ARGS__)
 
 #ifdef HAVE_NET_IF_H
 static int virNetDevSetupControlFull(const char *ifname,
@@ -223,6 +227,93 @@ int virNetDevGetMAC(const char *ifname,
 #endif
 
 
+
+/**
+ * virNetDevReplaceMacAddress:
+ * @macaddress: new MAC address for interface
+ * @linkdev: name of interface
+ * @stateDir: directory to store old MAC address
+ *
+ * Returns 0 on success, -1 on failure
+ *
+ */
+int
+virNetDevReplaceMacAddress(const char *linkdev,
+                           const unsigned char *macaddress,
+                           const char *stateDir)
+{
+    unsigned char oldmac[6];
+    char *path = NULL;
+    char macstr[VIR_MAC_STRING_BUFLEN];
+
+    if (virNetDevGetMAC(linkdev, oldmac) < 0)
+        return -1;
+
+
+    if (virAsprintf(&path, "%s/%s",
+                    stateDir,
+                    linkdev) < 0) {
+        virReportOOMError();
+        return -1;
+    }
+    virFormatMacAddr(oldmac, macstr);
+    if (virFileWriteStr(path, macstr, O_CREAT|O_TRUNC|O_WRONLY) < 0) {
+        virReportSystemError(errno, _("Unable to preserve mac for %s"),
+                             linkdev);
+        return -1;
+    }
+
+    if (virNetDevSetMAC(linkdev, macaddress) < 0)
+        return -1;
+
+    return 0;
+}
+
+/**
+ * virNetDevRestoreMacAddress:
+ * @linkdev: name of interface
+ * @stateDir: directory containing old MAC address
+ *
+ * Returns 0 on success, -errno on failure.
+ *
+ */
+int
+virNetDevRestoreMacAddress(const char *linkdev,
+                           const char *stateDir)
+{
+    int rc;
+    char *oldmacname = NULL;
+    char *macstr = NULL;
+    char *path = NULL;
+    unsigned char oldmac[6];
+
+    if (virAsprintf(&path, "%s/%s",
+                    stateDir,
+                    linkdev) < 0) {
+        virReportOOMError();
+        return -1;
+    }
+
+    if (virFileReadAll(path, VIR_MAC_STRING_BUFLEN, &macstr) < 0)
+        return -1;
+
+    if (virParseMacAddr(macstr, &oldmac[0]) != 0) {
+        virNetDevError(VIR_ERR_INTERNAL_ERROR,
+                       _("Cannot parse MAC address from '%s'"),
+                       oldmacname);
+        VIR_FREE(macstr);
+        return -1;
+    }
+
+    /*reset mac and remove file-ignore results*/
+    rc = virNetDevSetMAC(linkdev, oldmac);
+    ignore_value(unlink(path));
+    VIR_FREE(macstr);
+
+    return rc;
+}
+
+
 #ifdef SIOCGIFMTU
 /**
  * virNetDevGetMTU:
diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h
index de98553..f4e0108 100644
--- a/src/util/virnetdev.h
+++ b/src/util/virnetdev.h
@@ -51,6 +51,18 @@ int virNetDevSetMAC(const char *ifname,
 int virNetDevGetMAC(const char *ifname,
                     unsigned char *macaddr)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
+
+int virNetDevReplaceMacAddress(const char *linkdev,
+                               const unsigned char *macaddress,
+                               const char *stateDir)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
+    ATTRIBUTE_RETURN_CHECK;
+
+int virNetDevRestoreMacAddress(const char *linkdev,
+                               const char *stateDir)
+    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_RETURN_CHECK;
+
+
 int virNetDevSetMTU(const char *ifname,
                     int mtu)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
-- 
1.7.6.4




More information about the libvir-list mailing list