libs/libpcap: update to 1.8.1
authorp-wassi <p.wassi@gmx.at>
Sat, 10 Dec 2016 09:56:22 +0000 (10:56 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 14 Dec 2016 11:13:13 +0000 (12:13 +0100)
Update libpcap to upstream release 1.8.1
Change the name from libpcap.so.1.3 to libpcap.so.1
Remove parts of patch 201 which moved code among src files.
Import patch 204 from Debian to update the USB path.

Signed-off-by: Paul Wassi <p.wassi@gmx.at>
Signed-off-by: Felix Fietkau <nbd@nbd.name> [fix parallel build bug]
package/libs/libpcap/Makefile
package/libs/libpcap/patches/100-debian_shared_lib.patch
package/libs/libpcap/patches/102-makefile_disable_manpages.patch
package/libs/libpcap/patches/103-makefile_flex_workaround.patch
package/libs/libpcap/patches/201-space_optimization.patch
package/libs/libpcap/patches/202-protocol_api.patch
package/libs/libpcap/patches/203-undef_iw_mode_monitor.patch
package/libs/libpcap/patches/204-usb-bus-path.patch [new file with mode: 0644]

index 08fab24fdee546ac2932671377b5c51b23ba7cef..f9f527b596e651b6395ce01288f2204def8c020c 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libpcap
-PKG_VERSION:=1.7.4
+PKG_VERSION:=1.8.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=http://www.tcpdump.org/release/
-PKG_MD5SUM:=b2e13142bbaba857ab1c6894aedaf547
+PKG_MD5SUM:=3d48f9cd171ff12b0efd9134b52f1447
 PKG_FIXUP:=patch-libtool
 
 PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
index 9ed6793f94a0add89ec17c90f0ec168c786103c6..59d15e66024fdf0074c438f5c2d35902c8f967f6 100644 (file)
@@ -3,13 +3,12 @@ build a shared library.
 
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -38,6 +38,14 @@ mandir = @mandir@
+@@ -38,6 +38,13 @@ mandir = @mandir@
  srcdir = @srcdir@
  VPATH = @srcdir@
  
 +# some defines for shared library compilation
-+MAJ=1.3
-+LIBVERSION=$(MAJ).0
++LIBVERSION=1
 +LIBNAME=pcap
 +LIBRARY=lib$(LIBNAME).a
 +SOLIBRARY=lib$(LIBNAME).so
@@ -18,30 +17,30 @@ build a shared library.
  #
  # You shouldn't need to edit anything below.
  #
-@@ -62,7 +70,8 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@
+@@ -62,7 +69,8 @@ DEPENDENCY_CFLAG = @DEPENDENCY_CFLAG@
  PROG=libpcap
  
  # Standard CFLAGS
 -FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS)
 +FULL_CFLAGS = $(CCOPT) $(INCLS) $(DEFS) $(CFLAGS) $(CPPFLAGS)
-+CFLAGS_SHARED = -shared -Wl,-soname,$(SOLIBRARY).$(MAJ)
++CFLAGS_SHARED = -shared -Wl,-soname,$(SHAREDLIB)
  
  INSTALL = @INSTALL@
  INSTALL_PROGRAM = @INSTALL_PROGRAM@
-@@ -82,7 +91,11 @@ YACC = @V_YACC@
+@@ -77,7 +85,11 @@ YACC = @YACC@
  # problem if you don't own the file but can write to the directory.
  .c.o:
        @rm -f $@
 -      $(CC) $(FULL_CFLAGS) -c $(srcdir)/$*.c
 +      $(CC) $(FULL_CFLAGS) -c -o $@ $(srcdir)/$*.c
 +
-+%_pic.o: %.c
++%_pic.o: %.c %.o
 +      @rm -f $@
 +      $(CC) -fPIC $(FULL_CFLAGS) -c -o $@ $(srcdir)/$*.c
  
- PSRC =        pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @BT_MONITOR_SRC@ @CAN_SRC@ @NETFILTER_SRC@ @CANUSB_SRC@ @DBUS_SRC@
- FSRC =  fad-@V_FINDALLDEVS@.c
-@@ -98,6 +111,7 @@ SRC =       $(PSRC) $(FSRC) $(CSRC) $(SSRC) $(
+ PSRC =        pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @BT_MONITOR_SRC@ @NETFILTER_SRC@ @DBUS_SRC@
+ FSRC =  @V_FINDALLDEVS@
+@@ -93,6 +105,7 @@ SRC =       $(PSRC) $(FSRC) $(CSRC) $(SSRC) $(
  # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot
  # hack the extra indirection
  OBJ = $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS)
@@ -49,7 +48,7 @@ build a shared library.
  PUBHDR = \
        pcap.h \
        pcap-bpf.h \
-@@ -153,7 +167,7 @@ TAGFILES = \
+@@ -157,7 +170,7 @@ TAGFILES = \
  
  CLEANFILES = $(OBJ) libpcap.* $(TESTS) \
        $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \
@@ -58,7 +57,7 @@ build a shared library.
  
  MAN1 = pcap-config.1
  
-@@ -365,7 +379,7 @@ libpcap.a: $(OBJ)
+@@ -365,7 +378,7 @@ libpcap.a: $(OBJ)
        $(AR) rc $@ $(OBJ) $(ADDLARCHIVEOBJS)
        $(RANLIB) $@
  
@@ -67,33 +66,32 @@ build a shared library.
  
  libpcap.so: $(OBJ)
        @rm -f $@
-@@ -443,6 +457,13 @@ libpcap.shareda: $(OBJ)
+@@ -443,6 +456,12 @@ libpcap.shareda: $(OBJ)
  #
  libpcap.none:
  
 +$(SHAREDLIB): $(OBJ_PIC)
 +      -@rm -f $@
-+      -@rm -f $(SOLIBRARY) $(SOLIBRARY).$(MAJ)
++      -@rm -f $(SOLIBRARY)
 +      $(CC) $(CFLAGS_SHARED) $(LDFLAGS) -o $(SHAREDLIB) $(OBJ_PIC) -lc $(LIBS)
-+      ln -s $(SHAREDLIB) $(SOLIBRARY).$(MAJ)
-+      ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY)
++      ln -s $(SHAREDLIB) $(SOLIBRARY)
 +
  scanner.c: $(srcdir)/scanner.l
-       @rm -f $@ $@.bottom
-       $(srcdir)/runlex.sh $(LEX) -o$@ $<
-@@ -453,6 +474,9 @@ scanner.c: $(srcdir)/scanner.l
- scanner.o: scanner.c tokdefs.h
+       $(LEX) -P pcap_ --header-file=scanner.h --nounput -o scanner.c $<
+ scanner.h: scanner.c
+@@ -455,6 +474,9 @@ scanner.h: scanner.c
+ scanner.o: scanner.c grammar.h
        $(CC) $(FULL_CFLAGS) -c scanner.c
  
-+scanner_pic.o: scanner.c tokdefs.h
++scanner_pic.o: scanner.c grammar.h
 +      $(CC) -fPIC $(FULL_CFLAGS) -o $@ -c scanner.c
 +
- pcap.o: version.h
+ pcap.o: pcap_version.h
  
- tokdefs.h: grammar.c
-@@ -466,9 +490,16 @@ grammar.o: grammar.c
-       @rm -f $@
-       $(CC) $(FULL_CFLAGS) -Dyylval=pcap_lval -c grammar.c
+ grammar.c: $(srcdir)/grammar.y
+@@ -472,9 +494,16 @@ grammar.o: grammar.c
+ gencode.o: $(srcdir)/gencode.c grammar.h scanner.h
+       $(CC) $(FULL_CFLAGS) -c $(srcdir)/gencode.c
  
 +grammar_pic.o: grammar.c
 +      @rm -f $@
@@ -108,7 +106,7 @@ build a shared library.
  snprintf.o: $(srcdir)/missing/snprintf.c
        $(CC) $(FULL_CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c
  
-@@ -506,6 +537,9 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt
+@@ -501,6 +530,9 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt
  bpf_filter.o: bpf_filter.c
        $(CC) $(FULL_CFLAGS) -c bpf_filter.c
  
@@ -118,7 +116,7 @@ build a shared library.
  #
  # Generate the pcap-config script.
  #
-@@ -622,14 +656,12 @@ install: install-shared install-archive
+@@ -623,14 +655,11 @@ install: install-shared install-archive
                    $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done
  
  install-shared: install-shared-$(DYEXT)
@@ -132,14 +130,13 @@ build a shared library.
 -      ln -sf libpcap.so.$$VER $(DESTDIR)$(libdir)/libpcap.so.$$MAJOR_VER; \
 -      ln -sf libpcap.so.$$MAJOR_VER $(DESTDIR)$(libdir)/libpcap.so
 +      $(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/
-+      ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ)
-+      ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY)
++      ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY)
  install-shared-dylib: libpcap.dylib
        [ -d $(DESTDIR)$(libdir) ] || \
            (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir))
 --- a/aclocal.m4
 +++ b/aclocal.m4
-@@ -438,7 +438,7 @@ AC_DEFUN(AC_LBL_SHLIBS_INIT,
+@@ -470,7 +470,7 @@ AC_DEFUN(AC_LBL_SHLIBS_INIT,
                        esac
                        ;;
                    esac
@@ -148,7 +145,7 @@ build a shared library.
                    V_SONAME_OPT="-Wl,-soname,"
                    V_RPATH_OPT="-Wl,-rpath,"
                    ;;
-@@ -501,7 +501,7 @@ AC_DEFUN(AC_LBL_SHLIBS_INIT,
+@@ -533,7 +533,7 @@ AC_DEFUN(AC_LBL_SHLIBS_INIT,
                    #
                    # "cc" is GCC.
                    #
index 59b903c4139ed60946cf2393d9d182271a8d5ad7..c2326b95be984147829796f05b9c9bffa4d2358a 100644 (file)
@@ -1,6 +1,6 @@
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -590,70 +590,12 @@ install: install-shared install-archive
+@@ -589,70 +589,12 @@ install: install-shared install-archive
            (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir))
        [ -d $(DESTDIR)$(includedir)/pcap ] || \
            (mkdir -p $(DESTDIR)$(includedir)/pcap; chmod 755 $(DESTDIR)$(includedir)/pcap)
@@ -70,4 +70,4 @@
 -                  $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done
  
  install-shared: install-shared-$(DYEXT)
- install-shared-so: libpcap.so
+ install-shared-so: $(SHAREDLIB)
index a7ab9ad054bac59c87312973bc436b11923fe9b1..5eb6d3fd42a502185c586f35293418ec8953a74b 100644 (file)
@@ -3,12 +3,12 @@
 
 --- a/Makefile.in
 +++ b/Makefile.in
-@@ -57,7 +57,7 @@ LN_S = @LN_S@
+@@ -56,7 +56,7 @@ LN_S = @LN_S@
  MKDEP = @MKDEP@
  CCOPT = @V_CCOPT@
  INCLS = -I. @V_INCLS@
--DEFS = @DEFS@ @V_DEFS@
-+DEFS = -D_BSD_SOURCE @DEFS@ @V_DEFS@
+-DEFS = -DBUILDING_PCAP @DEFS@ @V_DEFS@
++DEFS = -DBUILDING_PCAP -D_BSD_SOURCE @DEFS@ @V_DEFS@
  ADDLOBJS = @ADDLOBJS@
  ADDLARCHIVEOBJS = @ADDLARCHIVEOBJS@
  LIBS = @LIBS@
index f331a18357a185180ba0b3062c79b8f842ebea82..b0a91bb0ef9a547f1a59b56e3f7ce960684dd37f 100644 (file)
@@ -1,140 +1,7 @@
---- a/gencode.c
-+++ b/gencode.c
-@@ -543,20 +543,6 @@ pcap_compile_nopcap(int snaplen_arg, int
- }
- /*
-- * Clean up a "struct bpf_program" by freeing all the memory allocated
-- * in it.
-- */
--void
--pcap_freecode(struct bpf_program *program)
--{
--      program->bf_len = 0;
--      if (program->bf_insns != NULL) {
--              free((char *)program->bf_insns);
--              program->bf_insns = NULL;
--      }
--}
--
--/*
-  * Backpatch the blocks in 'list' to 'target'.  The 'sense' field indicates
-  * which of the jt and jf fields has been resolved and which is a pointer
-  * back to another unresolved block (or nil).  At least one of the fields
---- a/pcap.c
-+++ b/pcap.c
-@@ -1087,6 +1087,59 @@ static const u_char charmap[] = {
-       (u_char)'\374', (u_char)'\375', (u_char)'\376', (u_char)'\377',
- };
-+/*
-+ * Clean up a "struct bpf_program" by freeing all the memory allocated
-+ * in it.
-+ */
-+void
-+pcap_freecode(struct bpf_program *program)
-+{
-+      program->bf_len = 0;
-+      if (program->bf_insns != NULL) {
-+              free((char *)program->bf_insns);
-+              program->bf_insns = NULL;
-+      }
-+}
-+
-+/*
-+ * Make a copy of a BPF program and put it in the "fcode" member of
-+ * a "pcap_t".
-+ *
-+ * If we fail to allocate memory for the copy, fill in the "errbuf"
-+ * member of the "pcap_t" with an error message, and return -1;
-+ * otherwise, return 0.
-+ */
-+int
-+install_bpf_program(pcap_t *p, struct bpf_program *fp)
-+{
-+      size_t prog_size;
-+
-+      /*
-+       * Validate the program.
-+       */
-+      if (!bpf_validate(fp->bf_insns, fp->bf_len)) {
-+              snprintf(p->errbuf, sizeof(p->errbuf),
-+                      "BPF program is not valid");
-+              return (-1);
-+      }
-+
-+      /*
-+       * Free up any already installed program.
-+       */
-+      pcap_freecode(&p->fcode);
-+
-+      prog_size = sizeof(*fp->bf_insns) * fp->bf_len;
-+      p->fcode.bf_len = fp->bf_len;
-+      p->fcode.bf_insns = (struct bpf_insn *)malloc(prog_size);
-+      if (p->fcode.bf_insns == NULL) {
-+              snprintf(p->errbuf, sizeof(p->errbuf),
-+                       "malloc: %s", pcap_strerror(errno));
-+              return (-1);
-+      }
-+      memcpy(p->fcode.bf_insns, fp->bf_insns, prog_size);
-+      return (0);
-+}
-+
- int
- pcap_strcasecmp(const char *s1, const char *s2)
- {
---- a/optimize.c
-+++ b/optimize.c
-@@ -2203,45 +2203,6 @@ icode_to_fcode(struct block *root, u_int
-       return fp;
- }
--/*
-- * Make a copy of a BPF program and put it in the "fcode" member of
-- * a "pcap_t".
-- *
-- * If we fail to allocate memory for the copy, fill in the "errbuf"
-- * member of the "pcap_t" with an error message, and return -1;
-- * otherwise, return 0.
-- */
--int
--install_bpf_program(pcap_t *p, struct bpf_program *fp)
--{
--      size_t prog_size;
--
--      /*
--       * Validate the program.
--       */
--      if (!bpf_validate(fp->bf_insns, fp->bf_len)) {
--              snprintf(p->errbuf, sizeof(p->errbuf),
--                      "BPF program is not valid");
--              return (-1);
--      }
--
--      /*
--       * Free up any already installed program.
--       */
--      pcap_freecode(&p->fcode);
--
--      prog_size = sizeof(*fp->bf_insns) * fp->bf_len;
--      p->fcode.bf_len = fp->bf_len;
--      p->fcode.bf_insns = (struct bpf_insn *)malloc(prog_size);
--      if (p->fcode.bf_insns == NULL) {
--              snprintf(p->errbuf, sizeof(p->errbuf),
--                       "malloc: %s", pcap_strerror(errno));
--              return (-1);
--      }
--      memcpy(p->fcode.bf_insns, fp->bf_insns, prog_size);
--      return (0);
--}
--
- #ifdef BDEBUG
- static void
- dot_dump_node(struct block *block, struct bpf_program *prog, FILE *out)
 --- a/pcap-common.c
 +++ b/pcap-common.c
-@@ -1372,14 +1372,23 @@ swap_pseudo_headers(int linktype, struct
-       switch (linktype) {
+@@ -1447,14 +1447,23 @@ swap_pseudo_headers(int linktype, struct
+               break;
  
        case DLT_USB_LINUX:
 +#ifndef PCAP_SUPPORT_USB
index d0c32a5e2246fe9e10777a826a9e01986b53b966..711dc5ce9903d5b49cc2ee749b6037221380c273 100644 (file)
@@ -1,6 +1,8 @@
+This API extension is used by ead (Emergency Access Daemon)
+
 --- a/pcap-linux.c
 +++ b/pcap-linux.c
-@@ -414,7 +414,7 @@ static int iface_get_id(int fd, const ch
+@@ -425,7 +425,7 @@ static int iface_get_id(int fd, const ch
  static int    iface_get_mtu(int fd, const char *device, char *ebuf);
  static int    iface_get_arptype(int fd, const char *device, char *ebuf);
  #ifdef HAVE_PF_PACKET_SOCKETS
  #ifdef IW_MODE_MONITOR
  static int    has_wext(int sock_fd, const char *device, char *ebuf);
  #endif /* IW_MODE_MONITOR */
-@@ -1028,7 +1028,7 @@ pcap_can_set_rfmon_linux(pcap_t *handle)
+@@ -1059,7 +1059,7 @@ pcap_can_set_rfmon_linux(pcap_t *handle)
         * (We assume that if we have Wireless Extensions support
         * we also have PF_PACKET support.)
         */
 -      sock_fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
 +      sock_fd = socket(PF_PACKET, SOCK_RAW, p->opt.proto);
        if (sock_fd == -1) {
-               (void)snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+               (void)pcap_snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
                    "socket: %s", pcap_strerror(errno));
-@@ -1337,6 +1337,9 @@ pcap_activate_linux(pcap_t *handle)
+@@ -1456,6 +1456,9 @@ pcap_activate_linux(pcap_t *handle)
        handle->read_op = pcap_read_linux;
        handle->stats_op = pcap_stats_linux;
  
@@ -28,7 +30,7 @@
        /*
         * The "any" device is a special device which causes us not
         * to bind to a particular device and thus to look at all
-@@ -3160,8 +3163,8 @@ activate_new(pcap_t *handle)
+@@ -3335,8 +3338,8 @@ activate_new(pcap_t *handle)
         * try a SOCK_RAW socket for the raw interface.
         */
        sock_fd = is_any_device ?
  
        if (sock_fd == -1) {
                if (errno == EINVAL || errno == EAFNOSUPPORT) {
-@@ -3279,7 +3282,7 @@ activate_new(pcap_t *handle)
+@@ -3454,7 +3457,7 @@ activate_new(pcap_t *handle)
                                return PCAP_ERROR;
                        }
                        sock_fd = socket(PF_PACKET, SOCK_DGRAM,
 -                          htons(ETH_P_ALL));
 +                          handle->opt.proto);
                        if (sock_fd == -1) {
-                               snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+                               pcap_snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
                                    "socket: %s", pcap_strerror(errno));
-@@ -3343,7 +3346,7 @@ activate_new(pcap_t *handle)
+@@ -3518,7 +3521,7 @@ activate_new(pcap_t *handle)
                }
  
                if ((err = iface_bind(sock_fd, handlep->ifindex,
@@ -57,7 +59,7 @@
                        close(sock_fd);
                        if (err < 0)
                                return err;
-@@ -5050,7 +5053,7 @@ iface_get_id(int fd, const char *device,
+@@ -5271,7 +5274,7 @@ iface_get_id(int fd, const char *device,
   *  or a PCAP_ERROR_ value on a hard error.
   */
  static int
@@ -66,7 +68,7 @@
  {
        struct sockaddr_ll      sll;
        int                     err;
-@@ -5059,7 +5062,7 @@ iface_bind(int fd, int ifindex, char *eb
+@@ -5280,7 +5283,7 @@ iface_bind(int fd, int ifindex, char *eb
        memset(&sll, 0, sizeof(sll));
        sll.sll_family          = AF_PACKET;
        sll.sll_ifindex         = ifindex;
  
        if (bind(fd, (struct sockaddr *) &sll, sizeof(sll)) == -1) {
                if (errno == ENETDOWN) {
-@@ -6049,7 +6052,7 @@ activate_old(pcap_t *handle)
+@@ -6325,7 +6328,7 @@ activate_old(pcap_t *handle)
  
        /* Open the socket */
  
 -      handle->fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_ALL));
 +      handle->fd = socket(PF_INET, SOCK_PACKET, handle->opt.proto);
        if (handle->fd == -1) {
-               snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
+               pcap_snprintf(handle->errbuf, PCAP_ERRBUF_SIZE,
                         "socket: %s", pcap_strerror(errno));
 --- a/pcap.c
 +++ b/pcap.c
-@@ -562,6 +562,7 @@ pcap_create_common(const char *source, c
+@@ -578,6 +578,7 @@ pcap_create_common(char *ebuf, size_t si
        p->opt.promisc = 0;
        p->opt.rfmon = 0;
        p->opt.immediate = 0;
@@ -94,7 +96,7 @@
        p->opt.tstamp_type = -1;        /* default to not setting time stamp type */
        p->opt.tstamp_precision = PCAP_TSTAMP_PRECISION_MICRO;
  
-@@ -725,6 +726,15 @@ pcap_get_tstamp_precision(pcap_t *p)
+@@ -771,6 +772,15 @@ pcap_get_tstamp_precision(pcap_t *p)
  }
  
  int
        int status;
 --- a/pcap/pcap.h
 +++ b/pcap/pcap.h
-@@ -66,6 +66,7 @@ extern "C" {
+@@ -68,6 +68,7 @@ extern "C" {
  #define PCAP_VERSION_MINOR 4
  
  #define PCAP_ERRBUF_SIZE 256
  
  /*
   * Compatibility for systems that have a bpf.h that
-@@ -283,6 +284,7 @@ int        pcap_set_timeout(pcap_t *, int);
int   pcap_set_tstamp_type(pcap_t *, int);
int   pcap_set_immediate_mode(pcap_t *, int);
int   pcap_set_buffer_size(pcap_t *, int);
-+int   pcap_set_protocol(pcap_t *, unsigned short);
int   pcap_set_tstamp_precision(pcap_t *, int);
int   pcap_get_tstamp_precision(pcap_t *);
int   pcap_activate(pcap_t *);
+@@ -287,6 +288,7 @@ PCAP_API int       pcap_set_timeout(pcap_t *,
PCAP_API int  pcap_set_tstamp_type(pcap_t *, int);
PCAP_API int  pcap_set_immediate_mode(pcap_t *, int);
PCAP_API int  pcap_set_buffer_size(pcap_t *, int);
++PCAP_API int  pcap_set_protocol(pcap_t *, unsigned short);
PCAP_API int  pcap_set_tstamp_precision(pcap_t *, int);
PCAP_API int  pcap_get_tstamp_precision(pcap_t *);
PCAP_API int  pcap_activate(pcap_t *);
 --- a/pcap-int.h
 +++ b/pcap-int.h
-@@ -109,6 +109,7 @@ struct pcap_opt {
-       char    *source;
+@@ -111,6 +111,7 @@ struct pcap_opt {
+       char    *device;
        int     timeout;        /* timeout for buffering */
-       int     buffer_size;
-+      int     proto;      /* protocol for packet socket (linux) */
+       u_int   buffer_size;
++      int     proto;          /* protocol for packet socket (linux) */
        int     promisc;
        int     rfmon;          /* monitor mode */
        int     immediate;      /* immediate mode - deliver packets as soon as they arrive */
index f847a5e7547ea5cf3f5e0b1fde96d194132b67ae..53dd50137b13ac81502bb9f8cb015e040b17fdf0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/pcap-linux.c
 +++ b/pcap-linux.c
-@@ -254,6 +254,8 @@
+@@ -263,6 +263,8 @@
  typedef int           socklen_t;
  #endif
  
diff --git a/package/libs/libpcap/patches/204-usb-bus-path.patch b/package/libs/libpcap/patches/204-usb-bus-path.patch
new file mode 100644 (file)
index 0000000..d29734f
--- /dev/null
@@ -0,0 +1,13 @@
+Fix USB bus path; /proc/bus/usb is deprecated.
+
+--- a/pcap-usb-linux.c
++++ b/pcap-usb-linux.c
+@@ -71,7 +71,7 @@
+ #define USB_TEXT_DIR_OLD "/sys/kernel/debug/usbmon"
+ #define USB_TEXT_DIR "/sys/kernel/debug/usb/usbmon"
+ #define SYS_USB_BUS_DIR "/sys/bus/usb/devices"
+-#define PROC_USB_BUS_DIR "/proc/bus/usb"
++#define PROC_USB_BUS_DIR "/dev/bus/usb"
+ #define USB_LINE_LEN 4096
+ #if __BYTE_ORDER == __LITTLE_ENDIAN