[libvirt] [PATCH 2/2 V2] cleanup: make several interface functions commonly available

Stefan Berger stefanb at linux.vnet.ibm.com
Thu Jun 23 00:42:08 UTC 2011


On 06/22/2011 04:31 PM, Eric Blake wrote:
> On 06/21/2011 06:05 PM, Stefan Berger wrote:
>> In a second cleanup step this patch makes several interface functions
>> from macvtap.c commonly available by moving them into interface.c and
>> prefixing their names with 'iface'.
>> ---
>>   src/libvirt_private.syms |    8
>>   src/util/interface.c     |  609 +++++++++++++++++++++++++++++++++++++++++++++++
>>   src/util/interface.h     |   37 ++
>>   src/util/macvtap.c       |  495 --------------------------------------
>>   4 files changed, 663 insertions(+), 486 deletions(-)
> Unfortunately, this breaks things when compiling on RHEL 5.  There,
> macvtap.c was not compiled, but interface.c is compiled, and I'm now
> getting errors like this:
>
> util/interface.c: In function 'ifaceMacvtapLinkAdd':
> util/interface.c:538: warning: assignment makes pointer from integer
> without a cast
> util/interface.c:557: error: 'IFLA_LINKINJFO' undeclared (first use in
> this function)
> ...
>
> We need some preprocessor conditionals to filter out these functions
> when support is lacking.
>
My fault. We had it compiled conditionally before and I took it out of 
the #if WITH_MACVTAP.

Does this patch here make it work?

---
  src/util/interface.c |   17 +++++++++++++++--
  1 file changed, 15 insertions(+), 2 deletions(-)

Index: libvirt-acl/src/util/interface.c
===================================================================
--- libvirt-acl.orig/src/util/interface.c
+++ libvirt-acl/src/util/interface.c
@@ -510,7 +510,7 @@ ifaceSetMacaddr(const char *ifname ATTRI
   *
   * Returns 0 on success, -1 on fatal error.
   */
-#if __linux__
+#if defined(__linux__) && defined(WITH_MACVTAP)
  int
  ifaceMacvtapLinkAdd(const char *type,
                      const unsigned char *macaddress, int macaddrsize,
@@ -649,8 +649,14 @@ ifaceMacvtapLinkAdd(const char *type ATT
                      int *retry ATTRIBUTE_UNUSED)
  {
      ifaceError(VIR_ERR_INTERNAL_ERROR, "%s",
+# if defined(__linux__) && !defined (WITH_MACVTAP)
+               _("ifaceMacvtapLinkAdd is not supported since include 
files "
+                 "were too old"));
+# else
                 _("ifaceMacvtapLinkAdd is not supported on non-linux "
                   "platforms"));
+# endif
+
      return -1;
  }

@@ -758,7 +764,8 @@ ifaceLinkDel(const char *ifname ATTRIBUT
  #endif


-#if __linux__
+#if defined(__linux__) && defined(IFLA_PORT_MAX)
+
  static struct nla_policy ifla_policy[IFLA_MAX + 1] =
  {
    [IFLA_VF_PORTS] = { .type = NLA_NESTED },
@@ -894,8 +901,14 @@ ifaceMacvtapLinkDump(bool nltarget_kerne
                       uint32_t (*getPidFunc)(void) ATTRIBUTE_UNUSED)
  {
      ifaceError(VIR_ERR_INTERNAL_ERROR, "%s",
+# if defined(__linux__) && !defined(IFLA_PORT_MAX)
+               _("ifaceMacvtapLinkDump is not supported since include 
files "
+                 "were too old"));
+# else
                 _("ifaceMacvtapLinkDump is not supported on non-linux "
                   "platforms"));
+# endif
+
      return -1;
  }


Stefan





More information about the libvir-list mailing list