[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