Changeset 26995


Ignore:
Timestamp:
2011-05-24T11:51:08+02:00 (6 years ago)
Author:
jow
Message:

[PATCH] Update libpcap to version 1.1.1

Signed-off-by: Christoph König <christoph.koenig@…>

Location:
trunk/package/libpcap
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/libpcap/Makefile

    r20909 r26995  
    11# 
    2 # Copyright (C) 2006-2010 OpenWrt.org 
     2# Copyright (C) 2006-2011 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
     
    99 
    1010PKG_NAME:=libpcap 
    11 PKG_VERSION:=1.0.0 
    12 PKG_RELEASE:=2 
     11PKG_VERSION:=1.1.1 
     12PKG_RELEASE:=1 
    1313 
    1414PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz 
    1515PKG_SOURCE_URL:=http://www.tcpdump.org/release/ 
    16 PKG_MD5SUM:=9ad1358c5dec48456405eac197a46d3d 
     16PKG_MD5SUM:=1bca27d206970badae248cfa471bbb47 
    1717 
    1818PKG_INSTALL:=1 
  • trunk/package/libpcap/patches/100-debian_shared_lib.patch

    r15398 r26995  
    1414  
    1515+# some defines for shared library compilation 
    16 +MAJ=1.0 
    17 +LIBVERSION=$(MAJ).0 
     16+MAJ=1.1 
     17+LIBVERSION=$(MAJ).1 
    1818+LIBNAME=pcap 
    1919+LIBRARY=lib$(LIBNAME).a 
     
    2424 # You shouldn't need to edit anything below. 
    2525 # 
    26 @@ -56,6 +64,7 @@ PROG=libpcap 
     26@@ -59,6 +67,7 @@ PROG=libpcap 
    2727  
    2828 # Standard CFLAGS 
     
    3232 INSTALL = @INSTALL@ 
    3333 INSTALL_PROGRAM = @INSTALL_PROGRAM@ 
    34 @@ -75,7 +84,11 @@ YACC = @V_YACC@ 
     34@@ -78,7 +87,11 @@ YACC = @V_YACC@ 
    3535 # problem if you don't own the file but can write to the directory. 
    3636 .c.o: 
     
    4343+       $(CC) -fPIC $(CFLAGS) -c -o $@ $(srcdir)/$*.c 
    4444  
    45  PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ 
     45 PSRC = pcap-@V_PCAP@.c @USB_SRC@ @BT_SRC@ @CAN_SRC@ 
    4646 FSRC =  fad-@V_FINDALLDEVS@.c 
    47 @@ -90,6 +103,7 @@ SRC =        $(PSRC) $(FSRC) $(CSRC) $(SSRC) $( 
     47@@ -94,6 +107,7 @@ SRC =        $(PSRC) $(FSRC) $(CSRC) $(SSRC) $( 
    4848 # We would like to say "OBJ = $(SRC:.c=.o)" but Ultrix's make cannot 
    4949 # hack the extra indirection 
    5050 OBJ =  $(PSRC:.c=.o) $(FSRC:.c=.o) $(CSRC:.c=.o) $(SSRC:.c=.o) $(GENSRC:.c=.o) $(LIBOBJS) 
    5151+OBJ_PIC = $(PSRC:.c=_pic.o) $(FSRC:.c=_pic.o) $(CSRC:.c=_pic.o) $(SSRC:.c=_pic.o) $(GENSRC:.c=_pic.o) 
    52  HDR = \ 
    53         acconfig.h \ 
    54         arcnet.h \ 
    55 @@ -122,7 +136,8 @@ TAGHDR = \ 
    56  TAGFILES = \ 
    57         $(SRC) $(HDR) $(TAGHDR) 
     52 PUBHDR = \ 
     53        pcap.h \ 
     54        pcap-bpf.h \ 
     55@@ -131,7 +145,7 @@ TAGFILES = \ 
    5856  
    59 -CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c 
    60 +CLEANFILES = $(OBJ) libpcap.a $(GENSRC) $(GENHDR) lex.yy.c \ 
    61 +       $(OBJ_PIC) libpcap.so* 
     57 CLEANFILES = $(OBJ) libpcap.* filtertest findalldevstest selpolltest \ 
     58        opentest $(PROG)-`cat $(srcdir)/VERSION`.tar.gz $(GENSRC) $(GENHDR) \ 
     59-       lex.yy.c pcap-config 
     60+       lex.yy.c pcap-config $(OBJ_PIC) 
    6261  
    6362 MAN1 = pcap-config.1 
    6463  
    65 @@ -311,7 +326,7 @@ EXTRA_DIST = \ 
     64@@ -324,7 +338,7 @@ EXTRA_DIST = \ 
    6665        Win32/Src/inet_net.c \ 
    6766        Win32/Src/inet_pton.c 
    6867  
    69 -all: libpcap.a pcap-config 
    70 +all: libpcap.a pcap-config $(SHAREDLIB) 
     68-all: libpcap.a shared pcap-config 
     69+all: libpcap.a shared pcap-config $(SHAREDLIB) 
    7170  
    7271 libpcap.a: $(OBJ) 
    7372        @rm -f $@ 
    74 @@ -344,6 +359,13 @@ libpcap.dylib: $(OBJ) 
    75                 -compatibility_version 1 \ 
    76                 -current_version `sed 's/[^0-9.].*$$//' $(srcdir)/VERSION` 
     73@@ -409,6 +423,13 @@ libpcap.shareda: $(OBJ) 
     74 # 
     75 libpcap.none: 
    7776  
    7877+$(SHAREDLIB): $(OBJ_PIC) 
     
    8584 scanner.c: $(srcdir)/scanner.l 
    8685        @rm -f $@ 
    87         ./runlex.sh $(LEX) -o$@ $< 
    88 @@ -351,6 +373,9 @@ scanner.c: $(srcdir)/scanner.l 
     86        $(srcdir)/runlex.sh $(LEX) -o$@ $< 
     87@@ -416,6 +437,9 @@ scanner.c: $(srcdir)/scanner.l 
    8988 scanner.o: scanner.c tokdefs.h 
    9089        $(CC) $(CFLAGS) -c scanner.c 
     
    9695  
    9796 tokdefs.h: grammar.c 
    98 @@ -364,9 +389,17 @@ grammar.o: grammar.c 
     97@@ -429,9 +453,17 @@ grammar.o: grammar.c 
    9998        @rm -f $@ 
    10099        $(CC) $(CFLAGS) -Dyylval=pcap_lval -c grammar.c 
     
    114113        $(CC) $(CFLAGS) -o $@ -c $(srcdir)/missing/snprintf.c 
    115114  
    116 @@ -392,6 +425,9 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt 
     115@@ -469,6 +501,9 @@ bpf_filter.c: $(srcdir)/bpf/net/bpf_filt 
    117116 bpf_filter.o: bpf_filter.c 
    118117        $(CC) $(CFLAGS) -c bpf_filter.c 
     
    124123 # Generate the pcap-config script. 
    125124 # 
    126 @@ -418,6 +454,9 @@ install: libpcap.a pcap-config 
     125@@ -604,6 +639,9 @@ install-archive-so install-archive-dylib 
    127126            (mkdir -p $(DESTDIR)$(libdir); chmod 755 $(DESTDIR)$(libdir)) 
    128127        $(INSTALL_DATA) libpcap.a $(DESTDIR)$(libdir)/libpcap.a 
     
    131130+       ln -sf $(SHAREDLIB) $(DESTDIR)$(libdir)/$(SOLIBRARY).$(MAJ) 
    132131+       ln -sf $(SOLIBRARY).$(MAJ) $(DESTDIR)$(libdir)/$(SOLIBRARY) 
    133         [ -d $(DESTDIR)$(includedir) ] || \ 
    134             (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir)) 
    135         [ -d $(DESTDIR)$(includedir)/pcap ] || \ 
     132 install-archive-shareda: 
     133        # 
     134        # AIX, however, doesn't, so we don't install the archive 
    136135--- a/configure 
    137136+++ 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*) 
     137@@ -3229,7 +3229,7 @@ _ACEOF 
     138                    # or accepts command-line arguments like 
     139                    # those the GNU linker accepts. 
     140                    # 
     141-                   V_CCOPT="$V_CCOPT -fpic" 
     142+                   V_CCOPT="$V_CCOPT" 
     143                    V_SONAME_OPT="-Wl,-soname," 
     144                    V_RPATH_OPT="-Wl,-rpath," 
     145                    ;; 
     146@@ -3292,7 +3292,7 @@ _ACEOF 
     147                    # 
     148                    # "cc" is GCC. 
     149                    # 
     150-                   V_CCOPT="$V_CCOPT -fpic" 
     151+                   V_CCOPT="$V_CCOPT" 
     152                    V_SHLIB_CMD="\$(CC)" 
     153                    V_SHLIB_OPT="-shared" 
     154                    V_SONAME_OPT="-Wl,-soname," 
  • trunk/package/libpcap/patches/101-makefile_create_bindir.patch

    r20057 r26995  
    1 --- a/Makefile.in 
    2 +++ b/Makefile.in 
    3 @@ -484,6 +484,8 @@ install: libpcap.a pcap-config 
    4             $(DESTDIR)$(includedir)/pcap-bpf.h 
    5         $(INSTALL_DATA) $(srcdir)/pcap-namedb.h \ 
    6             $(DESTDIR)$(includedir)/pcap-namedb.h 
    7 +       [ -d $(DESTDIR)$(bindir) ] || \ 
    8 +           (mkdir -p $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) 
    9         $(INSTALL_PROGRAM) pcap-config $(DESTDIR)$(bindir)/pcap-config 
    10         for i in $(MAN1); do \ 
    11                 $(INSTALL_DATA) $(srcdir)/$$i \ 
  • trunk/package/libpcap/patches/102-makefile_disable_manpages.patch

    r20467 r26995  
    11--- a/Makefile.in 
    22+++ b/Makefile.in 
    3 @@ -461,14 +461,6 @@ install: libpcap.a pcap-config 
     3@@ -539,62 +539,12 @@ install: install-shared install-archive 
    44            (mkdir -p $(DESTDIR)$(includedir); chmod 755 $(DESTDIR)$(includedir)) 
    55        [ -d $(DESTDIR)$(includedir)/pcap ] || \ 
     
    1313-       [ -d $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@ ] || \ 
    1414-           (mkdir -p $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@; chmod 755 $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@) 
    15         $(INSTALL_DATA) $(srcdir)/pcap/pcap.h \ 
    16             $(DESTDIR)$(includedir)/pcap/pcap.h 
    17         $(INSTALL_DATA) $(srcdir)/pcap/bpf.h \ 
    18 @@ -487,36 +479,6 @@ install: libpcap.a pcap-config 
     15        for i in $(PUBHDR); do \ 
     16                $(INSTALL_DATA) $(srcdir)/$$i \ 
     17                    $(DESTDIR)$(includedir)/$$i; done 
    1918        [ -d $(DESTDIR)$(bindir) ] || \ 
    2019            (mkdir -p $(DESTDIR)$(bindir); chmod 755 $(DESTDIR)$(bindir)) 
     
    2322-               $(INSTALL_DATA) $(srcdir)/$$i \ 
    2423-                   $(DESTDIR)$(mandir)/man1/$$i; done 
    25 -       for i in $(MAN3PCAP); do \ 
     24-       for i in $(MAN3PCAP_NOEXPAND); do \ 
    2625-               $(INSTALL_DATA) $(srcdir)/$$i \ 
    2726-                   $(DESTDIR)$(mandir)/man3/$$i; done 
     27-       for i in $(MAN3PCAP_EXPAND:.in=); do \ 
     28-               $(INSTALL_DATA) $$i \ 
     29-                   $(DESTDIR)$(mandir)/man3/$$i; done 
     30-       rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap 
    2831-       ln $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_name.3pcap \ 
    2932-                $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap 
     33-       rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap 
    3034-       ln $(DESTDIR)$(mandir)/man3/pcap_dump_open.3pcap \ 
    3135-                $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap 
     36-       rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap 
    3237-       ln $(DESTDIR)$(mandir)/man3/pcap_geterr.3pcap \ 
    3338-                $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap 
     39-       rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap 
    3440-       ln $(DESTDIR)$(mandir)/man3/pcap_inject.3pcap \ 
    3541-                $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap 
     42-       rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap 
    3643-       ln $(DESTDIR)$(mandir)/man3/pcap_loop.3pcap \ 
    3744-                $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap 
     45-       rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap 
    3846-       ln $(DESTDIR)$(mandir)/man3/pcap_major_version.3pcap \ 
    3947-                $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap 
     48-       rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap 
    4049-       ln $(DESTDIR)$(mandir)/man3/pcap_next_ex.3pcap \ 
    4150-                $(DESTDIR)$(mandir)/man3/pcap_next.3pcap 
     51-       rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap 
    4252-       ln $(DESTDIR)$(mandir)/man3/pcap_open_offline.3pcap \ 
    4353-                $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap 
     54-       rm -f $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap 
    4455-       ln $(DESTDIR)$(mandir)/man3/pcap_setnonblock.3pcap \ 
    4556-                $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap 
    4657-       for i in $(MANFILE); do \ 
    47 -               $(INSTALL_DATA) $(srcdir)/`echo $$i | sed 's/.manfile.in/.manfile/'` \ 
     58-               $(INSTALL_DATA) `echo $$i | sed 's/.manfile.in/.manfile/'` \ 
    4859-                   $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@/`echo $$i | sed 's/.manfile.in/.@MAN_FILE_FORMATS@/'`; done 
    4960-       for i in $(MANMISC); do \ 
    50 -               $(INSTALL_DATA) $(srcdir)/`echo $$i | sed 's/.manmisc.in/.manmisc/'` \ 
     61-               $(INSTALL_DATA) `echo $$i | sed 's/.manmisc.in/.manmisc/'` \ 
    5162-                   $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done 
    5263  
    5364 install-shared: install-shared-$(DYEXT) 
    5465 install-shared-so: libpcap.so 
    55 @@ -536,23 +498,6 @@ uninstall: 
    56         rm -f $(DESTDIR)$(includedir)/pcap.h 
    57         rm -f $(DESTDIR)$(includedir)/pcap-bpf.h 
    58         rm -f $(DESTDIR)$(includedir)/pcap-namedb.h 
     66@@ -654,23 +604,6 @@ uninstall: uninstall-shared 
     67                rm -f $(DESTDIR)$(includedir)/$$i; done 
     68        -rmdir $(DESTDIR)$(includedir)/pcap 
     69        rm -f $(DESTDIR)/$(bindir)/pcap-config 
    5970-       for i in $(MAN1); do \ 
    6071-               rm -f $(DESTDIR)$(mandir)/man1/$$i; done 
    6172-       for i in $(MAN3PCAP); do \ 
    6273-               rm -f $(DESTDIR)$(mandir)/man3/$$i; done 
    63 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap 
    64 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap 
    65 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap 
    66 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap 
    67 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap 
    68 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap 
    69 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_next.3pcap 
    70 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap 
    71 -       rm -f  $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap 
     74-       rm -f $(DESTDIR)$(mandir)/man3/pcap_datalink_val_to_description.3pcap 
     75-       rm -f $(DESTDIR)$(mandir)/man3/pcap_dump_fopen.3pcap 
     76-       rm -f $(DESTDIR)$(mandir)/man3/pcap_perror.3pcap 
     77-       rm -f $(DESTDIR)$(mandir)/man3/pcap_sendpacket.3pcap 
     78-       rm -f $(DESTDIR)$(mandir)/man3/pcap_dispatch.3pcap 
     79-       rm -f $(DESTDIR)$(mandir)/man3/pcap_minor_version.3pcap 
     80-       rm -f $(DESTDIR)$(mandir)/man3/pcap_next.3pcap 
     81-       rm -f $(DESTDIR)$(mandir)/man3/pcap_fopen_offline.3pcap 
     82-       rm -f $(DESTDIR)$(mandir)/man3/pcap_getnonblock.3pcap 
    7283-       for i in $(MANFILE); do \ 
    7384-               rm -f $(DESTDIR)$(mandir)/man@MAN_FILE_FORMATS@/`echo $$i | sed 's/.manfile.in/.@MAN_FILE_FORMATS@/'`; done 
     
    7586-               rm -f $(DESTDIR)$(mandir)/man@MAN_MISC_INFO@/`echo $$i | sed 's/.manmisc.in/.@MAN_MISC_INFO@/'`; done 
    7687  
    77  clean: 
    78         rm -f $(CLEANFILES) libpcap*.dylib libpcap.so* 
     88 uninstall-shared: uninstall-shared-$(DYEXT) 
     89 uninstall-shared-so: 
  • trunk/package/libpcap/patches/103-makefile_flex_workaround.patch

    r20057 r26995  
    44--- a/Makefile.in 
    55+++ b/Makefile.in 
    6 @@ -55,7 +55,7 @@ SHAREDLIB=$(SOLIBRARY).$(LIBVERSION) 
     6@@ -56,7 +56,7 @@ LD = /usr/bin/ld 
    77 CC = @CC@ 
    88 CCOPT = @V_CCOPT@ 
     
    1010-DEFS = @DEFS@ @V_DEFS@ 
    1111+DEFS = -D_BSD_SOURCE @DEFS@ @V_DEFS@ 
    12  LIBS = @V_LIBS@ 
    13  DAGLIBS = @DAGLIBS@ 
    14  DEPLIBS = @DEPLIBS@ 
     12 ADDLOBJS = @ADDLOBJS@ 
     13 ADDLARCHIVEOBJS = @ADDLARCHIVEOBJS@ 
     14 LIBS = @LIBS@ 
  • trunk/package/libpcap/patches/200-debian_fix_any_intf.patch

    r20057 r26995  
    1 --- a/pcap-linux.c 
    2 +++ b/pcap-linux.c 
    3 @@ -297,6 +297,12 @@ pcap_create(const char *device, char *eb 
    4  { 
    5         pcap_t *handle; 
    6   
    7 +       /* 
    8 +        * A null device name is equivalent to the "any" device. 
    9 +        */ 
    10 +       if (device == NULL) 
    11 +               device = "any"; 
    12 + 
    13  #ifdef HAVE_DAG_API 
    14         if (strstr(device, "dag")) { 
    15                 return dag_create(device, ebuf); 
    16 @@ -338,10 +344,9 @@ pcap_can_set_rfmon_linux(pcap_t *p) 
    17         struct iwreq ireq; 
    18  #endif 
    19   
    20 -       if (p->opt.source == NULL) { 
    21 +       if (strcmp(p->opt.source, "any") == 0) { 
    22                 /* 
    23 -                * This is equivalent to the "any" device, and we don't 
    24 -                * support monitor mode on it. 
    25 +                * Monitor mode makes no sense on the "any" device. 
    26                  */ 
    27                 return 0; 
    28         } 
    29 @@ -518,12 +523,11 @@ pcap_activate_linux(pcap_t *handle) 
    30         handle->stats_op = pcap_stats_linux; 
    31   
    32         /* 
    33 -        * NULL and "any" are special devices which give us the hint to 
    34 -        * monitor all devices. 
    35 +        * The "any" device is a special device which causes us not 
    36 +        * to bind to a particular device and thus to look at all 
    37 +        * devices. 
    38          */ 
    39 -       if (!device || strcmp(device, "any") == 0) { 
    40 -               device                  = NULL; 
    41 -               handle->md.device       = strdup("any"); 
    42 +       if (strcmp(device, "any") == 0) { 
    43                 if (handle->opt.promisc) { 
    44                         handle->opt.promisc = 0; 
    45                         /* Just a warning. */ 
    46 @@ -531,10 +535,9 @@ pcap_activate_linux(pcap_t *handle) 
    47                             "Promiscuous mode not supported on the \"any\" device"); 
    48                         status = PCAP_WARNING_PROMISC_NOTSUP; 
    49                 } 
    50 +       } 
    51   
    52 -       } else 
    53 -               handle->md.device       = strdup(device); 
    54 - 
    55 +       handle->md.device       = strdup(device); 
    56         if (handle->md.device == NULL) { 
    57                 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "strdup: %s", 
    58                          pcap_strerror(errno) ); 
    59 @@ -1657,19 +1660,21 @@ static int 
    60  activate_new(pcap_t *handle) 
    61  { 
    62  #ifdef HAVE_PF_PACKET_SOCKETS 
    63 +       const char              *device = handle->opt.source; 
    64 +       int                     is_any_device = (strcmp(device, "any") == 0); 
    65         int                     sock_fd = -1, arptype, val; 
    66         int                     err = 0; 
    67         struct packet_mreq      mr; 
    68 -       const char* device = handle->opt.source; 
    69   
    70         /* 
    71 -        * Open a socket with protocol family packet. If a device is 
    72 -        * given we try to open it in raw mode otherwise we use 
    73 -        * the cooked interface. 
    74 -        */ 
    75 -       sock_fd = device ? 
    76 -               socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) 
    77 -             : socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)); 
    78 +        * Open a socket with protocol family packet. If the 
    79 +        * "any" device was specified, we open a SOCK_DGRAM 
    80 +        * socket for the cooked interface, otherwise we first 
    81 +        * try a SOCK_RAW socket for the raw interface. 
    82 +        */ 
    83 +       sock_fd = is_any_device ? 
    84 +               socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL)) : 
    85 +               socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)); 
    86   
    87         if (sock_fd == -1) { 
    88                 snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "socket: %s", 
    89 @@ -1704,7 +1709,7 @@ activate_new(pcap_t *handle) 
    90          * to cooked mode if we have an unknown interface type 
    91          * or a type we know doesn't work well in raw mode. 
    92          */ 
    93 -       if (device) { 
    94 +       if (!is_any_device) { 
    95                 /* Assume for now we don't need cooked mode. */ 
    96                 handle->md.cooked = 0; 
    97   
    98 @@ -1819,15 +1824,23 @@ activate_new(pcap_t *handle) 
    99                 } 
    100         } else { 
    101                 /* 
    102 -                * This is cooked mode. 
    103 +                * The "any" device. 
    104 +                */ 
    105 +               if (handle->opt.rfmon) { 
    106 +                       /* 
    107 +                        * It doesn't support monitor mode. 
    108 +                        */ 
    109 +                       return PCAP_ERROR_RFMON_NOTSUP; 
    110 +               } 
    111 + 
    112 +               /* 
    113 +                * It uses cooked mode. 
    114                  */ 
    115                 handle->md.cooked = 1; 
    116                 handle->linktype = DLT_LINUX_SLL; 
    117   
    118                 /* 
    119                  * We're not bound to a device. 
    120 -                * XXX - true?  Or true only if we're using 
    121 -                * the "any" device? 
    122                  * For now, we're using this as an indication 
    123                  * that we can't transmit; stop doing that only 
    124                  * if we figure out how to transmit in cooked 
    125 @@ -1852,10 +1865,13 @@ activate_new(pcap_t *handle) 
    126   
    127         /* 
    128          * Hmm, how can we set promiscuous mode on all interfaces? 
    129 -        * I am not sure if that is possible at all. 
    130 +        * I am not sure if that is possible at all.  For now, we 
    131 +        * silently ignore attempts to turn promiscuous mode on 
    132 +        * for the "any" device (so you don't have to explicitly 
    133 +        * disable it in programs such as tcpdump). 
    134          */ 
    135   
    136 -       if (device && handle->opt.promisc) { 
    137 +       if (!is_any_device && handle->opt.promisc) { 
    138                 memset(&mr, 0, sizeof(mr)); 
    139                 mr.mr_ifindex = handle->md.ifindex; 
    140                 mr.mr_type    = PACKET_MR_PROMISC; 
    141 @@ -3118,7 +3134,7 @@ activate_old(pcap_t *handle) 
    142   
    143         /* Bind to the given device */ 
    144   
    145 -       if (!device) { 
    146 +       if (strcmp(device, "any") == 0) { 
    147                 strncpy(handle->errbuf, "pcap_activate: The \"any\" device isn't supported on 2.0[.x]-kernel systems", 
    148                         PCAP_ERRBUF_SIZE); 
    149                 return PCAP_ERROR; 
  • trunk/package/libpcap/patches/202-protocol_api.patch

    r20057 r26995  
    11--- a/pcap-int.h 
    22+++ b/pcap-int.h 
    3 @@ -187,6 +187,7 @@ struct pcap_opt { 
     3@@ -209,6 +209,7 @@ struct pcap_opt { 
    44        char    *source; 
    55        int     promisc; 
     
    1111--- a/pcap-linux.c 
    1212+++ b/pcap-linux.c 
    13 @@ -273,7 +273,7 @@ static int  iface_get_id(int fd, const ch 
     13@@ -335,7 +335,7 @@ static int  iface_get_id(int fd, const ch 
    1414 static int     iface_get_mtu(int fd, const char *device, char *ebuf); 
    1515 static int     iface_get_arptype(int fd, const char *device, char *ebuf); 
     
    1717-static int     iface_bind(int fd, int ifindex, char *ebuf); 
    1818+static int     iface_bind(int fd, int ifindex, char *ebuf, unsigned short proto); 
     19 #ifdef IW_MODE_MONITOR 
    1920 static int     has_wext(int sock_fd, const char *device, char *ebuf); 
    20  static int     enter_rfmon_mode_wext(pcap_t *handle, int sock_fd, 
    21      const char *device); 
    22 @@ -362,7 +362,7 @@ pcap_can_set_rfmon_linux(pcap_t *p) 
     21 #endif /* IW_MODE_MONITOR */ 
     22@@ -881,7 +881,7 @@ pcap_can_set_rfmon_linux(pcap_t *handle) 
    2323         * (We assume that if we have Wireless Extensions support 
    2424         * we also have PF_PACKET support.) 
     
    2727+       sock_fd = socket(PF_PACKET, SOCK_RAW, p->opt.proto); 
    2828        if (sock_fd == -1) { 
    29                 (void)snprintf(p->errbuf, PCAP_ERRBUF_SIZE, 
     29                (void)snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, 
    3030                    "socket: %s", pcap_strerror(errno)); 
    31 @@ -522,6 +522,9 @@ pcap_activate_linux(pcap_t *handle) 
     31@@ -1128,6 +1128,9 @@ pcap_activate_linux(pcap_t *handle) 
    3232        handle->read_op = pcap_read_linux; 
    3333        handle->stats_op = pcap_stats_linux; 
     
    3939         * The "any" device is a special device which causes us not 
    4040         * to bind to a particular device and thus to look at all 
    41 @@ -1673,8 +1676,8 @@ activate_new(pcap_t *handle) 
     41@@ -2684,8 +2687,8 @@ activate_new(pcap_t *handle) 
    4242         * try a SOCK_RAW socket for the raw interface. 
    4343         */ 
     
    5050        if (sock_fd == -1) { 
    5151                snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, "socket: %s", 
    52 @@ -1763,7 +1766,7 @@ activate_new(pcap_t *handle) 
     52@@ -2783,7 +2786,7 @@ activate_new(pcap_t *handle) 
    5353                                return PCAP_ERROR; 
    5454                        } 
     
    5959                                snprintf(handle->errbuf, PCAP_ERRBUF_SIZE, 
    6060                                    "socket: %s", pcap_strerror(errno)); 
    61 @@ -1815,7 +1818,7 @@ activate_new(pcap_t *handle) 
     61@@ -2835,7 +2838,7 @@ activate_new(pcap_t *handle) 
    6262                } 
    6363  
     
    6868                        if (err < 0) 
    6969                                return err; 
    70 @@ -2440,7 +2443,7 @@ iface_get_id(int fd, const char *device, 
     70@@ -3640,7 +3643,7 @@ iface_get_id(int fd, const char *device, 
    7171  *  or a PCAP_ERROR_ value on a hard error. 
    7272  */ 
     
    7777        struct sockaddr_ll      sll; 
    7878        int                     err; 
    79 @@ -2449,7 +2452,7 @@ iface_bind(int fd, int ifindex, char *eb 
     79@@ -3649,7 +3652,7 @@ iface_bind(int fd, int ifindex, char *eb 
    8080        memset(&sll, 0, sizeof(sll)); 
    8181        sll.sll_family          = AF_PACKET; 
     
    8686        if (bind(fd, (struct sockaddr *) &sll, sizeof(sll)) == -1) { 
    8787                if (errno == ENETDOWN) { 
    88 @@ -3119,7 +3122,7 @@ activate_old(pcap_t *handle) 
     88@@ -4359,7 +4362,7 @@ activate_old(pcap_t *handle) 
    8989  
    9090        /* Open the socket */ 
     
    9797--- a/pcap.c 
    9898+++ b/pcap.c 
    99 @@ -152,6 +152,8 @@ pcap_create_common(const char *source, c 
     99@@ -258,6 +258,8 @@ pcap_create_common(const char *source, c 
    100100        pcap_set_snaplen(p, 65535);     /* max packet size */ 
    101101        p->opt.promisc = 0; 
     
    106106 } 
    107107  
    108 @@ -212,6 +214,15 @@ pcap_set_buffer_size(pcap_t *p, int buff 
     108@@ -317,6 +319,15 @@ pcap_set_buffer_size(pcap_t *p, int buff 
     109        return 0; 
    109110 } 
    110111  
    111  int 
     112+int 
    112113+pcap_set_protocol(pcap_t *p, unsigned short proto) 
    113114+{ 
     
    118119+} 
    119120+ 
    120 +int 
     121 int 
    121122 pcap_activate(pcap_t *p) 
    122123 { 
    123         int status; 
    124124--- a/pcap/pcap.h 
    125125+++ b/pcap/pcap.h 
    126 @@ -61,6 +61,7 @@ extern "C" { 
     126@@ -68,6 +68,7 @@ extern "C" { 
    127127 #define PCAP_VERSION_MINOR 4 
    128128  
     
    132132 /* 
    133133  * Compatibility for systems that have a bpf.h that 
    134 @@ -263,6 +264,7 @@ int pcap_can_set_rfmon(pcap_t *); 
     134@@ -276,6 +277,7 @@ int pcap_can_set_rfmon(pcap_t *); 
    135135 int    pcap_set_rfmon(pcap_t *, int); 
    136136 int    pcap_set_timeout(pcap_t *, int); 
  • trunk/package/libpcap/patches/203-undef_iw_mode_monitor.patch

    r20057 r26995  
    11--- a/pcap-linux.c 
    22+++ b/pcap-linux.c 
    3 @@ -194,6 +194,8 @@ static const char rcsid[] _U_ = 
     3@@ -254,6 +254,8 @@ static const char rcsid[] _U_ = 
    44 typedef int            socklen_t; 
    55 #endif 
Note: See TracChangeset for help on using the changeset viewer.