diff options
-rw-r--r-- | main/libpcap/APKBUILD | 30 | ||||
-rw-r--r-- | main/libpcap/libpcap-1.0.0-LDFLAGS.patch | 13 | ||||
-rw-r--r-- | main/libpcap/libpcap-any.patch | 157 |
3 files changed, 16 insertions, 184 deletions
diff --git a/main/libpcap/APKBUILD b/main/libpcap/APKBUILD index 85a946229..4fc54bbcb 100644 --- a/main/libpcap/APKBUILD +++ b/main/libpcap/APKBUILD @@ -1,34 +1,36 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=libpcap -pkgver=1.0.0 +pkgver=1.1.1 _sover=1.0.0 -pkgrel=3 +pkgrel=0 pkgdesc="A system-independent interface for user-level packet capture" url="http://www.tcpdump.org/" license="BSD" depends= makedepends="bison flex" source="http://www.tcpdump.org/release/$pkgname-$pkgver.tar.gz - $pkgname-1.0.0-LDFLAGS.patch - $pkgname-any.patch" + " subpackages="$pkgname-doc $pkgname-dev" -build () -{ - cd ${startdir}/src/${pkgname}-${pkgver} - for i in ../*.patch; do +_builddir="$srcdir"/$pkgname-$pkgver +prepare() { + cd "$_builddir" + for i in "$srcdir"/*.patch; do + [ -r "$i" ] || continue msg "Applying $i..." patch -p1 -i $i || return 1 done +} +build() { + cd "$_builddir" ./configure --prefix=/usr --enable-ipv6 - make all shared || return 1 +} + +package() { + cd "$_builddir" mkdir -p "$pkgdir/usr/bin" make -j1 DESTDIR="$pkgdir" install install-shared - ln -s libpcap.so.$_sover "$pkgdir"/usr/lib/libpcap.so.1 - ln -s libpcap.so.$_sover "$pkgdir"/usr/lib/libpcap.so } -md5sums="9ad1358c5dec48456405eac197a46d3d libpcap-1.0.0.tar.gz -2bf7e986980c6e5d99758ba55b48d706 libpcap-1.0.0-LDFLAGS.patch -1e6b01c4f283b497e81e137c3f35e744 libpcap-any.patch" +md5sums="1bca27d206970badae248cfa471bbb47 libpcap-1.1.1.tar.gz" diff --git a/main/libpcap/libpcap-1.0.0-LDFLAGS.patch b/main/libpcap/libpcap-1.0.0-LDFLAGS.patch deleted file mode 100644 index b2fe8d6fc..000000000 --- a/main/libpcap/libpcap-1.0.0-LDFLAGS.patch +++ /dev/null @@ -1,13 +0,0 @@ -=== modified file 'Makefile.in' ---- a/Makefile.in 2008-11-04 18:53:20 +0000 -+++ b/Makefile.in 2008-11-04 18:53:49 +0000 -@@ -328,7 +328,7 @@ - # - libpcap.so: $(OBJ) - @rm -f $@ -- $(CC) -shared -Wl,-soname,$@.1 -o $@.`cat $(srcdir)/VERSION` $(OBJ) $(DAGLIBS) -+ $(CC) -shared $(LDFLAGS) -Wl,-soname,$@.1 -o $@.`cat $(srcdir)/VERSION` $(OBJ) $(DAGLIBS) - - # - # The following rule succeeds, but the result is untested. - diff --git a/main/libpcap/libpcap-any.patch b/main/libpcap/libpcap-any.patch deleted file mode 100644 index 7754513b8..000000000 --- a/main/libpcap/libpcap-any.patch +++ /dev/null @@ -1,157 +0,0 @@ -commit 8fa17a5a554aaeb85d3ec4118b45a31f1efd6808 -Author: guy <guy> -Date: Wed Nov 19 08:20:39 2008 +0000 - - Fix the handling of the "any" device, including making it reject - attempts to open it in monitor mode. - -diff --git a/pcap-linux.c b/pcap-linux.c -index 2a92d30..b18c4d2 100644 ---- a/pcap-linux.c -+++ b/pcap-linux.c -@@ -297,6 +297,12 @@ pcap_create(const char *device, char *ebuf) - { - pcap_t *handle; - -+ /* -+ * A null device name is equivalent to the "any" device. -+ */ -+ if (device == NULL) -+ device = "any"; -+ - #ifdef HAVE_DAG_API - if (strstr(device, "dag")) { - return dag_create(device, ebuf); -@@ -338,10 +344,9 @@ pcap_can_set_rfmon_linux(pcap_t *p) - struct iwreq ireq; - #endif - -- if (p->opt.source == NULL) { -+ if (strcmp(p->opt.source, "any") == 0) { - /* -- * This is equivalent to the "any" device, and we don't -- * support monitor mode on it. -+ * Monitor mode makes no sense on the "any" device. - */ - return 0; - } -@@ -518,12 +523,11 @@ pcap_activate_linux(pcap_t *handle) - handle->stats_op = pcap_stats_linux; - - /* -- * NULL and "any" are special devices which give us the hint to -- * monitor all devices. -+ * The "any" device is a special device which causes us not -+ * to bind to a particular device and thus to look at all -+ * devices. - */ -- if (!device || strcmp(device, "any") == 0) { -- device = NULL; -- handle->md.device = strdup("any"); -+ if (strcmp(device, "any") == 0) { - if (handle->opt.promisc) { - handle->opt.promisc = 0; - /* Just a warning. */ -@@ -531,10 +535,9 @@ pcap_activate_linux(pcap_t *handle) - "Promiscuous mode not supported on the \"any\" device"); - status = PCAP_WARNING_PROMISC_NOTSUP; - } -+ } - -- } else -- handle->md.device = strdup(device); -- -+ handle->md.device = strdup(device); - if (handle->md.device == NULL) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "strdup: %s", - pcap_strerror(errno) ); -@@ -1657,19 +1660,21 @@ static int - activate_new(pcap_t *handle) - { - #ifdef HAVE_PF_PACKET_SOCKETS -+ const char *device = handle->opt.source; -+ int is_any_device = (strcmp(device, "any") == 0); - int sock_fd = -1, arptype, val; - int err = 0; - struct packet_mreq mr; -- const char* device = handle->opt.source; - - /* -- * Open a socket with protocol family packet. If a device is -- * given we try to open it in raw mode otherwise we use -- * the cooked interface. -+ * Open a socket with protocol family packet. If the -+ * "any" device was specified, we open a SOCK_DGRAM -+ * socket for the cooked interface, otherwise we first -+ * try a SOCK_RAW socket for the raw interface. - */ -- sock_fd = device ? -- socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) -- : socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)); -+ sock_fd = is_any_device ? -+ socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)) : -+ socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); - - if (sock_fd == -1) { - snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "socket: %s", -@@ -1704,7 +1709,7 @@ activate_new(pcap_t *handle) - * to cooked mode if we have an unknown interface type - * or a type we know doesn't work well in raw mode. - */ -- if (device) { -+ if (!is_any_device) { - /* Assume for now we don't need cooked mode. */ - handle->md.cooked = 0; - -@@ -1819,15 +1824,23 @@ activate_new(pcap_t *handle) - } - } else { - /* -- * This is cooked mode. -+ * The "any" device. -+ */ -+ if (handle->opt.rfmon) { -+ /* -+ * It doesn't support monitor mode. -+ */ -+ return PCAP_ERROR_RFMON_NOTSUP; -+ } -+ -+ /* -+ * It uses cooked mode. - */ - handle->md.cooked = 1; - handle->linktype = DLT_LINUX_SLL; - - /* - * We're not bound to a device. -- * XXX - true? Or true only if we're using -- * the "any" device? - * For now, we're using this as an indication - * that we can't transmit; stop doing that only - * if we figure out how to transmit in cooked -@@ -1852,10 +1865,13 @@ activate_new(pcap_t *handle) - - /* - * Hmm, how can we set promiscuous mode on all interfaces? -- * I am not sure if that is possible at all. -+ * I am not sure if that is possible at all. For now, we -+ * silently ignore attempts to turn promiscuous mode on -+ * for the "any" device (so you don't have to explicitly -+ * disable it in programs such as tcpdump). - */ - -- if (device && handle->opt.promisc) { -+ if (!is_any_device && handle->opt.promisc) { - memset(&mr, 0, sizeof(mr)); - mr.mr_ifindex = handle->md.ifindex; - mr.mr_type = PACKET_MR_PROMISC; -@@ -3118,7 +3134,7 @@ activate_old(pcap_t *handle) - - /* Bind to the given device */ - -- if (!device) { -+ if (strcmp(device, "any") == 0) { - strncpy(handle->errbuf, "pcap_activate: The \"any\" device isn't supported on 2.0[.x]-kernel systems", - PCAP_ERRBUF_SIZE); - return PCAP_ERROR; |