Blame SOURCES/libvirt-util-make-macvtap-macvlan-generated-name-defines-available-to-other-files.patch

6d3351
From 30400fc580740ddca6edd751d1768f189cfd112a Mon Sep 17 00:00:00 2001
6d3351
Message-Id: <30400fc580740ddca6edd751d1768f189cfd112a@dist-git>
6d3351
From: Laine Stump <laine@laine.org>
6d3351
Date: Tue, 2 May 2017 12:33:10 -0400
6d3351
Subject: [PATCH] util: make macvtap/macvlan generated name #defines available
6d3351
 to other files
6d3351
6d3351
MACVTAP_NAME_PREFIX and MACVLAN_NAME_PREFIX could be useful to other
6d3351
files if they were defined in virnetdevmacvlan.h instead of
6d3351
virnetdevmacvlan.c, so do that (while slightly renaming them and also
6d3351
adding yet another #define that chooses between macvlan/macvtap based
6d3351
on flags).
6d3351
6d3351
This is a prerequisite to fix: https://bugzilla.redhat.com/1335798
6d3351
6d3351
(cherry picked from commit a05400ef55c7c67c6b211dfa5a33400870d470ca)
6d3351
6d3351
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
6d3351
---
6d3351
 src/util/virnetdevmacvlan.c | 65 ++++++++++++++++++---------------------------
6d3351
 src/util/virnetdevmacvlan.h |  6 +++++
6d3351
 2 files changed, 32 insertions(+), 39 deletions(-)
6d3351
6d3351
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c
6d3351
index 7222b0f2c..97c87701c 100644
6d3351
--- a/src/util/virnetdevmacvlan.c
6d3351
+++ b/src/util/virnetdevmacvlan.c
6d3351
@@ -68,11 +68,11 @@ VIR_ENUM_IMPL(virNetDevMacVLanMode, VIR_NETDEV_MACVLAN_MODE_LAST,
6d3351
 
6d3351
 VIR_LOG_INIT("util.netdevmacvlan");
6d3351
 
6d3351
-# define MACVTAP_NAME_PREFIX	"macvtap"
6d3351
-# define MACVTAP_NAME_PATTERN	"macvtap%d"
6d3351
-
6d3351
-# define MACVLAN_NAME_PREFIX	"macvlan"
6d3351
-# define MACVLAN_NAME_PATTERN	"macvlan%d"
6d3351
+# define VIR_NET_GENERATED_MACVTAP_PATTERN VIR_NET_GENERATED_MACVTAP_PREFIX "%d"
6d3351
+# define VIR_NET_GENERATED_MACVLAN_PATTERN VIR_NET_GENERATED_MACVLAN_PREFIX "%d"
6d3351
+# define VIR_NET_GENERATED_PREFIX \
6d3351
+    ((flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ? \
6d3351
+     VIR_NET_GENERATED_MACVTAP_PREFIX : VIR_NET_GENERATED_MACVLAN_PREFIX)
6d3351
 
6d3351
 # define MACVLAN_MAX_ID 8191
6d3351
 
6d3351
@@ -124,9 +124,7 @@ virNetDevMacVLanReserveID(int id, unsigned int flags,
6d3351
     if (id > MACVLAN_MAX_ID) {
6d3351
         virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                        _("can't use name %s%d - out of range 0-%d"),
6d3351
-                       (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                       MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX,
6d3351
-                       id, MACVLAN_MAX_ID);
6d3351
+                       VIR_NET_GENERATED_PREFIX, id, MACVLAN_MAX_ID);
6d3351
         return -1;
6d3351
     }
6d3351
 
6d3351
@@ -134,21 +132,18 @@ virNetDevMacVLanReserveID(int id, unsigned int flags,
6d3351
         (id = virBitmapNextClearBit(bitmap, id)) < 0) {
6d3351
         virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                        _("no unused %s names available"),
6d3351
-                       (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                       MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX);
6d3351
+                       VIR_NET_GENERATED_PREFIX);
6d3351
         return -1;
6d3351
     }
6d3351
 
6d3351
     if (virBitmapIsBitSet(bitmap, id)) {
6d3351
         if (quietFail) {
6d3351
             VIR_INFO("couldn't reserve name %s%d - already in use",
6d3351
-                     (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                     MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+                     VIR_NET_GENERATED_PREFIX, id);
6d3351
         } else {
6d3351
             virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                            _("couldn't reserve name %s%d - already in use"),
6d3351
-                           (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                           MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+                           VIR_NET_GENERATED_PREFIX, id);
6d3351
         }
6d3351
         return -1;
6d3351
     }
6d3351
@@ -156,14 +151,11 @@ virNetDevMacVLanReserveID(int id, unsigned int flags,
6d3351
     if (virBitmapSetBit(bitmap, id) < 0) {
6d3351
         virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                        _("couldn't mark %s%d as used"),
6d3351
-                       (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                       MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+                       VIR_NET_GENERATED_PREFIX, id);
6d3351
         return -1;
6d3351
     }
6d3351
 
6d3351
-    VIR_INFO("reserving device %s%d",
6d3351
-             (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-             MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+    VIR_INFO("reserving device %s%d", VIR_NET_GENERATED_PREFIX, id);
6d3351
     return id;
6d3351
 }
6d3351
 
6d3351
@@ -188,9 +180,7 @@ virNetDevMacVLanReleaseID(int id, unsigned int flags)
6d3351
     if (id > MACVLAN_MAX_ID) {
6d3351
         virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                        _("can't free name %s%d - out of range 0-%d"),
6d3351
-                       (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                       MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX,
6d3351
-                       id, MACVLAN_MAX_ID);
6d3351
+                       VIR_NET_GENERATED_PREFIX, id, MACVLAN_MAX_ID);
6d3351
         return -1;
6d3351
     }
6d3351
 
6d3351
@@ -199,14 +189,12 @@ virNetDevMacVLanReleaseID(int id, unsigned int flags)
6d3351
 
6d3351
     VIR_INFO("releasing %sdevice %s%d",
6d3351
              virBitmapIsBitSet(bitmap, id) ? "" : "unreserved",
6d3351
-             (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-             MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+             VIR_NET_GENERATED_PREFIX, id);
6d3351
 
6d3351
     if (virBitmapClearBit(bitmap, id) < 0) {
6d3351
         virReportError(VIR_ERR_INTERNAL_ERROR,
6d3351
                        _("couldn't mark %s%d as unused"),
6d3351
-                       (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-                       MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX, id);
6d3351
+                       VIR_NET_GENERATED_PREFIX, id);
6d3351
         return -1;
6d3351
     }
6d3351
     return 0;
6d3351
@@ -236,11 +224,11 @@ virNetDevMacVLanReserveName(const char *name, bool quietFail)
6d3351
     if (virNetDevMacVLanInitialize() < 0)
6d3351
        return -1;
6d3351
 
6d3351
-    if (STRPREFIX(name, MACVTAP_NAME_PREFIX)) {
6d3351
-        idstr = name + strlen(MACVTAP_NAME_PREFIX);
6d3351
+    if (STRPREFIX(name, VIR_NET_GENERATED_MACVTAP_PREFIX)) {
6d3351
+        idstr = name + strlen(VIR_NET_GENERATED_MACVTAP_PREFIX);
6d3351
         flags |= VIR_NETDEV_MACVLAN_CREATE_WITH_TAP;
6d3351
-    } else if (STRPREFIX(name, MACVLAN_NAME_PREFIX)) {
6d3351
-        idstr = name + strlen(MACVLAN_NAME_PREFIX);
6d3351
+    } else if (STRPREFIX(name, VIR_NET_GENERATED_MACVLAN_PREFIX)) {
6d3351
+        idstr = name + strlen(VIR_NET_GENERATED_MACVLAN_PREFIX);
6d3351
     } else {
6d3351
         return -2;
6d3351
     }
6d3351
@@ -276,11 +264,11 @@ virNetDevMacVLanReleaseName(const char *name)
6d3351
     if (virNetDevMacVLanInitialize() < 0)
6d3351
        return -1;
6d3351
 
6d3351
-    if (STRPREFIX(name, MACVTAP_NAME_PREFIX)) {
6d3351
-        idstr = name + strlen(MACVTAP_NAME_PREFIX);
6d3351
+    if (STRPREFIX(name, VIR_NET_GENERATED_MACVTAP_PREFIX)) {
6d3351
+        idstr = name + strlen(VIR_NET_GENERATED_MACVTAP_PREFIX);
6d3351
         flags |= VIR_NETDEV_MACVLAN_CREATE_WITH_TAP;
6d3351
-    } else if (STRPREFIX(name, MACVLAN_NAME_PREFIX)) {
6d3351
-        idstr = name + strlen(MACVLAN_NAME_PREFIX);
6d3351
+    } else if (STRPREFIX(name, VIR_NET_GENERATED_MACVLAN_PREFIX)) {
6d3351
+        idstr = name + strlen(VIR_NET_GENERATED_MACVLAN_PREFIX);
6d3351
     } else {
6d3351
         return 0;
6d3351
     }
6d3351
@@ -985,10 +973,9 @@ virNetDevMacVLanCreateWithVPortProfile(const char *ifnameRequested,
6d3351
                                        size_t tapfdSize,
6d3351
                                        unsigned int flags)
6d3351
 {
6d3351
-    const char *type = (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-        MACVTAP_NAME_PREFIX : MACVLAN_NAME_PREFIX;
6d3351
+    const char *type = VIR_NET_GENERATED_PREFIX;
6d3351
     const char *pattern = (flags & VIR_NETDEV_MACVLAN_CREATE_WITH_TAP) ?
6d3351
-        MACVTAP_NAME_PATTERN : MACVLAN_NAME_PATTERN;
6d3351
+        VIR_NET_GENERATED_MACVTAP_PATTERN : VIR_NET_GENERATED_MACVLAN_PATTERN;
6d3351
     int reservedID = -1;
6d3351
     char ifname[IFNAMSIZ];
6d3351
     int retries, do_retry = 0;
6d3351
@@ -1031,8 +1018,8 @@ virNetDevMacVLanCreateWithVPortProfile(const char *ifnameRequested,
6d3351
     if (ifnameRequested) {
6d3351
         int rc;
6d3351
         bool isAutoName
6d3351
-            = (STRPREFIX(ifnameRequested, MACVTAP_NAME_PREFIX) ||
6d3351
-               STRPREFIX(ifnameRequested, MACVLAN_NAME_PREFIX));
6d3351
+            = (STRPREFIX(ifnameRequested, VIR_NET_GENERATED_MACVTAP_PREFIX) ||
6d3351
+               STRPREFIX(ifnameRequested, VIR_NET_GENERATED_MACVLAN_PREFIX));
6d3351
 
6d3351
         VIR_INFO("Requested macvtap device name: %s", ifnameRequested);
6d3351
         virMutexLock(&virNetDevMacVLanCreateMutex);
6d3351
diff --git a/src/util/virnetdevmacvlan.h b/src/util/virnetdevmacvlan.h
6d3351
index c40f23ed2..a7c4b6d9c 100644
6d3351
--- a/src/util/virnetdevmacvlan.h
6d3351
+++ b/src/util/virnetdevmacvlan.h
6d3351
@@ -51,6 +51,12 @@ typedef enum {
6d3351
    VIR_NETDEV_MACVLAN_VNET_HDR          = 1 << 2,
6d3351
 } virNetDevMacVLanCreateFlags;
6d3351
 
6d3351
+/* libvirt will start macvtap/macvlan interface names with one of
6d3351
+ * these prefixes when it auto-generates the name
6d3351
+ */
6d3351
+# define VIR_NET_GENERATED_MACVTAP_PREFIX "macvtap"
6d3351
+# define VIR_NET_GENERATED_MACVLAN_PREFIX "macvlan"
6d3351
+
6d3351
 int virNetDevMacVLanReserveName(const char *name, bool quietfail);
6d3351
 int virNetDevMacVLanReleaseName(const char *name);
6d3351
 
6d3351
-- 
6d3351
2.12.2
6d3351