-$Header: /tcpdump/master/tcpdump/CHANGES,v 1.86 2004-03-29 17:29:41 mcr Exp $
+$Header: /tcpdump/master/tcpdump/CHANGES,v 1.87 2004-03-30 14:42:38 mcr Exp $
+
+
+ No changes from 3.8.2. Version bumped only to maintain consistency
+ with libpcap 0.8.3.
# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.282 2004-03-28 20:33:27 fenner Exp $ (LBL)
+# @(#) $Header: /tcpdump/master/tcpdump/Makefile.in,v 1.283 2004-03-30 14:42:39 mcr Exp $ (LBL)
#
# Various configurable paths (remember to edit Makefile.in, not Makefile)
print-beep.c print-bfd.c print-bgp.c print-bootp.c print-cdp.c \
print-chdlc.c print-cip.c print-cnfp.c print-decnet.c \
print-domain.c print-dvmrp.c print-enc.c print-egp.c \
+ print-eap.c \
print-esp.c print-ether.c print-fddi.c print-fr.c \
print-gre.c print-hsrp.c print-icmp.c print-igmp.c \
print-igrp.c print-ip.c print-ipcomp.c print-ipfc.c \
* WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*
- * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.225 2004-03-23 07:15:36 guy Exp $ (LBL)
+ * @(#) $Header: /tcpdump/master/tcpdump/interface.h,v 1.226 2004-03-30 14:42:40 mcr Exp $ (LBL)
*/
#ifndef tcpdump_interface_h
extern char *strsep(char **, const char *);
#endif
-struct tok {
- int v; /* value */
- const char *s; /* string */
-};
-
-extern int aflag; /* translate network and broadcast addresses */
-extern int dflag; /* print filter code */
-extern int eflag; /* print ethernet header */
-extern int fflag; /* don't translate "foreign" IP address */
-extern int nflag; /* leave addresses as numbers */
-extern int Nflag; /* remove domains from printed host names */
-extern int qflag; /* quick (shorter) output */
-extern int Rflag; /* print sequence # field in AH/ESP*/
-extern int sflag; /* use the libsmi to translate OIDs */
-extern int Sflag; /* print raw TCP sequence numbers */
-extern int tflag; /* print packet arrival time */
-extern int uflag; /* Print undecoded NFS handles */
-extern int vflag; /* verbose */
-extern int xflag; /* print packet in hex */
-extern int Xflag; /* print packet in hex/ascii */
-extern int Aflag; /* print packet only in ascii observing TAB, LF, CR and SPACE as graphical chars */
-extern char *espsecret;
-extern char *tcpmd5secret;
-
-extern int packettype; /* as specified by -T */
#define PT_VAT 1 /* Visual Audio Tool */
#define PT_WB 2 /* distributed White Board */
#define PT_RPC 3 /* Remote Procedure Call */
extern int fn_print(const u_char *, const u_char *);
extern int fn_printn(const u_char *, u_int, const u_char *);
-extern const char *tok2str(const struct tok *, const char *, int);
extern int mask2plen(u_int32_t);
-extern char *bittok2str(const struct tok *, const char *, int);
extern const char *tok2strary_internal(const char **, int, const char *, int);
#define tok2strary(a,f,i) tok2strary_internal(a, sizeof(a)/sizeof(a[0]),f,i)
struct bpf_program;
extern void bpf_dump(struct bpf_program *, int);
+
#endif
+
+#include "netdissect.h"
+
+/* forward compatibility */
+
+netdissect_options *gndo;
+
+#define dflag gndo->ndo_dflag
+#define eflag gndo->ndo_eflag
+#define fflag gndo->ndo_fflag
+#define nflag gndo->ndo_nflag
+#define Nflag gndo->ndo_Nflag
+#define Oflag gndo->ndo_Oflag
+#define pflag gndo->ndo_pflag
+#define qflag gndo->ndo_qflag
+#define Rflag gndo->ndo_Rflag
+#define sflag gndo->ndo_sflag
+#define Sflag gndo->ndo_Sflag
+#define tflag gndo->ndo_tflag
+#define Uflag gndo->ndo_Uflag
+#define uflag gndo->ndo_uflag
+#define vflag gndo->ndo_vflag
+#define xflag gndo->ndo_xflag
+#define Xflag gndo->ndo_Xflag
+#define Cflag gndo->ndo_Cflag
+#define Aflag gndo->ndo_Aflag
+#define packettype gndo->ndo_packettype
+#define espsecret gndo->ndo_espsecret
+#define tcpmd5secret gndo->ndo_tcpmd5secret
+#define Wflag gndo->ndo_Wflag
+#define WflagChars gndo->ndo_WflagChars
+#define Cflag_count gndo->ndo_Cflag_count
*/
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.89 2004-03-17 23:24:36 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ether.c,v 1.90 2004-03-30 14:42:40 mcr Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
{ ETHERTYPE_PPP, "PPP" },
{ ETHERTYPE_PPPOED, "PPPoE D" },
{ ETHERTYPE_PPPOES, "PPPoE S" },
+ { ETHERTYPE_EAPOL, "EAPOL" },
{ ETHERTYPE_JUMBO, "Jumbo" },
{ ETHERTYPE_LOOPBACK, "Loopback" },
{ ETHERTYPE_ISO, "OSI" },
pppoe_print(p, length);
return (1);
+ case ETHERTYPE_EAPOL:
+ eap_print(gndo, p, length);
+ return (1);
+
case ETHERTYPE_PPP:
if (length) {
printf(": ");
"@(#) 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.238 2004-03-23 18:57:33 fenner Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.239 2004-03-30 14:42:40 mcr Exp $ (LBL)";
#endif
/*
#include <grp.h>
#endif /* WIN32 */
+#include "netdissect.h"
#include "interface.h"
#include "addrtoname.h"
#include "machdep.h"
#include "gmt2local.h"
#include "pcap-missing.h"
-int dflag; /* print filter code */
-int eflag; /* print ethernet header */
-int fflag; /* don't translate "foreign" IP address */
-static int Lflag; /* list available data link types and exit */
-int nflag; /* leave addresses as numbers */
-int Nflag; /* remove domains from printed host names */
-static int Oflag = 1; /* run filter code optimizer */
-static int pflag; /* don't go promiscuous */
-int qflag; /* quick (shorter) output */
-int Rflag = 1; /* print sequence # field in AH/ESP*/
-int sflag = 0; /* use the libsmi to translate OIDs */
-int Sflag; /* print raw TCP sequence numbers */
-int tflag = 1; /* print packet arrival time */
-int Uflag = 0; /* "unbuffered" output of dump files */
-int uflag = 0; /* Print undecoded NFS handles */
-int vflag; /* verbose */
-int xflag; /* print packet in hex */
-int Xflag; /* print packet in ascii as well as hex */
-static off_t Cflag = 0; /* rotate dump files after this many bytes */
-int Aflag = 0; /* print packet only in ascii observing LF, CR, TAB, SPACE */
-static int dlt = -1; /* if != -1, ask libpcap for the DLT it names */
-static int Cflag_count = 0; /* Keep track of which file number we're writing */
-static int Wflag = 0; /* recycle output files after this number of files */
-static int WflagChars = 0;
+netdissect_options Gndo;
+netdissect_options *gndo = &Gndo;
/*
* Define the maximum number of files for the -C flag, and how many
#define MAX_CFLAG 1000000
#define MAX_CFLAG_CHARS 6
-const char *dlt_name = NULL;
-
-char *espsecret = NULL; /* ESP secret key */
-char *tcpmd5secret = NULL; /* TCP-MD5 secret key */
-
-int packettype;
+int Lflag; /* list available data link types and exit */
static int infodelay;
static int infoprint;
sprintf(buffer, "%s%0*d", orig_name, max_chars, cnt);
}
+static int tcpdump_printf(netdissect_options *ndo _U_,
+ const char *fmt, ...)
+{
+
+ va_list args;
+ int ret;
+
+ va_start(args, fmt);
+ ret=vfprintf(stdout, fmt, args);
+ va_end(args);
+
+ return ret;
+};
+
int
main(int argc, char **argv)
{
if(wsockinit() != 0) return 1;
#endif /* WIN32 */
+ gndo->ndo_Oflag=1;
+ gndo->ndo_Rflag=1;
+ gndo->ndo_tflag=1;
+ gndo->ndo_dlt=-1;
+ gndo->ndo_printf=tcpdump_printf;
+
cnt = -1;
device = NULL;
infile = NULL;
break;
case 'y':
- dlt_name = optarg;
- dlt = pcap_datalink_name_to_val(dlt_name);
- if (dlt < 0)
- error("invalid data link type %s", dlt_name);
+ gndo->ndo_dltname = optarg;
+ gndo->ndo_dlt =
+ pcap_datalink_name_to_val(gndo->ndo_dltname);
+ if (gndo->ndo_dlt < 0)
+ error("invalid data link type %s", gndo->ndo_dltname);
break;
#if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG)
#endif /* WIN32 */
if (Lflag)
show_dlts_and_exit(pd);
- if (dlt >= 0) {
+ if (gndo->ndo_dlt >= 0) {
#ifdef HAVE_PCAP_SET_DATALINK
- if (pcap_set_datalink(pd, dlt) < 0)
+ if (pcap_set_datalink(pd, gndo->ndo_dlt) < 0)
error("%s", pcap_geterr(pd));
#else
/*
* data link type, so we only let them
* set it to what it already is.
*/
- if (dlt != pcap_datalink(pd)) {
+ if (gndo->ndo_dlt != pcap_datalink(pd)) {
error("%s is not one of the DLTs supported by this device\n",
- dlt_name);
+ gndo->ndo_dltname);
}
#endif
(void)fprintf(stderr, "%s: data link type %s\n",
- program_name, dlt_name);
+ program_name, gndo->ndo_dltname);
(void)fflush(stderr);
}
i = pcap_snapshot(pd);
type = pcap_datalink(pd);
printinfo.printer = lookup_printer(type);
if (printinfo.printer == NULL) {
- dlt_name = pcap_datalink_val_to_name(type);
- if (dlt_name != NULL)
- error("unsupported data link type %s", dlt_name);
+ gndo->ndo_dltname = pcap_datalink_val_to_name(type);
+ if (gndo->ndo_dltname != NULL)
+ error("unsupported data link type %s",
+ gndo->ndo_dltname);
else
error("unsupported data link type %d", type);
}