diff options
author | guy <guy> | 2007-09-24 23:46:26 +0000 |
---|---|---|
committer | guy <guy> | 2007-09-24 23:46:26 +0000 |
commit | 3a34763284ac850d0194a7d4d01a482d5e4aa703 (patch) | |
tree | 9f4e7894d0c934bba8a59ef9954d3c57d7f72c82 | |
parent | c202a9fa8922a7b5f7677232d6a232150e6686d0 (diff) | |
download | tcpdump-3a34763284ac850d0194a7d4d01a482d5e4aa703.tar.gz |
From Paolo Abeni: print some basic Bluetooth information.
Update CREDITS, FILES, and INSTALL appropriately; clean up changes to
Makefile.in to keep the file names in order.
-rw-r--r-- | CREDITS | 1 | ||||
-rw-r--r-- | FILES | 1 | ||||
-rw-r--r-- | INSTALL | 5 | ||||
-rw-r--r-- | Makefile.in | 7 | ||||
-rw-r--r-- | interface.h | 3 | ||||
-rw-r--r-- | print-bt.c | 78 | ||||
-rw-r--r-- | tcpdump.c | 5 |
7 files changed, 93 insertions, 7 deletions
@@ -115,6 +115,7 @@ Additional people who have contributed patches: Noritoshi Demizu <demizu@users.sourceforge.net> Olaf Kirch <okir@caldera.de> Onno van der Linden <onno@simplex.nl> + Paolo Abeni <paolo.abeni@email.it> Pascal Hennequin <pascal.hennequin@int-evry.fr> Pasvorn Boonmark <boonmark@juniper.net> Paul Mundt <lethal@linux-sh.org> @@ -124,6 +124,7 @@ print-beep.c print-bfd.c print-bgp.c print-bootp.c +print-bt.c print-cdp.c print-cfm.c print-chdlc.c @@ -1,4 +1,4 @@ -@(#) $Header: /tcpdump/master/tcpdump/Attic/INSTALL,v 1.70 2007-09-14 01:02:07 guy Exp $ (LBL) +@(#) $Header: /tcpdump/master/tcpdump/Attic/INSTALL,v 1.71 2007-09-24 23:46:26 guy Exp $ (LBL) If you have not built libpcap, and your system does not have libpcap installed, install libpcap first. Your system might provide a version @@ -140,9 +140,10 @@ print-arp.c - Address Resolution Protocol printer routines print-ascii.c - ASCII packet dump routines print-atalk.c - AppleTalk printer routines print-atm.c - ATM printer routines +print-beep.c - BEEP printer routines print-bgp.c - Border Gateway Protocol printer routines print-bootp.c - BOOTP and IPv4 DHCP printer routines -print-beep.c - BEEP printer routines +print-bt.c - Bluetooth printer routines print-cdp.c - Cisco Discovery Protocol printer routines print-chdlc.c - Cisco HDLC printer routines print-cip.c - Classical-IP over ATM routines diff --git a/Makefile.in b/Makefile.in index 1afa38c3..f8d4f3fa 100644 --- a/Makefile.in +++ b/Makefile.in @@ -17,7 +17,7 @@ # WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # -# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.316 2007-09-12 19:36:18 guy Exp $ (LBL) +# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.317 2007-09-24 23:46:26 guy Exp $ (LBL) # # Various configurable paths (remember to edit Makefile.in, not Makefile) @@ -69,8 +69,9 @@ CSRC = addrtoname.c af.c checksum.c cpack.c gmpls.c oui.c gmt2local.c ipproto.c nlpid.c l2vpn.c machdep.c parsenfsfh.c \ print-802_11.c print-ap1394.c print-ah.c print-arcnet.c \ print-aodv.c print-arp.c print-ascii.c print-atalk.c print-atm.c \ - print-beep.c print-bfd.c print-bgp.c print-bootp.c print-cdp.c \ - print-cfm.c print-chdlc.c print-cip.c print-cnfp.c print-dccp.c print-decnet.c \ + print-beep.c print-bfd.c print-bgp.c print-bootp.c print-bt.c \ + print-cdp.c print-cfm.c print-chdlc.c print-cip.c print-cnfp.c \ + print-dccp.c print-decnet.c \ print-domain.c print-dtp.c print-dvmrp.c print-enc.c print-egp.c \ print-eap.c print-eigrp.c\ print-esp.c print-ether.c print-fddi.c print-fr.c \ diff --git a/interface.h b/interface.h index 8b6bd7bc..613c018f 100644 --- a/interface.h +++ b/interface.h @@ -18,7 +18,7 @@ * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.279 2007-08-29 12:31:00 mcr Exp $ (LBL) + * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.280 2007-09-24 23:46:27 guy Exp $ (LBL) */ #ifndef tcpdump_interface_h @@ -328,6 +328,7 @@ extern void hsrp_print(const u_char *, u_int); extern void bfd_print(const u_char *, u_int, u_int); extern void sip_print(const u_char *, u_int); extern void syslog_print(const u_char *, u_int); +extern u_int bt_if_print(const struct pcap_pkthdr *, const u_char *); #ifdef INET6 extern void ip6_print(const u_char *, u_int); diff --git a/print-bt.c b/print-bt.c new file mode 100644 index 00000000..75da5115 --- /dev/null +++ b/print-bt.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2007 + * paolo.abeni@email.it All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that: (1) source code distributions + * retain the above copyright notice and this paragraph in its entirety, (2) + * distributions including binary code include the above copyright notice and + * this paragraph in its entirety in the documentation or other materials + * provided with the distribution, and (3) all advertising materials mentioning + * features or use of this software display the following acknowledgement: + * ``This product includes software developed by Paolo Abeni.'' + * The name of author may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + */ + +#ifndef lint +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-bt.c,v 1.1 2007-09-24 23:46:27 guy Exp $"; +#endif + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <tcpdump-stdinc.h> + +#include <pcap.h> +#include <stdio.h> +#include <string.h> + +#include "interface.h" +#include "addrtoname.h" + +#ifdef DLT_BLUETOOTH_HCI_H4_WITH_PHDR +#include <pcap/bluetooth.h> + +#define BT_HDRLEN sizeof(pcap_bluetooth_h4_header) +/* + * This is the top level routine of the printer. 'p' points + * to the bluetooth header of the packet, 'h->ts' is the timestamp, + * 'h->len' is the length of the packet off the wire, and 'h->caplen' + * is the number of bytes actually captured. + */ +u_int +bt_if_print(const struct pcap_pkthdr *h, const u_char *p) +{ + u_int length = h->len; + u_int caplen = h->caplen; + const pcap_bluetooth_h4_header* hdr = (const pcap_bluetooth_h4_header*)p; + + if (caplen < BT_HDRLEN) { + printf("[|bt]"); + return (BT_HDRLEN); + } + caplen -= BT_HDRLEN; + length -= BT_HDRLEN; + p += BT_HDRLEN; + if (eflag) + (void)printf("hci length %d, direction %s, ", length, (ntohl(hdr->direction)&0x1)?"in":"out"); + + if (!suppress_default_print) + default_print(p, caplen); + + return (BT_HDRLEN); +} +#endif + + +/* + * Local Variables: + * c-style: whitesmith + * c-basic-offset: 8 + * End: + */ @@ -30,7 +30,7 @@ static const char copyright[] _U_ = "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\ The Regents of the University of California. All rights reserved.\n"; static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.270 2007-09-12 19:36:18 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.271 2007-09-24 23:46:27 guy Exp $ (LBL)"; #endif /* @@ -269,6 +269,9 @@ static struct printer printers[] = { #ifdef DLT_MFR { mfr_if_print, DLT_MFR }, #endif +#ifdef DLT_BLUETOOTH_HCI_H4_WITH_PHDR + { bt_if_print, DLT_BLUETOOTH_HCI_H4_WITH_PHDR}, +#endif { NULL, 0 }, }; |