X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/62e97d43941c1631406a7578897a509a9366dc76..9ebb84d5b7d3ba344584ae2ead7eed413305909b:/tcpdump.c diff --git a/tcpdump.c b/tcpdump.c index 9bf61bbc..bb6b88b7 100644 --- a/tcpdump.c +++ b/tcpdump.c @@ -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.248 2004-09-04 00:08:04 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.258 2005-06-03 22:08:53 guy Exp $ (LBL)"; #endif /* @@ -90,7 +90,8 @@ netdissect_options *gndo = &Gndo; #define MAX_CFLAG 1000000 #define MAX_CFLAG_CHARS 6 -int Lflag; /* list available data link types and exit */ +int dflag; /* print filter code */ +int Lflag; /* list available data link types and exit */ static int infodelay; static int infoprint; @@ -105,6 +106,7 @@ static void usage(void) __attribute__((noreturn)); static void show_dlts_and_exit(pcap_t *pd) __attribute__((noreturn)); static void print_packet(u_char *, const struct pcap_pkthdr *, const u_char *); +static void ndo_default_print(netdissect_options *, const u_char *, u_int); static void dump_packet_and_trunc(u_char *, const struct pcap_pkthdr *, const u_char *); static void dump_packet(u_char *, const struct pcap_pkthdr *, const u_char *); static void droproot(const char *, const char *); @@ -217,6 +219,39 @@ static struct printer printers[] = { #endif #ifdef DLT_APPLE_IP_OVER_IEEE1394 { ap1394_if_print, DLT_APPLE_IP_OVER_IEEE1394 }, +#endif +#ifdef DLT_JUNIPER_ATM1 + { juniper_atm1_print, DLT_JUNIPER_ATM1 }, +#endif +#ifdef DLT_JUNIPER_ATM2 + { juniper_atm2_print, DLT_JUNIPER_ATM2 }, +#endif +#ifdef DLT_JUNIPER_MFR + { juniper_mfr_print, DLT_JUNIPER_MFR }, +#endif +#ifdef DLT_JUNIPER_MLFR + { juniper_mlfr_print, DLT_JUNIPER_MLFR }, +#endif +#ifdef DLT_JUNIPER_MLPPP + { juniper_mlppp_print, DLT_JUNIPER_MLPPP }, +#endif +#ifdef DLT_JUNIPER_PPPOE + { juniper_pppoe_print, DLT_JUNIPER_PPPOE }, +#endif +#ifdef DLT_JUNIPER_PPPOE_ATM + { juniper_pppoe_atm_print, DLT_JUNIPER_PPPOE_ATM }, +#endif +#ifdef DLT_JUNIPER_GGSN + { juniper_ggsn_print, DLT_JUNIPER_GGSN }, +#endif +#ifdef DLT_JUNIPER_ES + { juniper_es_print, DLT_JUNIPER_ES }, +#endif +#ifdef DLT_JUNIPER_MONITOR + { juniper_monitor_print, DLT_JUNIPER_MONITOR }, +#endif +#ifdef DLT_JUNIPER_SERVICES + { juniper_services_print, DLT_JUNIPER_SERVICES }, #endif { NULL, 0 }, }; @@ -424,6 +459,7 @@ main(int argc, char **argv) gndo->ndo_Oflag=1; gndo->ndo_Rflag=1; gndo->ndo_dlt=-1; + gndo->ndo_default_print=ndo_default_print; gndo->ndo_printf=tcpdump_printf; gndo->ndo_error=ndo_error; gndo->ndo_warning=ndo_warning; @@ -1115,7 +1151,7 @@ dump_packet_and_trunc(u_char *user, const struct pcap_pkthdr *h, const u_char *s * larger than Cflag - the last packet written to the * file could put it over Cflag. */ - if (ftell((FILE *)dump_info->p) > Cflag) { + if (pcap_dump_ftell(dump_info->p) > Cflag) { /* * Close the current file and open a new one. */ @@ -1265,12 +1301,18 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp) /* * By default, print the specified data out in hex. */ -void -default_print(register const u_char *bp, register u_int length) +static void +ndo_default_print(netdissect_options *ndo _U_, const u_char *bp, u_int length) { ascii_print("\n\t", bp, length); /* pass on lf and identation string */ } +void +default_print(const u_char *bp, u_int length) +{ + ndo_default_print(gndo, bp, length); +} + #ifdef SIGINFO RETSIGTYPE requestinfo(int signo _U_) {