dnl netlink library
+LIBNL_ROUTE3_CFLAGS=""
+LIBNL_ROUTE3_LIBS=""
LIBNL_CFLAGS=""
LIBNL_LIBS=""
have_libnl=no
if test "$with_linux" = "yes"; then
- PKG_CHECK_MODULES([LIBNL], [libnl-1 >= $LIBNL_REQUIRED], [
+ PKG_CHECK_MODULES([LIBNL], [libnl-3.0], [
have_libnl=yes
- AC_DEFINE_UNQUOTED([HAVE_LIBNL], 1, [whether the netlink library is available])
- ], [
- if test "$with_macvtap" = "yes"; then
- AC_MSG_ERROR([libnl-devel >= $LIBNL_REQUIRED is required for macvtap support])
- fi
+ AC_DEFINE([HAVE_LIBNL3], [1], [Use libnl-3.0])
+ AC_DEFINE([HAVE_LIBNL], [1], [whether the netlink library is available])
+ PKG_CHECK_MODULES([LIBNL_ROUTE3], [libnl-route-3.0])
+ LIBNL_CFLAGS="$LIBNL_CFLAGS $LIBNL_ROUTE3_CFLAGS"
+ LIBNL_LIBS="$LIBNL_LIBS $LIBNL_ROUTE3_LIBS"
+ ], [PKG_CHECK_MODULES([LIBNL], [libnl-1 >= $LIBNL_REQUIRED], [
+ have_libnl=yes
+ AC_DEFINE_UNQUOTED([HAVE_LIBNL], [1],
+ [whether the netlink library is available])
+ AC_DEFINE_UNQUOTED([HAVE_LIBNL1], [1],
+ [whether the netlink v1 library is available])
+ ], [
+ if test "$with_macvtap" = "yes"; then
+ AC_MSG_ERROR([libnl-devel >= $LIBNL_REQUIRED is required for macvtap support])
+ fi
+ ])
])
fi
AM_CONDITIONAL([HAVE_LIBNL], [test "$have_libnl" = "yes"])
libvirt_driver_qemu_la_CFLAGS = $(NUMACTL_CFLAGS) \
$(GNUTLS_CFLAGS) \
$(LIBXML_CFLAGS) \
+ $(LIBNL_CFLAGS) \
-I$(top_srcdir)/src/conf $(AM_CFLAGS)
libvirt_driver_qemu_la_LDFLAGS = $(AM_LDFLAGS)
libvirt_driver_qemu_la_LIBADD = $(NUMACTL_LIBS) \
$(CAPNG_LIBS) \
$(GNUTLS_LIBS) \
- $(LIBXML_LIBS)
+ $(LIBXML_LIBS) \
+ $(LIBNL_LIBS)
if WITH_DRIVER_MODULES
libvirt_driver_qemu_la_LIBADD += ../gnulib/lib/libgnu.la
libvirt_driver_qemu_la_LDFLAGS += -module -avoid-version
#libvirt_la_BUILT_LIBADD += libvirt_driver_lxc.la
endif
libvirt_driver_lxc_la_CFLAGS = \
+ $(LIBNL_CFLAGS) \
-I$(top_srcdir)/src/conf $(AM_CFLAGS)
-libvirt_driver_lxc_la_LIBADD = $(CAPNG_LIBS)
+libvirt_driver_lxc_la_LIBADD = $(CAPNG_LIBS) $(LIBNL_LIBS)
if WITH_SECDRIVER_SELINUX
libvirt_driver_lxc_la_LIBADD += $(SELINUX_LIBS)
endif
#libvirt_la_BUILT_LIBADD += libvirt_driver_network.la
endif
libvirt_driver_network_la_CFLAGS = \
+ $(LIBNL_CFLAGS) \
-I$(top_srcdir)/src/conf $(AM_CFLAGS)
if WITH_DRIVER_MODULES
-libvirt_driver_network_la_LIBADD = ../gnulib/lib/libgnu.la
+libvirt_driver_network_la_LIBADD = ../gnulib/lib/libgnu.la $(LIBNL_LIBS)
libvirt_driver_network_la_LDFLAGS = -module -avoid-version $(AM_LDFLAGS)
endif
libvirt_driver_network_la_SOURCES = $(NETWORK_DRIVER_SOURCES)
noinst_LTLIBRARIES += libvirt_driver_nwfilter.la
endif
libvirt_driver_nwfilter_la_CFLAGS = $(LIBPCAP_CFLAGS) \
- -I$(top_srcdir)/src/conf $(AM_CFLAGS)
+ -I$(top_srcdir)/src/conf $(LIBNL_CFLAGS) $(AM_CFLAGS)
libvirt_driver_nwfilter_la_LDFLAGS = $(LD_AMFLAGS)
-libvirt_driver_nwfilter_la_LIBADD = $(LIBPCAP_LIBS)
+libvirt_driver_nwfilter_la_LIBADD = $(LIBPCAP_LIBS) $(LIBNL_LIBS)
if WITH_DRIVER_MODULES
libvirt_driver_nwfilter_la_LIBADD += ../gnulib/lib/libgnu.la
libvirt_driver_nwfilter_la_LDFLAGS += -module -avoid-version
$(YAJL_CFLAGS) \
$(AUDIT_CFLAGS) \
$(DBUS_CFLAGS) \
+ $(LIBNL_CFLAGS) \
-I$(top_srcdir)/src/conf \
$(AM_CFLAGS)
if HAVE_LIBBLKID
/*
- * Copyright (C) 2010-2011 Red Hat, Inc.
+ * Copyright (C) 2010-2012 Red Hat, Inc.
* Copyright (C) 2010-2012 IBM Corporation
*
* This library is free software; you can redistribute it and/or
int deleted;
};
+# ifdef HAVE_LIBNL1
+# define virNetlinkAlloc nl_handle_alloc
+# define virNetlinkFree nl_handle_destroy
+typedef struct nl_handle virNetlinkHandle;
+# else
+# define virNetlinkAlloc nl_socket_alloc
+# define virNetlinkFree nl_socket_free
+typedef struct nl_sock virNetlinkHandle;
+# endif
+
typedef struct _virNetlinkEventSrvPrivate virNetlinkEventSrvPrivate;
typedef virNetlinkEventSrvPrivate *virNetlinkEventSrvPrivatePtr;
struct _virNetlinkEventSrvPrivate {
virMutex lock;
int eventwatch;
int netlinkfd;
- struct nl_handle *netlinknh;
+ virNetlinkHandle *netlinknh;
/*Events*/
int handled;
size_t handlesCount;
int fd;
int n;
struct nlmsghdr *nlmsg = nlmsg_hdr(nl_msg);
- struct nl_handle *nlhandle = nl_handle_alloc();
+ virNetlinkHandle *nlhandle = virNetlinkAlloc();
if (!nlhandle) {
virReportSystemError(errno,
*respbuflen = 0;
}
- nl_handle_destroy(nlhandle);
+ virNetlinkFree(nlhandle);
return rc;
}
virNetlinkEventServerLock(srv);
nl_close(srv->netlinknh);
- nl_handle_destroy(srv->netlinknh);
+ virNetlinkFree(srv->netlinknh);
virEventRemoveHandle(srv->eventwatch);
/* free any remaining clients on the list */
virNetlinkEventServerLock(srv);
/* Allocate a new socket and get fd */
- srv->netlinknh = nl_handle_alloc();
+ srv->netlinknh = virNetlinkAlloc();
if (!srv->netlinknh) {
virReportSystemError(errno,
error_server:
if (ret < 0) {
nl_close(srv->netlinknh);
- nl_handle_destroy(srv->netlinknh);
+ virNetlinkFree(srv->netlinknh);
}
error_locked:
virNetlinkEventServerUnlock(srv);