From 03014afd0377fb8957d9c87572c96a6096b14d45 Mon Sep 17 00:00:00 2001 From: fenner Date: Tue, 15 Sep 1998 19:46:59 +0000 Subject: Merge tcpdump 3.4 PR: bin/7877 --- contrib/tcpdump/addrtoname.c | 34 ++++++++++------ contrib/tcpdump/nfsfh.h | 4 +- contrib/tcpdump/parsenfsfh.c | 9 +++-- contrib/tcpdump/print-arp.c | 7 +++- contrib/tcpdump/print-atalk.c | 11 ++--- contrib/tcpdump/print-atm.c | 6 +-- contrib/tcpdump/print-bootp.c | 9 ++++- contrib/tcpdump/print-domain.c | 20 ++++++++- contrib/tcpdump/print-ether.c | 4 +- contrib/tcpdump/print-fddi.c | 7 ++-- contrib/tcpdump/print-ip.c | 16 ++++---- contrib/tcpdump/print-isoclns.c | 7 ++-- contrib/tcpdump/print-llc.c | 5 +-- contrib/tcpdump/print-nfs.c | 14 +++---- contrib/tcpdump/print-ntp.c | 6 ++- contrib/tcpdump/print-null.c | 14 ++++--- contrib/tcpdump/print-ppp.c | 89 +++++++++++++++++++++++++++++++++++------ contrib/tcpdump/print-sl.c | 55 +++++++++++++++++++++++-- contrib/tcpdump/print-sunrpc.c | 4 +- contrib/tcpdump/print-udp.c | 11 ++++- contrib/tcpdump/tcpdump.1 | 13 +++--- 21 files changed, 255 insertions(+), 90 deletions(-) (limited to 'contrib/tcpdump') diff --git a/contrib/tcpdump/addrtoname.c b/contrib/tcpdump/addrtoname.c index e6b3e41..4067f96 100644 --- a/contrib/tcpdump/addrtoname.c +++ b/contrib/tcpdump/addrtoname.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +23,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: addrtoname.c,v 1.54 96/12/05 22:10:19 leres Exp $ (LBL)"; + "@(#) $Header: addrtoname.c,v 1.61 97/06/15 13:20:18 leres Exp $ (LBL)"; #endif #include @@ -45,6 +45,12 @@ struct rtentry; #include #include #include +#ifdef HAVE_MALLOC_H +#include +#endif +#ifdef HAVE_MEMORY_H +#include +#endif #include #include #include @@ -54,6 +60,8 @@ struct rtentry; #include "interface.h" #include "addrtoname.h" #include "llc.h" +#include "savestr.h" +#include "setsignal.h" /* Forwards */ static RETSIGTYPE nohostname(int); @@ -208,16 +216,18 @@ getname(const u_char *ap) /* * Only print names when: * (1) -n was not given. - * (2) Address is foreign and -f was given. If -f was not - * present, f_netmask and f_local are 0 and the second - * test will succeed. - * (3) The host portion is not 0 (i.e., a network address). - * (4) The host portion is not broadcast. + * (2) Address is foreign and -f was given. (If -f was not + * give, f_netmask and f_local are 0 and the test + * evaluates to true) + * (3) -a was given or the host portion is not all ones + * nor all zeros (i.e. not a network or broadcast address) */ - if (!nflag && (addr & f_netmask) == f_localnet - && (addr &~ netmask) != 0 && (addr | netmask) != 0xffffffff) { + if (!nflag && + (addr & f_netmask) == f_localnet && + (aflag || + !((addr & ~netmask) == 0 || (addr | netmask) == 0xffffffff))) { if (!setjmp(getname_env)) { - (void)signal(SIGALRM, nohostname); + (void)setsignal(SIGALRM, nohostname); (void)alarm(20); hp = gethostbyaddr((char *)&addr, 4, AF_INET); (void)alarm(0); @@ -307,7 +317,7 @@ lookup_nsap(register const u_char *nsap) tp->e_nsap = (u_char *)malloc(nlen + 1); if (tp->e_nsap == NULL) error("lookup_nsap: malloc"); - memcpy(tp->e_nsap, nsap, nlen + 1); + memcpy((char *)tp->e_nsap, (char *)nsap, nlen + 1); tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp)); if (tp->e_nxt == NULL) error("lookup_nsap: calloc"); @@ -697,7 +707,7 @@ init_llcsaparray(void) * of the local network. mask is its subnet mask. */ void -init_addrtoname(int fflag, u_int32_t localnet, u_int32_t mask) +init_addrtoname(u_int32_t localnet, u_int32_t mask) { netmask = mask; if (fflag) { diff --git a/contrib/tcpdump/nfsfh.h b/contrib/tcpdump/nfsfh.h index d8e9c0d..b295bc4 100644 --- a/contrib/tcpdump/nfsfh.h +++ b/contrib/tcpdump/nfsfh.h @@ -1,5 +1,5 @@ /* - * $Header: nfsfh.h,v 1.5 96/08/20 14:33:23 leres Exp $ + * $Header: nfsfh.h,v 1.6 96/12/16 03:40:31 leres Exp $ * * nfsfh.h - NFS file handle definitions (for portable use) * @@ -29,6 +29,6 @@ typedef struct { } my_fsid; #define fsid_eq(a,b) ((a.fsid_code == b.fsid_code) &&\ - dev_eq(a.fsid_dev, b.fsid_dev)) + dev_eq(a.Fsid_dev, b.Fsid_dev)) extern void Parse_fh(caddr_t *, int, my_fsid *, ino_t *, char **, char **, int); diff --git a/contrib/tcpdump/parsenfsfh.c b/contrib/tcpdump/parsenfsfh.c index bd5e690..8a9d78a 100644 --- a/contrib/tcpdump/parsenfsfh.c +++ b/contrib/tcpdump/parsenfsfh.c @@ -9,14 +9,16 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: parsenfsfh.c,v 1.12 96/12/10 23:25:50 leres Exp $ (LBL)"; + "@(#) $Header: parsenfsfh.c,v 1.14 97/06/15 13:20:27 leres Exp $ (LBL)"; #endif #include #include #include +#ifdef HAVE_MEMORY_H #include +#endif #include #include @@ -313,13 +315,14 @@ int ourself; /* true if file handle was generated on this host */ if (sizeof(*fsidp) >= 14) { if (sizeof(*fsidp) > 14) memset((char *)fsidp, 0, sizeof(*fsidp)); - memcpy((char *)fsidp, fh, 14); /* just use the whole thing */ + /* just use the whole thing */ + memcpy((char *)fsidp, (char *)fh, 14); } else { u_int32_t tempa[4]; /* at least 16 bytes, maybe more */ memset((char *)tempa, 0, sizeof(tempa)); - memcpy((char *)tempa, fh, 14); /* ensure alignment */ + memcpy((char *)tempa, (char *)fh, 14); /* ensure alignment */ fsidp->Fsid_dev.Minor = tempa[0] + (tempa[1]<<1); fsidp->Fsid_dev.Major = tempa[2] + (tempa[3]<<1); fsidp->fsid_code = 0; diff --git a/contrib/tcpdump/print-arp.c b/contrib/tcpdump/print-arp.c index c9533c7..c7578fe 100644 --- a/contrib/tcpdump/print-arp.c +++ b/contrib/tcpdump/print-arp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-arp.c,v 1.41 96/10/27 14:54:50 leres Exp $ (LBL)"; + "@(#) $Header: print-arp.c,v 1.43 97/06/15 13:20:27 leres Exp $ (LBL)"; #endif #include @@ -38,6 +38,9 @@ struct rtentry; #include #include +#ifdef HAVE_MEMORY_H +#include +#endif #include #include diff --git a/contrib/tcpdump/print-atalk.c b/contrib/tcpdump/print-atalk.c index c8e1c10..ba369d9 100644 --- a/contrib/tcpdump/print-atalk.c +++ b/contrib/tcpdump/print-atalk.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -23,7 +23,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-atalk.c,v 1.45 96/12/10 23:24:07 leres Exp $ (LBL)"; + "@(#) $Header: print-atalk.c,v 1.48 97/05/28 12:50:58 leres Exp $ (LBL)"; #endif #include @@ -55,6 +55,7 @@ struct rtentry; #include "ethertype.h" #include "extract.h" /* must come after interface.h */ #include "appletalk.h" +#include "savestr.h" static struct tok type2str[] = { { ddpRTMP, "rtmp" }, @@ -412,11 +413,11 @@ print_cstring(register const char *cp, register const u_char *ep) length = *cp++; /* Spec says string can be at most 32 bytes long */ - if (length < 0 || length > 32) { - (void)printf("[len=%d]", length); + if (length > 32) { + (void)printf("[len=%u]", length); return (0); } - while (--length >= 0) { + while ((int)--length >= 0) { if (cp >= (char *)ep) { fputs(tstr, stdout); return (0); diff --git a/contrib/tcpdump/print-atm.c b/contrib/tcpdump/print-atm.c index 2181830..c4629e2 100644 --- a/contrib/tcpdump/print-atm.c +++ b/contrib/tcpdump/print-atm.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1994, 1995, 1996 + * Copyright (c) 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -20,7 +20,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-atm.c,v 1.8 96/09/26 23:36:41 leres Exp $ (LBL)"; + "@(#) $Header: print-atm.c,v 1.9 97/05/28 12:52:40 leres Exp $ (LBL)"; #endif #include @@ -48,9 +48,9 @@ struct rtentry; #include #include +#include "interface.h" #include "addrtoname.h" #include "ethertype.h" -#include "interface.h" /* * This is the top level routine of the printer. 'p' is the points diff --git a/contrib/tcpdump/print-bootp.c b/contrib/tcpdump/print-bootp.c index 425c11c..c9eb72b 100644 --- a/contrib/tcpdump/print-bootp.c +++ b/contrib/tcpdump/print-bootp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 + * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -22,7 +22,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-bootp.c,v 1.43 96/09/26 23:36:42 leres Exp $ (LBL)"; + "@(#) $Header: print-bootp.c,v 1.46 98/07/18 13:33:58 leres Exp $ (LBL)"; #endif #include @@ -39,6 +39,9 @@ struct rtentry; #include #include +#ifdef HAVE_MEMORY_H +#include +#endif #include #include @@ -145,6 +148,7 @@ bootp_print(register const u_char *cp, u_int length, fputs(tstr + 1, stdout); return; } + putchar('"'); } TCHECK2(bp->bp_sname[0], 1); /* check first char only */ if (*bp->bp_file) { @@ -154,6 +158,7 @@ bootp_print(register const u_char *cp, u_int length, fputs(tstr + 1, stdout); return; } + putchar('"'); } /* Decode the vendor buffer */ diff --git a/contrib/tcpdump/print-domain.c b/contrib/tcpdump/print-domain.c index 31c7b51..7eb2e0c 100644 --- a/contrib/tcpdump/print-domain.c +++ b/contrib/tcpdump/print-domain.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-domain.c,v 1.37 96/12/10 23:21:06 leres Exp $ (LBL)"; + "@(#) $Header: print-domain.c,v 1.39 97/06/13 12:56:28 leres Exp $ (LBL)"; #endif #include @@ -44,8 +44,12 @@ struct rtentry; #include #include +#ifdef NOERROR #undef NOERROR /* Solaris sucks */ +#endif +#ifdef NOERROR #undef T_UNSPEC /* SINIX does too */ +#endif #include #include @@ -216,6 +220,18 @@ static struct tok type2str[] = { { T_GPOS, "GPOS" }, { T_AAAA, "AAAA" }, { T_LOC , "LOC " }, +#ifndef T_UINFO +#define T_UINFO 100 +#endif + { T_UINFO, "UINFO" }, +#ifndef T_UID +#define T_UID 101 +#endif + { T_UID, "UID" }, +#ifndef T_GID +#define T_GID 102 +#endif + { T_GID, "GID" }, { T_UNSPEC, "UNSPEC" }, { T_UNSPECA, "UNSPECA" }, { T_AXFR, "AXFR" }, diff --git a/contrib/tcpdump/print-ether.c b/contrib/tcpdump/print-ether.c index cabbe2b..dd7bf59 100644 --- a/contrib/tcpdump/print-ether.c +++ b/contrib/tcpdump/print-ether.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -20,7 +20,7 @@ */ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-ether.c,v 1.43 96/09/26 23:36:43 leres Exp $ (LBL)"; + "@(#) $Header: print-ether.c,v 1.44 97/05/26 17:18:13 leres Exp $ (LBL)"; #endif #include diff --git a/contrib/tcpdump/print-fddi.c b/contrib/tcpdump/print-fddi.c index 1714735..1f3dde6 100644 --- a/contrib/tcpdump/print-fddi.c +++ b/contrib/tcpdump/print-fddi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-fddi.c,v 1.33 96/12/10 23:20:49 leres Exp $ (LBL)"; + "@(#) $Header: print-fddi.c,v 1.36 97/05/26 17:13:35 leres Exp $ (LBL)"; #endif #ifdef HAVE_FDDI @@ -45,7 +45,6 @@ struct rtentry; #include #include #include -#include #include #include @@ -58,7 +57,7 @@ struct rtentry; /* * Some FDDI interfaces use bit-swapped addresses. */ -#if defined(ultrix) || defined(__alpha) +#if defined(ultrix) || defined(__alpha) || defined(__bsdi) int fddi_bitswap = 0; #else int fddi_bitswap = 1; diff --git a/contrib/tcpdump/print-ip.c b/contrib/tcpdump/print-ip.c index fdad8e2..ebe06a5 100644 --- a/contrib/tcpdump/print-ip.c +++ b/contrib/tcpdump/print-ip.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-ip.c,v 1.62 96/12/10 23:20:31 leres Exp $ (LBL)"; + "@(#) $Header: print-ip.c,v 1.66 97/05/28 12:51:43 leres Exp $ (LBL)"; #endif #include @@ -37,6 +37,9 @@ static const char rcsid[] = #include #include +#ifdef HAVE_MALLOC_H +#include +#endif #include #include #include @@ -445,18 +448,15 @@ ip_print(register const u_char *bp, register u_int length) igmp_print(cp, len, (const u_char *)ip); break; -#ifndef IPPROTO_IPIP -#define IPPROTO_IPIP 4 -#endif - case IPPROTO_IPIP: - /* ip-in-ip encapsulation */ + case 4: + /* DVMRP multicast tunnel (ip-in-ip encapsulation) */ if (vflag) (void)printf("%s > %s: ", ipaddr_string(&ip->ip_src), ipaddr_string(&ip->ip_dst)); ip_print(cp, len); if (! vflag) { - printf(" (encap)"); + printf(" (ipip)"); return; } break; diff --git a/contrib/tcpdump/print-isoclns.c b/contrib/tcpdump/print-isoclns.c index 376cbba..7af4f8f 100644 --- a/contrib/tcpdump/print-isoclns.c +++ b/contrib/tcpdump/print-isoclns.c @@ -23,7 +23,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-isoclns.c,v 1.14 96/12/10 23:26:56 leres Exp $ (LBL)"; + "@(#) $Header: print-isoclns.c,v 1.15 96/12/31 21:27:41 leres Exp $ (LBL)"; #endif #include @@ -283,7 +283,7 @@ esis_print(const u_char *p, u_int length) printf(" bad pkt!"); else { printf(" too short for esis header %d:", li); - while (--length >= 0) + while (--length != 0) printf("%02X", *p++); } return; @@ -663,7 +663,8 @@ osi_cksum(register const u_char *p, register int len, u_char *off) if ((off[0] == 0) && (off[1] == 0)) return 0; - while (--len >= 0) { + off[0] = off[1] = 0; + while ((int)--len >= 0) { c0 += *p++; c0 %= 255; c1 += c0; diff --git a/contrib/tcpdump/print-llc.c b/contrib/tcpdump/print-llc.c index b1f17f9..183c357 100644 --- a/contrib/tcpdump/print-llc.c +++ b/contrib/tcpdump/print-llc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -24,7 +24,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-llc.c,v 1.22 96/12/10 23:23:37 leres Exp $"; + "@(#) $Header: print-llc.c,v 1.24 97/01/01 20:56:48 leres Exp $"; #endif #include @@ -34,7 +34,6 @@ static const char rcsid[] = #include #include -#include #include #include diff --git a/contrib/tcpdump/print-nfs.c b/contrib/tcpdump/print-nfs.c index fd71a46..bfaf438 100644 --- a/contrib/tcpdump/print-nfs.c +++ b/contrib/tcpdump/print-nfs.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-nfs.c,v 1.63 96/12/10 23:18:07 leres Exp $ (LBL)"; + "@(#) $Header: print-nfs.c,v 1.65 97/08/17 13:24:22 leres Exp $ (LBL)"; #endif #include @@ -247,7 +247,7 @@ nfsreply_print(register const u_char *bp, u_int length, ip = (const struct ip *)bp2; if (!nflag) - (void)printf("%s.nfs > %s.%x: reply %s %d", + (void)printf("%s.nfs > %s.%u: reply %s %d", ipaddr_string(&ip->ip_src), ipaddr_string(&ip->ip_dst), (u_int32_t)ntohl(rp->rm_xid), @@ -255,7 +255,7 @@ nfsreply_print(register const u_char *bp, u_int length, "ok":"ERR", length); else - (void)printf("%s.%x > %s.%x: reply %s %d", + (void)printf("%s.%u > %s.%u: reply %s %d", ipaddr_string(&ip->ip_src), NFS_PORT, ipaddr_string(&ip->ip_dst), @@ -383,13 +383,13 @@ nfsreq_print(register const u_char *bp, u_int length, rp = (const struct rpc_msg *)bp; ip = (const struct ip *)bp2; if (!nflag) - (void)printf("%s.%x > %s.nfs: %d", + (void)printf("%s.%u > %s.nfs: %d", ipaddr_string(&ip->ip_src), (u_int32_t)ntohl(rp->rm_xid), ipaddr_string(&ip->ip_dst), length); else - (void)printf("%s.%x > %s.%x: %d", + (void)printf("%s.%u > %s.%u: %d", ipaddr_string(&ip->ip_src), (u_int32_t)ntohl(rp->rm_xid), ipaddr_string(&ip->ip_dst), @@ -758,7 +758,7 @@ xid_map_find(const struct rpc_msg *rp, const struct ip *ip, u_int32_t *proc, } while (i != xid_map_hint); /* search failed */ - return (-1); + return (0); } /* diff --git a/contrib/tcpdump/print-ntp.c b/contrib/tcpdump/print-ntp.c index 926691c..696bb42 100644 --- a/contrib/tcpdump/print-ntp.c +++ b/contrib/tcpdump/print-ntp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,7 +25,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-ntp.c,v 1.25 96/11/05 13:30:37 leres Exp $ (LBL)"; + "@(#) $Header: print-ntp.c,v 1.26 97/06/13 12:56:37 leres Exp $ (LBL)"; #endif #include @@ -47,7 +47,9 @@ struct rtentry; #include "interface.h" #include "addrtoname.h" +#ifdef MODEMASK #undef MODEMASK /* Solaris sucks */ +#endif #include "ntp.h" static void p_sfix(const struct s_fixedpt *); diff --git a/contrib/tcpdump/print-null.c b/contrib/tcpdump/print-null.c index cf845d4..f1469ab 100644 --- a/contrib/tcpdump/print-null.c +++ b/contrib/tcpdump/print-null.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1991, 1993, 1994, 1995, 1996 + * Copyright (c) 1991, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-null.c,v 1.22 96/12/10 23:18:58 leres Exp $ (LBL)"; + "@(#) $Header: print-null.c,v 1.24 97/05/28 12:52:47 leres Exp $ (LBL)"; #endif #include @@ -50,15 +50,19 @@ struct rtentry; #include #include -#include "addrtoname.h" #include "interface.h" - -#define NULL_HDRLEN 4 +#include "addrtoname.h" #ifndef AF_NS #define AF_NS 6 /* XEROX NS protocols */ #endif +/* + * The DLT_NULL packet header is 4 bytes long. It contains a network + * order 32 bit integer that specifies the family, e.g. AF_INET + */ +#define NULL_HDRLEN 4 + static void null_print(const u_char *p, const struct ip *ip, u_int length) { diff --git a/contrib/tcpdump/print-ppp.c b/contrib/tcpdump/print-ppp.c index bd5e805..285efe8 100644 --- a/contrib/tcpdump/print-ppp.c +++ b/contrib/tcpdump/print-ppp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996 + * Copyright (c) 1990, 1991, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,10 +21,9 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-ppp.c,v 1.24 96/12/10 23:23:12 leres Exp $ (LBL)"; + "@(#) $Header: print-ppp.c,v 1.26 97/06/12 14:21:29 leres Exp $ (LBL)"; #endif -#ifdef PPP #include #include #include @@ -44,7 +43,6 @@ struct rtentry; #include #include #include -#include #include #include @@ -53,6 +51,7 @@ struct rtentry; #include #include "interface.h" #include "addrtoname.h" +#include "ppp.h" struct protonames { u_short protocol; @@ -196,6 +195,7 @@ static int handle_chap(const u_char *p, int length); static int handle_ipcp(const u_char *p, int length); static int handle_pap(const u_char *p, int length); +/* Standard PPP printer */ void ppp_hdlc_print(const u_char *p, int length) { @@ -532,17 +532,80 @@ ppp_if_print(u_char *user, const struct pcap_pkthdr *h, out: putchar('\n'); } -#else -#include -#include -#include +/* proto type to string mapping */ +static struct tok ptype2str[] = { + { PPP_VJC, "VJC" }, + { PPP_VJNC, "VJNC" }, + { PPP_OSI, "OSI" }, + { PPP_LCP, "LCP" }, + { PPP_IPCP, "IPCP" }, + { 0, NULL } +}; -#include "interface.h" +#define PPP_BSDI_HDRLEN 24 + +/* BSD/OS specific PPP printer */ void -ppp_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) +ppp_bsdos_if_print(u_char *user, const struct pcap_pkthdr *h, + register const u_char *p) { - error("not configured for ppp"); - /* NOTREACHED */ + register u_int length = h->len; + register u_int caplen = h->caplen; + register int hdrlength; + u_short ptype; + + ts_print(&h->ts); + + if (caplen < PPP_BSDI_HDRLEN) { + printf("[|ppp]"); + goto out; + } + + /* + * Some printers want to get back at the link level addresses, + * and/or check that they're not walking off the end of the packet. + * Rather than pass them all the way down, we set these globals. + */ + packetp = p; + snapend = p + caplen; + hdrlength = 0; + + if (p[0] == PPP_ADDRESS && p[1] == PPP_CONTROL) { + if (eflag) + printf("%02x %02x ", p[0], p[1]); + p += 2; + hdrlength = 2; + } + + if (eflag) + printf("%d ", length); + /* Retrieve the protocol type */ + if (*p & 01) { + /* Compressed protocol field */ + ptype = *p; + if (eflag) + printf("%02x ", ptype); + p++; + hdrlength += 1; + } else { + /* Un-compressed protocol field */ + ptype = ntohs(*(u_short *)p); + if (eflag) + printf("%04x ", ptype); + p += 2; + hdrlength += 2; + } + + length -= hdrlength; + + if (ptype == PPP_IP) + ip_print(p, length); + else + printf("%s ", tok2str(ptype2str, "proto-#%d", ptype)); + + if (xflag) + default_print((const u_char *)p, caplen - hdrlength); +out: + putchar('\n'); } -#endif diff --git a/contrib/tcpdump/print-sl.c b/contrib/tcpdump/print-sl.c index 0c6cd8d..7e52352 100644 --- a/contrib/tcpdump/print-sl.c +++ b/contrib/tcpdump/print-sl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1989, 1990, 1991, 1993, 1994, 1995, 1996 + * Copyright (c) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-sl.c,v 1.41 96/12/10 23:19:42 leres Exp $ (LBL)"; + "@(#) $Header: print-sl.c,v 1.42 97/06/12 14:21:35 leres Exp $ (LBL)"; #endif #ifdef HAVE_NET_SLIP_H @@ -54,7 +54,6 @@ struct rtentry; #include #include #include -#include #include #include "interface.h" @@ -75,6 +74,8 @@ static void compressed_sl_print(const u_char *, const struct ip *, u_int, int); #define CHDR_LEN (SLC_BPFHDR - SLC_BPFHDRLEN) #endif +/* XXX needs more hacking to work right */ + void sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) { @@ -111,6 +112,45 @@ sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) putchar('\n'); } + +void +sl_bsdos_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) +{ + register u_int caplen = h->caplen; + register u_int length = h->len; + register const struct ip *ip; + + ts_print(&h->ts); + + if (caplen < SLIP_HDRLEN) { + printf("[|slip]"); + goto out; + } + /* + * Some printers want to get back at the link level addresses, + * and/or check that they're not walking off the end of the packet. + * Rather than pass them all the way down, we set these globals. + */ + packetp = p; + snapend = p + caplen; + + length -= SLIP_HDRLEN; + + ip = (struct ip *)(p + SLIP_HDRLEN); + +#ifdef notdef + if (eflag) + sliplink_print(p, ip, length); +#endif + + ip_print((u_char *)ip, length); + + if (xflag) + default_print((u_char *)ip, caplen - SLIP_HDRLEN); + out: + putchar('\n'); +} + static void sliplink_print(register const u_char *p, register const struct ip *ip, register u_int length) @@ -247,6 +287,7 @@ compressed_sl_print(const u_char *chdr, const struct ip *ip, #include #include "interface.h" + void sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) { @@ -254,4 +295,12 @@ sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) error("not configured for slip"); /* NOTREACHED */ } + +void +sl_bsdos_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) +{ + + error("not configured for slip"); + /* NOTREACHED */ +} #endif diff --git a/contrib/tcpdump/print-sunrpc.c b/contrib/tcpdump/print-sunrpc.c index 01c485b..ecc4426 100644 --- a/contrib/tcpdump/print-sunrpc.c +++ b/contrib/tcpdump/print-sunrpc.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-sunrpc.c,v 1.25 96/09/26 23:36:49 leres Exp $ (LBL)"; + "@(#) $Header: print-sunrpc.c,v 1.26 96/12/31 21:27:43 leres Exp $ (LBL)"; #endif #include @@ -119,7 +119,7 @@ progstr(prog) { register struct rpcent *rp; static char buf[32]; - static lastprog = 0; + static int lastprog = 0; if (lastprog != 0 && prog == lastprog) return (buf); diff --git a/contrib/tcpdump/print-udp.c b/contrib/tcpdump/print-udp.c index a0914eb..c75446f 100644 --- a/contrib/tcpdump/print-udp.c +++ b/contrib/tcpdump/print-udp.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 + * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997 * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] = - "@(#) $Header: print-udp.c,v 1.58 96/12/10 23:22:07 leres Exp $ (LBL)"; + "@(#) $Header: print-udp.c,v 1.60 97/07/27 21:58:48 leres Exp $ (LBL)"; #endif #include @@ -35,9 +35,16 @@ static const char rcsid[] = #include #include +#ifdef NOERROR #undef NOERROR /* Solaris sucks */ +#endif +#ifdef T_UNSPEC #undef T_UNSPEC /* SINIX does too */ +#endif #include +#ifdef SEGSIZE +#undef SEGSIZE +#endif #include #include diff --git a/contrib/tcpdump/tcpdump.1 b/contrib/tcpdump/tcpdump.1 index 6b07f45..a7775eb 100644 --- a/contrib/tcpdump/tcpdump.1 +++ b/contrib/tcpdump/tcpdump.1 @@ -1,6 +1,6 @@ -.\" @(#) $Header: tcpdump.1,v 1.65 96/11/29 01:03:01 leres Exp $ (LBL) +.\" @(#) $Header: tcpdump.1,v 1.67 97/06/30 16:31:50 leres Exp $ (LBL) .\" -.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996 +.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994, 1995, 1996, 1997 .\" The Regents of the University of California. All rights reserved. .\" All rights reserved. .\" @@ -20,14 +20,14 @@ .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. .\" -.TH TCPDUMP 1 "29 November 1996" +.TH TCPDUMP 1 "30 June 1997" .SH NAME tcpdump \- dump traffic on a network .SH SYNOPSIS .na .B tcpdump [ -.B \-deflnNOpqStvx +.B \-adeflnNOpqStvx ] [ .B \-c .I count @@ -72,7 +72,7 @@ that match the boolean \fIexpression\fP. To run .I tcpdump you must have read access to -.I /dev/net +.I /dev/nit or .IR /dev/bpf* . .B Under Solaris with dlpi: @@ -94,6 +94,9 @@ You must have read access to .IR /dev/bpf* . .SH OPTIONS .TP +.B \-a +Attempt to convert network and broadcast addresses to names. +.TP .B \-c Exit after receiving \fIcount\fP packets. .TP -- cgit v1.1