forked from pool/libvirt
13d485c1ee
bnc#799262 - Fix interface management functions that were broken when rebasing libvirt-suse-netcontrol.patch bnc#799444 (SLES bug that affect Factory too) OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=240
212 lines
7.0 KiB
Diff
212 lines
7.0 KiB
Diff
Index: libvirt-1.0.1/configure.ac
|
|
===================================================================
|
|
--- libvirt-1.0.1.orig/configure.ac
|
|
+++ libvirt-1.0.1/configure.ac
|
|
@@ -102,6 +102,7 @@ AVAHI_REQUIRED="0.6.0"
|
|
POLKIT_REQUIRED="0.6"
|
|
PARTED_REQUIRED="1.8.0"
|
|
NETCF_REQUIRED="0.1.4"
|
|
+NETCONTROL_REQUIRED="0.2.0"
|
|
UDEV_REQUIRED=145
|
|
PCIACCESS_REQUIRED=0.10.0
|
|
XMLRPC_REQUIRED=1.14.0
|
|
@@ -2005,6 +2006,38 @@ AM_CONDITIONAL([WITH_NETCF], [test "$wit
|
|
AC_SUBST([NETCF_CFLAGS])
|
|
AC_SUBST([NETCF_LIBS])
|
|
|
|
+AC_ARG_WITH([netcontrol],
|
|
+ AC_HELP_STRING([--with-netcontrol], [SUSE netcontrol support to configure physical host network interfaces @<:@default=check@:>@]),
|
|
+ [],
|
|
+ [test "$with_netcontrol" = "yes" && with_netcontrol=no || with_netcontrol=check])
|
|
+
|
|
+NETCONTROL_CFLAGS=
|
|
+NETCONTROL_LIBS=
|
|
+if test "$with_netcf" = "yes"; then
|
|
+ if test "$with_netcontrol" = "yes" || test "$with_netcontrol" = "check"; then
|
|
+ AC_MSG_WARN([netcf and netcontrol cannot be used together, disabling netcontrol])
|
|
+ with_netcontrol=no
|
|
+ fi
|
|
+fi
|
|
+
|
|
+if test "$with_netcontrol" = "yes" || test "$with_netcontrol" = "check"; then
|
|
+ PKG_CHECK_MODULES(NETCONTROL, netcontrol >= $NETCONTROL_REQUIRED,
|
|
+ [with_netcontrol=yes], [
|
|
+ if test "$with_netcontrol" = "check" ; then
|
|
+ with_netcontrol=no
|
|
+ else
|
|
+ AC_MSG_ERROR(
|
|
+ [You must install netcontrol >= $NETCONTROL_REQUIRED to compile libvirt])
|
|
+ fi
|
|
+ ])
|
|
+ if test "$with_netcontrol" = "yes" ; then
|
|
+ AC_DEFINE_UNQUOTED([WITH_NETCONTROL], 1,
|
|
+ [whether libnetcontrol is available to configure physical host network interfaces])
|
|
+ fi
|
|
+fi
|
|
+AM_CONDITIONAL([WITH_NETCONTROL], [test "$with_netcontrol" = "yes"])
|
|
+AC_SUBST([NETCONTROL_CFLAGS])
|
|
+AC_SUBST([NETCONTROL_LIBS])
|
|
|
|
AC_ARG_WITH([secrets],
|
|
AC_HELP_STRING([--with-secrets], [with local secrets management driver @<:@default=yes@:>@]),[],[with_secrets=yes])
|
|
@@ -2863,11 +2896,12 @@ if test "$with_libvirtd" = "no" ; then
|
|
with_interface=no
|
|
fi
|
|
|
|
-dnl The interface driver depends on the netcf library or udev library
|
|
-case $with_interface:$with_netcf:$with_udev in
|
|
+dnl The interface driver depends on the netcf library, netcontrol library, or
|
|
+dnl udev library
|
|
+case $with_interface:$with_netcf:$with_netcontrol:$with_udev in
|
|
check:*yes*) with_interface=yes ;;
|
|
check:no:no) with_interface=no ;;
|
|
- yes:no:no) AC_MSG_ERROR([Requested the Interface driver without netcf or udev support]) ;;
|
|
+ yes:no:no) AC_MSG_ERROR([Requested the Interface driver without netcf, netcontrol, or udev support]) ;;
|
|
esac
|
|
|
|
if test "$with_interface" = "yes" ; then
|
|
@@ -3253,6 +3287,11 @@ AC_MSG_NOTICE([ netcf: $NETCF_CFLAGS $
|
|
else
|
|
AC_MSG_NOTICE([ netcf: no])
|
|
fi
|
|
+if test "$with_netcontrol" = "yes" ; then
|
|
+AC_MSG_NOTICE([ netctrl: $NETCONTROL_CFLAGS $NETCONTROL_LIBS])
|
|
+else
|
|
+AC_MSG_NOTICE([ netctrl: no])
|
|
+fi
|
|
if test "$with_qemu" = "yes" && test "$LIBPCAP_FOUND" != "no"; then
|
|
AC_MSG_NOTICE([ pcap: $LIBPCAP_CFLAGS $LIBPCAP_LIBS])
|
|
else
|
|
Index: libvirt-1.0.1/src/Makefile.am
|
|
===================================================================
|
|
--- libvirt-1.0.1.orig/src/Makefile.am
|
|
+++ libvirt-1.0.1/src/Makefile.am
|
|
@@ -617,6 +617,10 @@ if WITH_NETCF
|
|
INTERFACE_DRIVER_SOURCES += \
|
|
interface/interface_backend_netcf.c
|
|
endif
|
|
+if WITH_NETCONTROL
|
|
+INTERFACE_DRIVER_SOURCES += \
|
|
+ interface/interface_backend_netcf.c
|
|
+endif
|
|
if HAVE_UDEV
|
|
INTERFACE_DRIVER_SOURCES += \
|
|
interface/interface_backend_udev.c
|
|
@@ -1105,11 +1109,16 @@ if WITH_NETCF
|
|
libvirt_driver_interface_la_CFLAGS += $(NETCF_CFLAGS)
|
|
libvirt_driver_interface_la_LIBADD += $(NETCF_LIBS)
|
|
else
|
|
+if WITH_NETCONTROL
|
|
+libvirt_driver_interface_la_CFLAGS += $(NETCONTROL_CFLAGS)
|
|
+libvirt_driver_interface_la_LIBADD += $(NETCONTROL_LIBS)
|
|
+else
|
|
if HAVE_UDEV
|
|
libvirt_driver_interface_la_CFLAGS += $(UDEV_CFLAGS)
|
|
libvirt_driver_interface_la_LIBADD += $(UDEV_LIBS)
|
|
endif
|
|
endif
|
|
+endif
|
|
if WITH_DRIVER_MODULES
|
|
libvirt_driver_interface_la_LIBADD += ../gnulib/lib/libgnu.la
|
|
libvirt_driver_interface_la_LDFLAGS += -module -avoid-version
|
|
Index: libvirt-1.0.1/tools/virsh.c
|
|
===================================================================
|
|
--- libvirt-1.0.1.orig/tools/virsh.c
|
|
+++ libvirt-1.0.1/tools/virsh.c
|
|
@@ -2730,6 +2730,8 @@ vshShowVersion(vshControl *ctl ATTRIBUTE
|
|
vshPrint(ctl, " netcf");
|
|
# elif defined(HAVE_UDEV)
|
|
vshPrint(ctl, " udev");
|
|
+# elif defined(WITH_NETCONTROL)
|
|
+ vshPrint(ctl, " netcontrol");
|
|
# endif
|
|
#endif
|
|
#ifdef WITH_NWFILTER
|
|
Index: libvirt-1.0.1/src/interface/interface_backend_netcf.c
|
|
===================================================================
|
|
--- libvirt-1.0.1.orig/src/interface/interface_backend_netcf.c
|
|
+++ libvirt-1.0.1/src/interface/interface_backend_netcf.c
|
|
@@ -23,7 +23,12 @@
|
|
|
|
#include <config.h>
|
|
|
|
-#include <netcf.h>
|
|
+#ifdef WITH_NETCONTROL
|
|
+# include <netcontrol/netcf.h>
|
|
+# include <netcontrol/logger.h>
|
|
+#else
|
|
+# include <netcf.h>
|
|
+#endif
|
|
|
|
#include "virterror_internal.h"
|
|
#include "datatypes.h"
|
|
@@ -52,6 +57,37 @@ static void interfaceDriverUnlock(struct
|
|
virMutexUnlock(&driver->lock);
|
|
}
|
|
|
|
+#ifdef WITH_NETCONTROL
|
|
+static void interface_nc_log_driver(const char *category,
|
|
+ int priority,
|
|
+ const char *func,
|
|
+ const char *file,
|
|
+ long long line,
|
|
+ const char *msg,
|
|
+ size_t len ATTRIBUTE_UNUSED)
|
|
+{
|
|
+ int vp;
|
|
+
|
|
+ switch(priority) {
|
|
+ case NC_LOG_FATAL:
|
|
+ case NC_LOG_ERROR:
|
|
+ vp = VIR_LOG_ERROR;
|
|
+ break;
|
|
+ case NC_LOG_WARN:
|
|
+ vp = VIR_LOG_WARN;
|
|
+ break;
|
|
+ case NC_LOG_INFO:
|
|
+ vp = VIR_LOG_INFO;
|
|
+ break;
|
|
+ case NC_LOG_DEBUG:
|
|
+ default:
|
|
+ vp = VIR_LOG_DEBUG;
|
|
+ break;
|
|
+ }
|
|
+ virLogMessage(VIR_LOG_FROM_FILE, vp, file, line, func, 0, "%s", msg);
|
|
+}
|
|
+#endif
|
|
+
|
|
static int netcf_to_vir_err(int netcf_errcode)
|
|
{
|
|
switch (netcf_errcode)
|
|
@@ -137,6 +173,10 @@ static virDrvOpenStatus interfaceOpenInt
|
|
goto mutex_error;
|
|
}
|
|
|
|
+#ifdef WITH_NETCONTROL
|
|
+ nc_logger_redirect_to(interface_nc_log_driver);
|
|
+#endif
|
|
+
|
|
/* open netcf */
|
|
if (ncf_init(&driverState->netcf, NULL) != 0)
|
|
{
|
|
Index: libvirt-1.0.1/src/interface/interface_driver.c
|
|
===================================================================
|
|
--- libvirt-1.0.1.orig/src/interface/interface_driver.c
|
|
+++ libvirt-1.0.1/src/interface/interface_driver.c
|
|
@@ -28,8 +28,14 @@ interfaceRegister(void) {
|
|
if (netcfIfaceRegister() == 0)
|
|
return 0;
|
|
#endif /* WITH_NETCF */
|
|
+#ifdef WITH_NETCONTROL
|
|
+ /* Attempt to load the netcontrol based backend, which is a slightly
|
|
+ patched netcf backend */
|
|
+ if (netcfIfaceRegister() == 0)
|
|
+ return 0;
|
|
+#endif /* WITH_NETCONTROL */
|
|
#if HAVE_UDEV
|
|
- /* If there's no netcf or it failed to load, register the udev backend */
|
|
+ /* If there's no netcf or netcontrol, or it failed to load, register the udev backend */
|
|
if (udevIfaceRegister() == 0)
|
|
return 0;
|
|
#endif /* HAVE_UDEV */
|