Changeset 15398


Ignore:
Timestamp:
2009-04-25T05:30:10+02:00 (9 years ago)
Author:
nbd
Message:

pcap: update to version 1.0.0, add extension for changing the desired protocol for the internal raw socket (useful for reducing the cpu overhead of capture)

Location:
trunk/package/libpcap
Files:
3 added
3 deleted
3 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/package/libpcap/Makefile

    r15245 r15398  
    99 
    1010PKG_NAME:=libpcap 
    11 PKG_VERSION:=0.9.8 
     11PKG_VERSION:=1.0.0 
    1212PKG_RELEASE:=1 
    1313 
    1414PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 
    1515PKG_SOURCE_URL:=http://www.tcpdump.org/release/ 
    16 PKG_MD5SUM:=5208f24d0328ee7c20b52c43eaa9aa0e 
     16PKG_MD5SUM:=9ad1358c5dec48456405eac197a46d3d 
    1717 
    1818include $(INCLUDE_DIR)/package.mk 
     
    3030endef 
    3131 
     32define Package/libpcap/config 
     33        config PCAP_HAS_USB 
     34                bool "Include USB support" 
     35                depends PACKAGE_libpcap 
     36                depends PACKAGE_kmod-usb-core 
     37                default n 
     38 
     39        config PCAP_HAS_BT 
     40                bool "Include bluetooth support" 
     41                depends PACKAGE_libpcap 
     42                depends PACKAGE_kmod-bluetooth 
     43                default n 
     44 
     45endef 
     46 
    3247TARGET_CFLAGS += \ 
    3348        -ffunction-sections -fdata-sections 
     
    3954        --enable-ipv6 \ 
    4055        --with-build-cc="$(HOSTCC)" \ 
    41         --with-pcap=linux 
     56        --with-pcap=linux \ 
     57        --without-septel \ 
     58        --without-dag 
    4259 
    4360define Build/Compile 
     61        rm -rf $(PKG_INSTALL_DIR) 
     62        $(if $(CONFIG_PCAP_HAS_USB),,$(SED) '/^#define PCAP_SUPPORT_USB/D' $(PKG_BUILD_DIR)/config.h) 
     63        $(if $(CONFIG_PCAP_HAS_USB),,$(SED) 's/pcap-usb-linux.c *//' $(PKG_BUILD_DIR)/Makefile) 
     64        $(if $(CONFIG_PCAP_HAS_BT),,$(SED) '/^#define PCAP_SUPPORT_BT/D' $(PKG_BUILD_DIR)/config.h) 
    4465        $(MAKE) -C $(PKG_BUILD_DIR) \ 
    4566                CCOPT="$(TARGET_CFLAGS) -I$(BUILD_DIR)/linux/include" \ 
     
    4970 
    5071define Build/InstallDev 
    51         mkdir -p $(1)/usr/include 
    52         $(CP)   $(PKG_INSTALL_DIR)/usr/include/pcap{,-bpf,-namedb}.h \ 
     72        mkdir -p $(1)/usr/include $(1)/usr/lib 
     73        $(CP) \ 
     74                $(PKG_INSTALL_DIR)/usr/include/pcap* \ 
    5375                $(1)/usr/include/ 
    54         mkdir -p $(1)/usr/lib 
    55         $(CP)   $(PKG_INSTALL_DIR)/usr/lib/libpcap.{a,so*} \ 
     76        $(CP) \ 
     77                $(PKG_INSTALL_DIR)/usr/lib/libpcap.{a,so*} \ 
    5678                $(1)/usr/lib/ 
    5779endef 
  • trunk/package/libpcap/patches/100-debian_shared_lib.patch

    r15397 r15398  
     1Debian-specific modifications to the upstream Makefile.in to 
     2build a shared library. 
     3--- 
     4 Makefile.in  |   45 ++++++++++++++++++++++++++++++++++++++++++--- 
     5 configure    |    2 +- 
     6 configure.in |    2 +- 
     7 3 files changed, 44 insertions(+), 5 deletions(-) 
     8 
    19--- a/Makefile.in 
    210+++ b/Makefile.in 
    3 @@ -37,6 +37,15 @@ 
     11@@ -40,6 +40,14 @@ mandir = @mandir@ 
    412 srcdir = @srcdir@ 
    513 VPATH = @srcdir@ 
    614  
    715+# some defines for shared library compilation 
    8 +MAJ=0.9 
    9 +MIN=8 
    10 +VERSION=$(MAJ).$(MIN) 
     16+MAJ=1.0 
     17+LIBVERSION=$(MAJ).0 
    1118+LIBNAME=pcap 
    1219+LIBRARY=lib$(LIBNAME).a 
    1320+SOLIBRARY=lib$(LIBNAME).so 
    14 +SHAREDLIB=$(SOLIBRARY).$(VERSION) 
     21+SHAREDLIB=$(SOLIBRARY).$(LIBVERSION) 
    1522+ 
    1623 # 
    1724 # You shouldn't need to edit anything below. 
    1825 # 
    19 @@ -52,6 +61,7 @@ 
     26@@ -56,6 +64,7 @@ PROG=libpcap 
    2027  
    2128 # Standard CFLAGS 
     
    2532 INSTALL = @INSTALL@ 
    2633 INSTALL_PROGRAM = @INSTALL_PROGRAM@ 
    27 @@ -72,7 +82,12 @@ 
     34@@ -75,7 +84,11 @@ YACC = @V_YACC@ 
     35 # problem if you don't own the file but can write to the directory. 
    2836 .c.o: 
    2937        @rm -f $@ 
    30         $(CC) $(CFLAGS) -c $(srcdir)/$*.c 
     38-       $(CC) $(CFLAGS) -c $(srcdir)/$*.c 
    3139+       $(CC) $(CFLAGS) -c -o $@ $(srcdir)/$*.c 
    32   
     40+ 
    3341+%_pic.o: %.c 
    3442+       @rm -f $@ 
    3543+       $(CC) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c 
    36 +        
    37  PSRC = pcap-@V_PCAP@.c 
     44  
     45 PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ 
    3846 FSRC =  fad-@V_FINDALLDEVS@.c 
    39  SSRC =  @SSRC@ 
    40 @@ -86,6 +101,7 @@ 
     47@@ -90,6 +103,7 @@ SRC =        $(PSRC) $(FSRC) $(CSRC) $(SSRC) $( 
    4148 # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot 
    4249 # hack the extra indirection 
    4350 OBJ =  $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS) 
    4451+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o) 
    45  HDR =  pcap.h pcap-int.h pcap-namedb.h pcap-nit.h pcap-pf.h \ 
    46         ethertype.h gencode.h gnuc.h 
    47  GENHDR = \ 
    48 @@ -97,15 +113,23 @@ 
     52 HDR = \ 
     53        acconfig.h \ 
     54        arcnet.h \ 
     55@@ -122,7 +136,8 @@ TAGHDR = \ 
    4956 TAGFILES = \ 
    5057        $(SRC) $(HDR) $(TAGHDR) 
    5158  
    5259-CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c 
    53 +CLEANFILES = $(OBJ) $(OBJ_PIC) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c libpcap.so* 
     60+CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c \ 
     61+       $(OBJ_PIC) libpcap.so* 
    5462  
    55 -all: libpcap.a 
    56 +all: libpcap.a $(SHAREDLIB) 
     63 MAN1 = pcap-config.1 
     64  
     65@@ -311,7 +326,7 @@ EXTRA_DIST = \ 
     66        Win32/Src/inet_net.c \ 
     67        Win32/Src/inet_pton.c 
     68  
     69-all: libpcap.a pcap-config 
     70+all: libpcap.a pcap-config $(SHAREDLIB) 
    5771  
    5872 libpcap.a: $(OBJ) 
    5973        @rm -f $@ 
    60         ar rc $@ $(OBJ) $(LIBS) 
    61         $(RANLIB) $@ 
     74@@ -344,6 +359,13 @@ libpcap.dylib: $(OBJ) 
     75                -compatibility_version 1 \ 
     76                -current_version `sed 's/[^0-9.].*$$//' $(srcdir)/VERSION` 
    6277  
    6378+$(SHAREDLIB): $(OBJ_PIC) 
     
    6883+       ln -s $(SOLIBRARY).$(MAJ) $(SOLIBRARY) 
    6984+ 
    70 +        
    71  shared: libpcap.$(DYEXT) 
    72   
    73  # 
    74 @@ -131,6 +155,10 @@ 
     85 scanner.c: $(srcdir)/scanner.l 
     86        @rm -f $@ 
     87        ./runlex.sh $(LEX) -o$@ $< 
     88@@ -351,6 +373,9 @@ scanner.c: $(srcdir)/scanner.l 
    7589 scanner.o: scanner.c tokdefs.h 
    7690        $(CC) $(CFLAGS) -c scanner.c 
     
    7993+       $(CC) -fPIC $(CFLAGS) -o $@ -c scanner.c 
    8094+ 
    81 + 
    8295 pcap.o: version.h 
    8396  
    8497 tokdefs.h: grammar.c 
    85 @@ -144,9 +172,16 @@ 
     98@@ -364,9 +389,17 @@ grammar.o: grammar.c 
    8699        @rm -f $@ 
    87100        $(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c 
     
    89102+grammar_pic.o: grammar.c 
    90103+       @rm -f $@ 
    91 +       $(CC) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c  
     104+       $(CC) -fPIC $(CFLAGS) -Dyylval=pcap_lval -o $@ -c grammar.c 
    92105+ 
    93106 version.o: version.c 
     
    97110+       $(CC) -fPIC $(CFLAGS) -c version.c -o $@ 
    98111+ 
     112+ 
    99113 snprintf.o: $(srcdir)/missing/snprintf.c 
    100114        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c 
    101115  
    102 @@ -172,10 +207,17 @@ 
     116@@ -392,6 +425,9 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt 
    103117 bpf_filter.o: bpf_filter.c 
    104118        $(CC) $(CFLAGS) -c bpf_filter.c 
     
    107121+       $(CC) -fPIC $(CFLAGS) -c bpf_filter.c -o $@ 
    108122+ 
    109 + 
    110  install: libpcap.a  
    111         [ -d $(DESTDIR)$(libdir) ] || \ 
     123 # 
     124 # Generate the pcap-config script. 
     125 # 
     126@@ -418,6 +454,9 @@ install: libpcap.a pcap-config 
    112127            (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) 
    113128        $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a 
     129        $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a 
    114130+       $(INSTALL_DATA) $(SHAREDLIB) $(DESTDIR)$(libdir)/ 
    115131+       ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ) 
    116132+       ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY) 
    117         $(RANLIB) $(DESTDIR)$(libdir)/libpcap.a 
    118133        [ -d $(DESTDIR)$(includedir) ] || \ 
    119134            (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir)) 
     135        [ -d $(DESTDIR)$(includedir)/pcap ] || \ 
     136--- a/configure 
     137+++ b/configure 
     138@@ -8658,7 +8658,7 @@ irix*) 
     139        ;; 
     140  
     141 linux*) 
     142-       V_CCOPT="$V_CCOPT -fPIC" 
     143+       V_CCOPT="$V_CCOPT" 
     144        ;; 
     145  
     146 osf*) 
     147--- a/configure.in 
     148+++ b/configure.in 
     149@@ -943,7 +943,7 @@ irix*) 
     150        ;; 
     151  
     152 linux*) 
     153-       V_CCOPT="$V_CCOPT -fPIC" 
     154+       V_CCOPT="$V_CCOPT" 
     155        ;; 
     156  
     157 osf*) 
  • trunk/package/libpcap/patches/103-flex_workaround.patch

    r11742 r15398  
    44--- a/Makefile.in 
    55+++ b/Makefile.in 
    6 @@ -53,7 +53,7 @@ 
     6@@ -55,7 +55,7 @@ SHAREDLIB=$(SOLIBRARY).$(LIBVERSION) 
    77 CC = @CC@ 
    88 CCOPT = @V_CCOPT@ 
     
    1212 LIBS = @V_LIBS@ 
    1313 DAGLIBS = @DAGLIBS@ 
    14  DYEXT = @DYEXT@ 
     14 DEPLIBS = @DEPLIBS@ 
  • trunk/package/libpcap/patches/105-space_optimization.patch

    r13686 r15398  
    11--- a/gencode.c 
    22+++ b/gencode.c 
    3 @@ -429,20 +429,6 @@ pcap_compile_nopcap(int snaplen_arg, int 
     3@@ -439,20 +439,6 @@ pcap_compile_nopcap(int snaplen_arg, int 
    44 } 
    55  
     
    2222  * which of the jt and jf fields has been resolved and which is a pointer 
    2323  * back to another unresolved block (or nil).  At least one of the fields 
     24--- a/pcap.c 
     25+++ b/pcap.c 
     26@@ -698,6 +698,59 @@ static const u_char charmap[] = { 
     27        (u_char)'\374', (u_char)'\375', (u_char)'\376', (u_char)'\377', 
     28 }; 
     29  
     30+/* 
     31+ * Clean up a "struct bpf_program" by freeing all the memory allocated 
     32+ * in it. 
     33+ */ 
     34+void 
     35+pcap_freecode(struct bpf_program *program) 
     36+{ 
     37+       program->bf_len = 0; 
     38+       if (program->bf_insns != NULL) { 
     39+               free((char *)program->bf_insns); 
     40+               program->bf_insns = NULL; 
     41+       } 
     42+} 
     43+ 
     44+/* 
     45+ * Make a copy of a BPF program and put it in the "fcode" member of 
     46+ * a "pcap_t". 
     47+ * 
     48+ * If we fail to allocate memory for the copy, fill in the "errbuf" 
     49+ * member of the "pcap_t" with an error message, and return -1; 
     50+ * otherwise, return 0. 
     51+ */ 
     52+int 
     53+install_bpf_program(pcap_t *p, struct bpf_program *fp) 
     54+{ 
     55+       size_t prog_size; 
     56+ 
     57+       /* 
     58+        * Validate the program. 
     59+        */ 
     60+       if (!bpf_validate(fp->bf_insns, fp->bf_len)) { 
     61+               snprintf(p->errbuf, sizeof(p->errbuf), 
     62+                       "BPF program is not valid"); 
     63+               return (-1); 
     64+       } 
     65+ 
     66+       /* 
     67+        * Free up any already installed program. 
     68+        */ 
     69+       pcap_freecode(&p->fcode); 
     70+ 
     71+       prog_size = sizeof(*fp->bf_insns) * fp->bf_len; 
     72+       p->fcode.bf_len = fp->bf_len; 
     73+       p->fcode.bf_insns = (struct bpf_insn *)malloc(prog_size); 
     74+       if (p->fcode.bf_insns == NULL) { 
     75+               snprintf(p->errbuf, sizeof(p->errbuf), 
     76+                        "malloc: %s", pcap_strerror(errno)); 
     77+               return (-1); 
     78+       } 
     79+       memcpy(p->fcode.bf_insns, fp->bf_insns, prog_size); 
     80+       return (0); 
     81+} 
     82+ 
     83 int 
     84 pcap_strcasecmp(const char *s1, const char *s2) 
     85 { 
    2486--- a/optimize.c 
    2587+++ b/optimize.c 
    26 @@ -2263,36 +2263,6 @@ icode_to_fcode(root, lenp) 
     88@@ -2278,45 +2278,6 @@ icode_to_fcode(root, lenp) 
    2789        return fp; 
    2890 } 
     
    40102-{ 
    41103-       size_t prog_size; 
     104- 
     105-       /* 
     106-        * Validate the program. 
     107-        */ 
     108-       if (!bpf_validate(fp->bf_insns, fp->bf_len)) { 
     109-               snprintf(p->errbuf, sizeof(p->errbuf), 
     110-                       "BPF program is not valid"); 
     111-               return (-1); 
     112-       } 
    42113- 
    43114-       /* 
     
    61132 static void 
    62133 opt_dump(root) 
    63 --- a/pcap.c 
    64 +++ b/pcap.c 
    65 @@ -463,6 +463,52 @@ static const u_char charmap[] = { 
    66         (u_char)'\374', (u_char)'\375', (u_char)'\376', (u_char)'\377', 
    67  }; 
    68   
    69 +/* 
    70 + * Clean up a "struct bpf_program" by freeing all the memory allocated 
    71 + * in it. 
    72 + */ 
    73 +void 
    74 +pcap_freecode(struct bpf_program *program) 
    75 +{ 
    76 +       program->bf_len = 0; 
    77 +       if (program->bf_insns != NULL) { 
    78 +               free((char *)program->bf_insns); 
    79 +               program->bf_insns = NULL; 
    80 +       } 
    81 +} 
    82 + 
    83 + 
    84 +/* 
    85 + * Make a copy of a BPF program and put it in the "fcode" member of 
    86 + * a "pcap_t". 
    87 + * 
    88 + * If we fail to allocate memory for the copy, fill in the "errbuf" 
    89 + * member of the "pcap_t" with an error message, and return -1; 
    90 + * otherwise, return 0. 
    91 + */ 
    92 +int 
    93 +install_bpf_program(pcap_t *p, struct bpf_program *fp) 
    94 +{ 
    95 +       size_t prog_size; 
    96 + 
    97 +       /* 
    98 +        * Free up any already installed program. 
    99 +        */ 
    100 +       pcap_freecode(&p->fcode); 
    101 + 
    102 +       prog_size = sizeof(*fp->bf_insns) * fp->bf_len; 
    103 +       p->fcode.bf_len = fp->bf_len; 
    104 +       p->fcode.bf_insns = (struct bpf_insn *)malloc(prog_size); 
    105 +       if (p->fcode.bf_insns == NULL) { 
    106 +               snprintf(p->errbuf, sizeof(p->errbuf), 
    107 +                        "malloc: %s", pcap_strerror(errno)); 
    108 +               return (-1); 
    109 +       } 
    110 +       memcpy(p->fcode.bf_insns, fp->bf_insns, prog_size); 
    111 +       return (0); 
    112 +} 
    113 + 
    114 + 
    115  int 
    116  pcap_strcasecmp(const char *s1, const char *s2) 
    117  { 
Note: See TracChangeset for help on using the changeset viewer.