
On 13.06.2013 08:26, Roman Bogorodskiy wrote:
This method is useful not only in virnetdev.c. --- src/libvirt_private.syms | 1 + src/util/virnetdev.c | 15 +++++++++++++-- src/util/virnetdev.h | 14 +++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 042081f..f26b8aa 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1530,6 +1530,7 @@ virNetDevSetMTUFromDevice; virNetDevSetName; virNetDevSetNamespace; virNetDevSetOnline; +virNetDevSetupControl; virNetDevValidateConfig;
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c index 1a22126..f6b7e12 100644 --- a/src/util/virnetdev.c +++ b/src/util/virnetdev.c @@ -88,11 +88,22 @@ static int virNetDevSetupControlFull(const char *ifname, }
-static int virNetDevSetupControl(const char *ifname, - struct ifreq *ifr) +int +virNetDevSetupControl(const char *ifname, + struct ifreq *ifr) { return virNetDevSetupControlFull(ifname, ifr, VIR_NETDEV_FAMILY, SOCK_DGRAM); } +#else +int +virNetDevSetupControl(const char *ifname ATTRIBUTE_UNUSED, + void *ifr ATTRIBUTE_UNUSED) +{ + virReportSystemError(ENOSYS,
s/$/ "%s"/
+ _("Network device configuration is not supported " + "on this platform")); + return -1; +} #endif
diff --git a/src/util/virnetdev.h b/src/util/virnetdev.h index bc0777c..86c1f18 100644 --- a/src/util/virnetdev.h +++ b/src/util/virnetdev.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2012 Red Hat, Inc. + * Copyright (C) 2007-2013 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -23,11 +23,23 @@ #ifndef __VIR_NETDEV_H__ # define __VIR_NETDEV_H__
+# include <net/if.h> +
Since virnetdev.c already includes <linux/if.h> this chunk makes the compilation fail. It's, however, sufficient, to apply 3/3 prior to this patch.
# include "virsocketaddr.h" # include "virnetlink.h" # include "virmacaddr.h" # include "virpci.h"
+# ifdef HAVE_STRUCT_IFREQ +typedef struct ifreq virIfreq; +# else +typedef struct {} virIfreq;
s/struct {}/void/
+# endif + +int virNetDevSetupControl(const char *ifname, + virIfreq *ifr) + ATTRIBUTE_RETURN_CHECK ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2); + int virNetDevExists(const char *brname) ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK;
Michal