From 28b13b7e8e6e1e4fa1593f0dfb1c37569f2f90a8 Mon Sep 17 00:00:00 2001 From: Parabola Date: Tue, 15 Nov 2011 14:34:01 +0000 Subject: Tue Nov 15 14:33:58 UTC 2011 --- ...-for-libnl-2.x-adapted-from-a-newer-versi.patch | 344 --------------------- ...eturns-its-own-error-codes-not-errnos-han.patch | 159 ---------- testing/libpcap/PKGBUILD | 41 --- 3 files changed, 544 deletions(-) delete mode 100644 testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch delete mode 100644 testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch delete mode 100644 testing/libpcap/PKGBUILD (limited to 'testing/libpcap') diff --git a/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch b/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch deleted file mode 100644 index 1fce472b7..000000000 --- a/testing/libpcap/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch +++ /dev/null @@ -1,344 +0,0 @@ -From bc937fc4ff6715e9bee939041fa02be0755d7d58 Mon Sep 17 00:00:00 2001 -From: Guy Harris -Date: Sat, 13 Nov 2010 17:42:47 -0800 -Subject: [PATCH] Add support for libnl 2.x, adapted from a newer version of the iw command. - ---- - config.h.in | 3 ++ - configure | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- - configure.in | 40 ++++++++++++++++++---- - pcap-linux.c | 58 ++++++++++++++++++++++++------- - 4 files changed, 184 insertions(+), 25 deletions(-) - -diff --git a/config.h.in b/config.h.in -index f988e8f..3b9ce3c 100644 ---- a/config.h.in -+++ b/config.h.in -@@ -52,6 +52,9 @@ - /* if libnl exists */ - #undef HAVE_LIBNL - -+/* if libnl exists and is version 2.x */ -+#undef HAVE_LIBNL_2_x -+ - /* Define to 1 if you have the header file. */ - #undef HAVE_LIMITS_H - -diff --git a/configure b/configure -index c99c1ab..7338dee 100755 ---- a/configure -+++ b/configure -@@ -7340,7 +7340,93 @@ fi - - - if test x$with_libnl != xno ; then -- { echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5 -+ # -+ # Try libnl 2.x first. -+ # -+ { echo "$as_me:$LINENO: checking for nl_socket_alloc in -lnl" >&5 -+echo $ECHO_N "checking for nl_socket_alloc in -lnl... $ECHO_C" >&6; } -+if test "${ac_cv_lib_nl_nl_socket_alloc+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lnl $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char nl_socket_alloc (); -+int -+main () -+{ -+return nl_socket_alloc (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 -+ (eval "$ac_link") 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && -+ $as_test_x conftest$ac_exeext; then -+ ac_cv_lib_nl_nl_socket_alloc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_cv_lib_nl_nl_socket_alloc=no -+fi -+ -+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_socket_alloc" >&5 -+echo "${ECHO_T}$ac_cv_lib_nl_nl_socket_alloc" >&6; } -+if test $ac_cv_lib_nl_nl_socket_alloc = yes; then -+ -+ # -+ # Yes, we have libnl 2.x. -+ # -+ LIBS="-lnl-genl -lnl $LIBS" -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LIBNL 1 -+_ACEOF -+ -+ -+cat >>confdefs.h <<\_ACEOF -+#define HAVE_LIBNL_2_x 1 -+_ACEOF -+ -+ -+else -+ -+ # -+ # No, we don't; do we have libnl 1.x? -+ # -+ { echo "$as_me:$LINENO: checking for nl_handle_alloc in -lnl" >&5 - echo $ECHO_N "checking for nl_handle_alloc in -lnl... $ECHO_C" >&6; } - if test "${ac_cv_lib_nl_nl_handle_alloc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -@@ -7402,18 +7488,30 @@ fi - { echo "$as_me:$LINENO: result: $ac_cv_lib_nl_nl_handle_alloc" >&5 - echo "${ECHO_T}$ac_cv_lib_nl_nl_handle_alloc" >&6; } - if test $ac_cv_lib_nl_nl_handle_alloc = yes; then -- LIBS="-lnl $LIBS" -+ -+ # -+ # Yes. -+ # -+ LIBS="-lnl $LIBS" - - cat >>confdefs.h <<\_ACEOF - #define HAVE_LIBNL 1 - _ACEOF - -+ - else -- if test x$with_libnl = xyes ; then -- { { echo "$as_me:$LINENO: error: libnl support requested but libnl not found" >&5 -+ -+ # -+ # No, we don't have libnl at all. -+ # -+ if test x$with_libnl = xyes ; then -+ { { echo "$as_me:$LINENO: error: libnl support requested but libnl not found" >&5 - echo "$as_me: error: libnl support requested but libnl not found" >&2;} - { (exit 1); exit 1; }; } -- fi -+ fi -+ -+fi -+ - - fi - -diff --git a/configure.in b/configure.in -index 16eadf9..ef801ed 100644 ---- a/configure.in -+++ b/configure.in -@@ -445,13 +445,39 @@ linux) - with_libnl=$withval,,) - - if test x$with_libnl != xno ; then -- AC_CHECK_LIB(nl, nl_handle_alloc, -- LIBS="-lnl $LIBS" -- AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]), -- if test x$with_libnl = xyes ; then -- AC_MSG_ERROR([libnl support requested but libnl not found]) -- fi -- ) -+ # -+ # Try libnl 2.x first. -+ # -+ AC_CHECK_LIB(nl, nl_socket_alloc, -+ [ -+ # -+ # Yes, we have libnl 2.x. -+ # -+ LIBS="-lnl-genl -lnl $LIBS" -+ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]) -+ AC_DEFINE(HAVE_LIBNL_2_x,1,[if libnl exists and is version 2.x]) -+ ], -+ [ -+ # -+ # No, we don't; do we have libnl 1.x? -+ # -+ AC_CHECK_LIB(nl, nl_handle_alloc, -+ [ -+ # -+ # Yes. -+ # -+ LIBS="-lnl $LIBS" -+ AC_DEFINE(HAVE_LIBNL,1,[if libnl exists]) -+ ], -+ [ -+ # -+ # No, we don't have libnl at all. -+ # -+ if test x$with_libnl = xyes ; then -+ AC_MSG_ERROR([libnl support requested but libnl not found]) -+ fi -+ ]) -+ ]) - fi - - AC_LBL_TPACKET_STATS -diff --git a/pcap-linux.c b/pcap-linux.c -index f8b3f10..deabbc4 100644 ---- a/pcap-linux.c -+++ b/pcap-linux.c -@@ -527,8 +527,37 @@ get_mac80211_phydev(pcap_t *handle, const char *device, char *phydev_path, - return 1; - } - -+#ifndef HAVE_LIBNL_2_x -+/* libnl 2.x compatibility code */ -+ -+#define nl_sock nl_handle -+ -+static inline struct nl_handle * -+nl_socket_alloc(void) -+{ -+ return nl_handle_alloc(); -+} -+ -+static inline void -+nl_socket_free(struct nl_handle *h) -+{ -+ nl_handle_destroy(h); -+} -+ -+static inline int -+__genl_ctrl_alloc_cache(struct nl_handle *h, struct nl_cache **cache) -+{ -+ struct nl_cache *tmp = genl_ctrl_alloc_cache(h); -+ if (!tmp) -+ return -ENOMEM; -+ *cache = tmp; -+ return 0; -+} -+#define genl_ctrl_alloc_cache __genl_ctrl_alloc_cache -+#endif /* !HAVE_LIBNL_2_x */ -+ - struct nl80211_state { -- struct nl_handle *nl_handle; -+ struct nl_sock *nl_sock; - struct nl_cache *nl_cache; - struct genl_family *nl80211; - }; -@@ -536,23 +565,26 @@ struct nl80211_state { - static int - nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device) - { -- state->nl_handle = nl_handle_alloc(); -- if (!state->nl_handle) { -+ int err; -+ -+ state->nl_sock = nl_socket_alloc(); -+ if (!state->nl_sock) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, - "%s: failed to allocate netlink handle", device); - return PCAP_ERROR; - } - -- if (genl_connect(state->nl_handle)) { -+ if (genl_connect(state->nl_sock)) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, - "%s: failed to connect to generic netlink", device); - goto out_handle_destroy; - } - -- state->nl_cache = genl_ctrl_alloc_cache(state->nl_handle); -- if (!state->nl_cache) { -+ err = genl_ctrl_alloc_cache(state->nl_sock, &state->nl_cache); -+ if (err < 0) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, -- "%s: failed to allocate generic netlink cache", device); -+ "%s: failed to allocate generic netlink cache: %s", -+ device, strerror(-err)); - goto out_handle_destroy; - } - -@@ -568,7 +600,7 @@ nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device) - out_cache_free: - nl_cache_free(state->nl_cache); - out_handle_destroy: -- nl_handle_destroy(state->nl_handle); -+ nl_socket_free(state->nl_sock); - return PCAP_ERROR; - } - -@@ -577,7 +609,7 @@ nl80211_cleanup(struct nl80211_state *state) - { - genl_family_put(state->nl80211); - nl_cache_free(state->nl_cache); -- nl_handle_destroy(state->nl_handle); -+ nl_socket_free(state->nl_sock); - } - - static int -@@ -605,7 +637,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - NLA_PUT_STRING(msg, NL80211_ATTR_IFNAME, mondevice); - NLA_PUT_U32(msg, NL80211_ATTR_IFTYPE, NL80211_IFTYPE_MONITOR); - -- err = nl_send_auto_complete(state->nl_handle, msg); -+ err = nl_send_auto_complete(state->nl_sock, msg); - if (err < 0) { - if (err == -ENFILE) { - /* -@@ -626,7 +658,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - return PCAP_ERROR; - } - } -- err = nl_wait_for_ack(state->nl_handle); -+ err = nl_wait_for_ack(state->nl_sock); - if (err < 0) { - if (err == -ENFILE) { - /* -@@ -685,7 +717,7 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - 0, NL80211_CMD_DEL_INTERFACE, 0); - NLA_PUT_U32(msg, NL80211_ATTR_IFINDEX, ifindex); - -- err = nl_send_auto_complete(state->nl_handle, msg); -+ err = nl_send_auto_complete(state->nl_sock, msg); - if (err < 0) { - if (err == -ENFILE) { - /* -@@ -706,7 +738,7 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - return PCAP_ERROR; - } - } -- err = nl_wait_for_ack(state->nl_handle); -+ err = nl_wait_for_ack(state->nl_sock); - if (err < 0) { - if (err == -ENFILE) { - /* --- -1.7.3.5 - diff --git a/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch b/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch deleted file mode 100644 index 219494200..000000000 --- a/testing/libpcap/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch +++ /dev/null @@ -1,159 +0,0 @@ -From 9545ff8e2670db02652f9cf781aafdd6bac58ac4 Mon Sep 17 00:00:00 2001 -From: Guy Harris -Date: Sun, 14 Nov 2010 13:48:19 -0800 -Subject: [PATCH] Libnl 2.x returns its own error codes, not errnos; handle that. - -While we're at it, don't special-case ENFILE for "delete monitor device" -operations; that's not like "add monitor device", where we want to drive -on if a device with that name already exists. ---- - pcap-linux.c | 76 ++++++++++++++++++++++++++-------------------------------- - 1 files changed, 34 insertions(+), 42 deletions(-) - -diff --git a/pcap-linux.c b/pcap-linux.c -index deabbc4..5d291e9 100644 ---- a/pcap-linux.c -+++ b/pcap-linux.c -@@ -527,7 +527,9 @@ get_mac80211_phydev(pcap_t *handle, const char *device, char *phydev_path, - return 1; - } - --#ifndef HAVE_LIBNL_2_x -+#ifdef HAVE_LIBNL_2_x -+#define get_nl_errmsg nl_geterror -+#else - /* libnl 2.x compatibility code */ - - #define nl_sock nl_handle -@@ -544,6 +546,8 @@ nl_socket_free(struct nl_handle *h) - nl_handle_destroy(h); - } - -+#define get_nl_errmsg strerror -+ - static inline int - __genl_ctrl_alloc_cache(struct nl_handle *h, struct nl_cache **cache) - { -@@ -584,7 +588,7 @@ nl80211_init(pcap_t *handle, struct nl80211_state *state, const char *device) - if (err < 0) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, - "%s: failed to allocate generic netlink cache: %s", -- device, strerror(-err)); -+ device, get_nl_errmsg(-err)); - goto out_handle_destroy; - } - -@@ -639,10 +643,17 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - - err = nl_send_auto_complete(state->nl_sock, msg); - if (err < 0) { -+#ifdef HAVE_LIBNL_2_x -+ if (err == -NLE_FAILURE) { -+#else - if (err == -ENFILE) { -+#endif - /* - * Device not available; our caller should just -- * keep trying. -+ * keep trying. (libnl 2.x maps ENFILE to -+ * NLE_FAILURE; it can also map other errors -+ * to that, but there's not much we can do -+ * about that.) - */ - nlmsg_free(msg); - return 0; -@@ -653,17 +664,24 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - */ - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, - "%s: nl_send_auto_complete failed adding %s interface: %s", -- device, mondevice, strerror(-err)); -+ device, mondevice, get_nl_errmsg(-err)); - nlmsg_free(msg); - return PCAP_ERROR; - } - } - err = nl_wait_for_ack(state->nl_sock); - if (err < 0) { -+#ifdef HAVE_LIBNL_2_x -+ if (err == -NLE_FAILURE) { -+#else - if (err == -ENFILE) { -+#endif - /* - * Device not available; our caller should just -- * keep trying. -+ * keep trying. (libnl 2.x maps ENFILE to -+ * NLE_FAILURE; it can also map other errors -+ * to that, but there's not much we can do -+ * about that.) - */ - nlmsg_free(msg); - return 0; -@@ -674,7 +692,7 @@ add_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - */ - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, - "%s: nl_wait_for_ack failed adding %s interface: %s", -- device, mondevice, strerror(-err)); -+ device, mondevice, get_nl_errmsg(-err)); - nlmsg_free(msg); - return PCAP_ERROR; - } -@@ -719,45 +737,19 @@ del_mon_if(pcap_t *handle, int sock_fd, struct nl80211_state *state, - - err = nl_send_auto_complete(state->nl_sock, msg); - if (err < 0) { -- if (err == -ENFILE) { -- /* -- * Device not available; our caller should just -- * keep trying. -- */ -- nlmsg_free(msg); -- return 0; -- } else { -- /* -- * Real failure, not just "that device is not -- * available. -- */ -- snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, -- "%s: nl_send_auto_complete failed deleting %s interface: %s", -- device, mondevice, strerror(-err)); -- nlmsg_free(msg); -- return PCAP_ERROR; -- } -+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, -+ "%s: nl_send_auto_complete failed deleting %s interface: %s", -+ device, mondevice, get_nl_errmsg(-err)); -+ nlmsg_free(msg); -+ return PCAP_ERROR; - } - err = nl_wait_for_ack(state->nl_sock); - if (err < 0) { -- if (err == -ENFILE) { -- /* -- * Device not available; our caller should just -- * keep trying. -- */ -- nlmsg_free(msg); -- return 0; -- } else { -- /* -- * Real failure, not just "that device is not -- * available. -- */ -- snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, -- "%s: nl_wait_for_ack failed adding %s interface: %s", -- device, mondevice, strerror(-err)); -- nlmsg_free(msg); -- return PCAP_ERROR; -- } -+ snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, -+ "%s: nl_wait_for_ack failed adding %s interface: %s", -+ device, mondevice, get_nl_errmsg(-err)); -+ nlmsg_free(msg); -+ return PCAP_ERROR; - } - - /* --- -1.7.3.5 - diff --git a/testing/libpcap/PKGBUILD b/testing/libpcap/PKGBUILD deleted file mode 100644 index ee36e3354..000000000 --- a/testing/libpcap/PKGBUILD +++ /dev/null @@ -1,41 +0,0 @@ -# $Id: PKGBUILD 141970 2011-11-03 18:57:47Z thomas $ -# Maintainer: Thomas Bächler - -pkgname=libpcap -pkgver=1.1.1 -pkgrel=4 -pkgdesc="A system-independent interface for user-level packet capture" -arch=('i686' 'x86_64') -url="http://www.tcpdump.org/" -license=('BSD') -depends=('glibc' 'libnl' 'sh') -makedepends=('flex') -source=(http://www.tcpdump.org/release/libpcap-${pkgver}.tar.gz) - #Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch - #Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch) -sha256sums=('508cca15547e55d1318498b838456a21770c450beb2dc7d7d4a96d90816e5a85') - #'194aa268a3397be3ba406b7102dbdbc14fc16c6e4b535d0a0fab6b04d414563a' - #'f1f31c3e2b064f4c9d0e643e8ed1874a65ec17f770362f8ffa3b3f9ee9dc71bb') -build() { - cd ${srcdir}/${pkgname}-${pkgver} - #patch -p1 -i "${srcdir}"/Add-support-for-libnl-2.x-adapted-from-a-newer-versi.patch - #patch -p1 -i "${srcdir}"/Libnl-2.x-returns-its-own-error-codes-not-errnos-han.patch - ./configure --prefix=/usr --enable-ipv6 - make -} - -package() { - cd ${srcdir}/${pkgname}-${pkgver} - install -d -m755 ${pkgdir}/usr/bin - make DESTDIR=${pkgdir} install - # remove static library - rm -rf ${pkgdir}/usr/lib/libpcap.a - - # backwards compatibility, programs often look for net/bpf.h - mkdir -p ${pkgdir}/usr/include/net - cd ${pkgdir}/usr/include/net - ln -s ../pcap-bpf.h bpf.h - - #install the license - install -D -m644 ${srcdir}/$pkgname-$pkgver/LICENSE ${pkgdir}/usr/share/licenses/$pkgname/LICENSE -} -- cgit v1.2.3-54-g00ecf