summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorpst <pst@FreeBSD.org>1996-08-19 21:57:10 +0000
committerpst <pst@FreeBSD.org>1996-08-19 21:57:10 +0000
commit71a339d4dd8a5779f1a68ee0dc56bed512ab604a (patch)
treef13d086b40ce65ece3626b5d8f16b7a644facd9b /usr.sbin
parente223e786316986993ce0a3e61d5a4a445ffc1387 (diff)
downloadFreeBSD-src-71a339d4dd8a5779f1a68ee0dc56bed512ab604a.zip
FreeBSD-src-71a339d4dd8a5779f1a68ee0dc56bed512ab604a.tar.gz
Grab tcpdump out of src/contrib/tcpdump
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/tcpdump/tcpdump/Makefile31
-rw-r--r--usr.sbin/tcpdump/tcpdump/VERSION1
-rw-r--r--usr.sbin/tcpdump/tcpdump/addrtoname.c722
-rw-r--r--usr.sbin/tcpdump/tcpdump/addrtoname.h35
-rw-r--r--usr.sbin/tcpdump/tcpdump/appletalk.h167
-rw-r--r--usr.sbin/tcpdump/tcpdump/bootp.h109
-rw-r--r--usr.sbin/tcpdump/tcpdump/bpf_dump.c65
-rw-r--r--usr.sbin/tcpdump/tcpdump/decnet.h480
-rw-r--r--usr.sbin/tcpdump/tcpdump/ethertype.h73
-rw-r--r--usr.sbin/tcpdump/tcpdump/extract.h49
-rw-r--r--usr.sbin/tcpdump/tcpdump/fddi.h76
-rw-r--r--usr.sbin/tcpdump/tcpdump/interface.h150
-rw-r--r--usr.sbin/tcpdump/tcpdump/ipx.h29
-rw-r--r--usr.sbin/tcpdump/tcpdump/llc.h120
-rw-r--r--usr.sbin/tcpdump/tcpdump/md.h31
-rw-r--r--usr.sbin/tcpdump/tcpdump/mib.h1256
-rw-r--r--usr.sbin/tcpdump/tcpdump/nfs.h446
-rw-r--r--usr.sbin/tcpdump/tcpdump/nfsfh.h34
-rw-r--r--usr.sbin/tcpdump/tcpdump/ntp.h117
-rw-r--r--usr.sbin/tcpdump/tcpdump/os.h67
-rw-r--r--usr.sbin/tcpdump/tcpdump/ospf.h223
-rw-r--r--usr.sbin/tcpdump/tcpdump/parsenfsfh.c426
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-arp.c121
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-atalk.c578
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-bootp.c357
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-decnet.c763
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-domain.c276
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-egp.c356
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ether.c196
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-fddi.c351
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-icmp.c222
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ip.c473
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ipx.c212
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-isoclns.c315
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-krb.c294
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-llc.c196
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-nfs.c1544
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ntp.c285
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-null.c111
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ospf.c578
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-ppp.c160
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-rip.c117
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-sl.c243
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-snmp.c1032
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-sunrpc.c117
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-tcp.c307
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-tftp.c145
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-udp.c271
-rw-r--r--usr.sbin/tcpdump/tcpdump/print-wb.c445
-rw-r--r--usr.sbin/tcpdump/tcpdump/tcpdump.11179
-rw-r--r--usr.sbin/tcpdump/tcpdump/tcpdump.c413
-rw-r--r--usr.sbin/tcpdump/tcpdump/util.c326
52 files changed, 20 insertions, 16670 deletions
diff --git a/usr.sbin/tcpdump/tcpdump/Makefile b/usr.sbin/tcpdump/tcpdump/Makefile
index 8bf0bd8..cc28c77 100644
--- a/usr.sbin/tcpdump/tcpdump/Makefile
+++ b/usr.sbin/tcpdump/tcpdump/Makefile
@@ -1,22 +1,31 @@
# $Id: Makefile,v 1.10 1995/08/29 19:48:10 wollman Exp $
PROG= tcpdump
-CFLAGS+=-DCSLIP -DPPP -DFDDI -DETHER_SERVICE
+CFLAGS+=-DHAVE_FCNTL_H=1 -DHAVE_NET_SLIP_H=1 -DTIME_WITH_SYS_TIME=1 \
+ -DHAVE_ETHER_NTOA=1 -DHAVE_SETLINEBUF=1 -DSTDC_HEADERS=1 \
+ -DRETSIGTYPE=void -DRETSIGVAL= -DHAVE_SOCKADDR_SA_LEN=1 \
+ -DHAVE_TM_GMTOFF=1 -DLBL_ALIGN=1 -DPPP -DHAVE_FDDI
MAN1= tcpdump.1
-SRCS= version.c addrtoname.c bpf_dump.c parsenfsfh.c \
- print-arp.c print-atalk.c print-bootp.c print-decnet.c print-domain.c \
- print-egp.c print-ether.c print-fddi.c print-icmp.c print-ip.c \
- print-ipx.c print-isoclns.c print-llc.c print-krb.c \
- print-nfs.c print-ntp.c print-null.c print-ospf.c print-ppp.c \
- print-rip.c print-sl.c print-snmp.c print-sunrpc.c print-tcp.c \
- print-tftp.c print-udp.c print-wb.c tcpdump.c \
- util.c
+SRCS= version.c tcpdump.c addrtoname.c \
+ print-ether.c print-ip.c print-arp.c print-tcp.c \
+ print-udp.c print-atalk.c print-domain.c print-tftp.c \
+ print-bootp.c print-nfs.c print-icmp.c print-igrp.c \
+ print-sl.c print-ppp.c print-rip.c print-snmp.c \
+ print-ntp.c print-null.c print-egp.c print-ospf.c \
+ print-fddi.c print-llc.c print-sunrpc.c print-wb.c \
+ print-decnet.c print-isoclns.c print-ipx.c \
+ print-atm.c print-dvmrp.c print-pim.c print-krb.c \
+ util.c machdep.c bpf_dump.c parsenfsfh.c
CLEANFILES+= version.c
DPADD+= ${LIBL} ${LIBPCAP}
LDADD+= -ll -lpcap
-version.c: VERSION
+DISTDIR?= ${.CURDIR}/../../contrib/tcpdump
+CFLAGS+= -I${DISTDIR}/lbl
+.PATH: ${DISTDIR}
+
+version.c: ${DISTDIR}/VERSION
rm -f version.c ; \
- sed 's/.*/char version[] = "&";/' $(.CURDIR)/VERSION > version.c
+ sed 's/.*/char version[] = "&";/' ${DISTDIR}/VERSION > version.c
.include <bsd.prog.mk>
diff --git a/usr.sbin/tcpdump/tcpdump/VERSION b/usr.sbin/tcpdump/tcpdump/VERSION
deleted file mode 100644
index 9f55b2c..0000000
--- a/usr.sbin/tcpdump/tcpdump/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-3.0
diff --git a/usr.sbin/tcpdump/tcpdump/addrtoname.c b/usr.sbin/tcpdump/tcpdump/addrtoname.c
deleted file mode 100644
index a2eb27d..0000000
--- a/usr.sbin/tcpdump/tcpdump/addrtoname.c
+++ /dev/null
@@ -1,722 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Internet, ethernet, port, and protocol string to address
- * and address to string conversion routines
- */
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/addrtoname.c,v 1.2 1995/03/08 12:52:07 olah Exp $ (LBL)";
-#endif
-
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/time.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-
-#include <arpa/inet.h>
-
-#include <ctype.h>
-#include <netdb.h>
-#include <pcap.h>
-#include <pcap-namedb.h>
-#include <signal.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <unistd.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "llc.h"
-
-static SIGRET nohostname(int);
-#ifdef ETHER_SERVICE
-struct ether_addr;
-extern int ether_ntohost(char *, struct ether_addr *);
-#endif
-
-/*
- * hash tables for whatever-to-name translations
- */
-
-#define HASHNAMESIZE 4096
-
-struct hnamemem {
- u_int32 addr;
- char *name;
- struct hnamemem *nxt;
-};
-
-struct hnamemem hnametable[HASHNAMESIZE];
-struct hnamemem tporttable[HASHNAMESIZE];
-struct hnamemem uporttable[HASHNAMESIZE];
-struct hnamemem eprototable[HASHNAMESIZE];
-struct hnamemem dnaddrtable[HASHNAMESIZE];
-struct hnamemem llcsaptable[HASHNAMESIZE];
-
-struct enamemem {
- u_short e_addr0;
- u_short e_addr1;
- u_short e_addr2;
- char *e_name;
- u_char *e_nsap; /* used only for nsaptable[] */
- struct enamemem *e_nxt;
-};
-
-struct enamemem enametable[HASHNAMESIZE];
-struct enamemem nsaptable[HASHNAMESIZE];
-
-struct protoidmem {
- u_long p_oui;
- u_short p_proto;
- char *p_name;
- struct protoidmem *p_nxt;
-};
-
-struct protoidmem protoidtable[HASHNAMESIZE];
-
-/*
- * A faster replacement for inet_ntoa().
- */
-char *
-intoa(u_int32 addr)
-{
- register char *cp;
- register u_int byte;
- register int n;
- static char buf[sizeof(".xxx.xxx.xxx.xxx")];
-
- NTOHL(addr);
- cp = &buf[sizeof buf];
- *--cp = '\0';
-
- n = 4;
- do {
- byte = addr & 0xff;
- *--cp = byte % 10 + '0';
- byte /= 10;
- if (byte > 0) {
- *--cp = byte % 10 + '0';
- byte /= 10;
- if (byte > 0)
- *--cp = byte + '0';
- }
- *--cp = '.';
- addr >>= 8;
- } while (--n > 0);
-
- return cp + 1;
-}
-
-static u_int32 f_netmask;
-static u_int32 f_localnet;
-static u_int32 netmask;
-
-/*
- * "getname" is written in this atrocious way to make sure we don't
- * wait forever while trying to get hostnames from yp.
- */
-#include <setjmp.h>
-
-jmp_buf getname_env;
-
-static SIGRET
-nohostname(int signo)
-{
- longjmp(getname_env, 1);
-}
-
-/*
- * Return a name for the IP address pointed to by ap. This address
- * is assumed to be in network byte order.
- */
-char *
-getname(const u_char *ap)
-{
- register struct hostent *hp;
- register char *cp;
- u_int32 addr;
- static struct hnamemem *p; /* static for longjmp() */
-
-#ifndef TCPDUMP_ALIGN
- addr = *(const u_int32 *)ap;
-#else
- /*
- * Deal with alignment.
- */
- switch ((int)ap & 3) {
-
- case 0:
- addr = *(u_int32 *)ap;
- break;
-
- case 2:
-#if BYTE_ORDER == LITTLE_ENDIAN
- addr = ((u_int32)*(u_short *)(ap + 2) << 16) |
- (u_int32)*(u_short *)ap;
-#else
- addr = ((u_int32)*(u_short *)ap << 16) |
- (u_int32)*(u_short *)(ap + 2);
-#endif
- break;
-
- default:
-#if BYTE_ORDER == LITTLE_ENDIAN
- addr = ((u_int32)ap[0] << 24) |
- ((u_int32)ap[1] << 16) |
- ((u_int32)ap[2] << 8) |
- (u_int32)ap[3];
-#else
- addr = ((u_int32)ap[3] << 24) |
- ((u_int32)ap[2] << 16) |
- ((u_int32)ap[1] << 8) |
- (u_int32)ap[0];
-#endif
- break;
- }
-#endif
- p = &hnametable[addr & (HASHNAMESIZE-1)];
- for (; p->nxt; p = p->nxt) {
- if (p->addr == addr)
- return (p->name);
- }
- p->addr = addr;
- p->nxt = (struct hnamemem *)calloc(1, sizeof (*p));
-
- /*
- * 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.
- */
- if (!nflag && (addr & f_netmask) == f_localnet
- && (addr &~ netmask) != 0 && (addr | netmask) != 0xffffffff) {
- if (!setjmp(getname_env)) {
- (void)signal(SIGALRM, nohostname);
- (void)alarm(20);
- hp = gethostbyaddr((char *)&addr, 4, AF_INET);
- (void)alarm(0);
- if (hp) {
- char *dotp;
-
- p->name = savestr(hp->h_name);
- if (Nflag) {
- /* Remove domain qualifications */
- dotp = strchr(p->name, '.');
- if (dotp)
- *dotp = 0;
- }
- return (p->name);
- }
- }
- }
- cp = intoa(addr);
- p->name = savestr(cp);
- return (p->name);
-}
-
-static char hex[] = "0123456789abcdef";
-
-
-/* Find the hash node that corresponds the ether address 'ep'. */
-
-static inline struct enamemem *
-lookup_emem(const u_char *ep)
-{
- register u_int i, j, k;
- struct enamemem *tp;
-
- k = (ep[0] << 8) | ep[1];
- j = (ep[2] << 8) | ep[3];
- i = (ep[4] << 8) | ep[5];
-
- tp = &enametable[(i ^ j) & (HASHNAMESIZE-1)];
- while (tp->e_nxt)
- if (tp->e_addr0 == i &&
- tp->e_addr1 == j &&
- tp->e_addr2 == k)
- return tp;
- else
- tp = tp->e_nxt;
- tp->e_addr0 = i;
- tp->e_addr1 = j;
- tp->e_addr2 = k;
- tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp));
-
- return tp;
-}
-
-/* Find the hash node that corresponds the NSAP 'nsap'. */
-
-static inline struct enamemem *
-lookup_nsap(register const u_char *nsap)
-{
- register u_int i, j, k;
- int nlen = *nsap;
- struct enamemem *tp;
- const u_char *ensap = nsap + nlen - 6;
-
- if (nlen > 6) {
- k = (ensap[0] << 8) | ensap[1];
- j = (ensap[2] << 8) | ensap[3];
- i = (ensap[4] << 8) | ensap[5];
- }
- else
- i = j = k = 0;
-
- tp = &nsaptable[(i ^ j) & (HASHNAMESIZE-1)];
- while (tp->e_nxt)
- if (tp->e_addr0 == i &&
- tp->e_addr1 == j &&
- tp->e_addr2 == k &&
- tp->e_nsap[0] == nlen &&
- bcmp((char *)&(nsap[1]),
- (char *)&(tp->e_nsap[1]), nlen) == 0)
- return tp;
- else
- tp = tp->e_nxt;
- tp->e_addr0 = i;
- tp->e_addr1 = j;
- tp->e_addr2 = k;
- tp->e_nsap = (u_char *) calloc(1, nlen + 1);
- bcopy(nsap, tp->e_nsap, nlen + 1);
- tp->e_nxt = (struct enamemem *)calloc(1, sizeof(*tp));
-
- return tp;
-}
-
-/* Find the hash node that corresponds the protoid 'pi'. */
-
-static inline struct protoidmem *
-lookup_protoid(const u_char *pi)
-{
- register u_int i, j;
- struct protoidmem *tp;
-
- /* 5 octets won't be aligned */
- i = (((pi[0] << 8) + pi[1]) << 8) + pi[2];
- j = (pi[3] << 8) + pi[4];
- /* XXX should be endian-insensitive, but do big-endian testing XXX */
-
- tp = &protoidtable[(i ^ j) & (HASHNAMESIZE-1)];
- while (tp->p_nxt)
- if (tp->p_oui == i && tp->p_proto == j)
- return tp;
- else
- tp = tp->p_nxt;
- tp->p_oui = i;
- tp->p_proto = j;
- tp->p_nxt = (struct protoidmem *)calloc(1, sizeof(*tp));
-
- return tp;
-}
-
-char *
-etheraddr_string(register const u_char *ep)
-{
- register u_int i, j;
- register char *cp;
- register struct enamemem *tp;
-
- tp = lookup_emem(ep);
- if (tp->e_name)
- return (tp->e_name);
-#ifdef ETHER_SERVICE
- if (!nflag) {
- char buf[128];
- if (ether_ntohost(buf, (struct ether_addr *)ep) == 0) {
- tp->e_name = savestr(buf);
- return (tp->e_name);
- }
- }
-#endif
- tp->e_name = cp = (char *)malloc(sizeof("00:00:00:00:00:00"));
-
- if ((j = *ep >> 4) != 0)
- *cp++ = hex[j];
- *cp++ = hex[*ep++ & 0xf];
- for (i = 5; (int)--i >= 0;) {
- *cp++ = ':';
- if ((j = *ep >> 4) != 0)
- *cp++ = hex[j];
- *cp++ = hex[*ep++ & 0xf];
- }
- *cp = '\0';
- return (tp->e_name);
-}
-
-char *
-etherproto_string(u_short port)
-{
- register char *cp;
- register struct hnamemem *tp;
- register u_long i = port;
-
- for (tp = &eprototable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- tp->name = cp = (char *)malloc(sizeof("0000"));
- tp->addr = i;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof (*tp));
-
- NTOHS(port);
- *cp++ = hex[port >> 12 & 0xf];
- *cp++ = hex[port >> 8 & 0xf];
- *cp++ = hex[port >> 4 & 0xf];
- *cp++ = hex[port & 0xf];
- *cp++ = '\0';
- return (tp->name);
-}
-
-char *
-protoid_string(register const u_char *pi)
-{
- register u_int i, j;
- register char *cp;
- register struct protoidmem *tp;
-
- tp = lookup_protoid(pi);
- if (tp->p_name)
- return tp->p_name;
-
- tp->p_name = cp = (char *)malloc(sizeof("00:00:00:00:00"));
-
- if ((j = *pi >> 4) != 0)
- *cp++ = hex[j];
- *cp++ = hex[*pi++ & 0xf];
- for (i = 4; (int)--i >= 0;) {
- *cp++ = ':';
- if ((j = *pi >> 4) != 0)
- *cp++ = hex[j];
- *cp++ = hex[*pi++ & 0xf];
- }
- *cp = '\0';
- return (tp->p_name);
-}
-
-char *
-llcsap_string(u_char sap)
-{
- register char *cp;
- register struct hnamemem *tp;
- register u_long i = sap;
-
- for (tp = &llcsaptable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- tp->name = cp = (char *)malloc(sizeof("sap 00"));
- tp->addr = i;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof (*tp));
-
- (void)strcpy(cp, "sap ");
- cp += strlen(cp);
- *cp++ = hex[sap >> 4 & 0xf];
- *cp++ = hex[sap & 0xf];
- *cp++ = '\0';
- return (tp->name);
-}
-
-char *
-isonsap_string(const u_char *nsap)
-{
- register u_int i, nlen = nsap[0];
- register char *cp;
- register struct enamemem *tp;
-
- tp = lookup_nsap(nsap);
- if (tp->e_name)
- return tp->e_name;
-
- tp->e_name = cp = (char *)malloc(nlen * 2 + 2);
-
- nsap++;
- *cp++ = '/';
- for (i = nlen; (int)--i >= 0;) {
- *cp++ = hex[*nsap >> 4];
- *cp++ = hex[*nsap++ & 0xf];
- }
- *cp = '\0';
- return (tp->e_name);
-}
-
-char *
-tcpport_string(u_short port)
-{
- register struct hnamemem *tp;
- register u_long i = port;
-
- for (tp = &tporttable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- tp->name = (char *)malloc(sizeof("00000"));
- tp->addr = i;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof (*tp));
-
- (void)sprintf(tp->name, "%d", i);
- return (tp->name);
-}
-
-char *
-udpport_string(register u_short port)
-{
- register struct hnamemem *tp;
- register u_long i = port;
-
- for (tp = &uporttable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- tp->name = (char *)malloc(sizeof("00000"));
- tp->addr = i;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof(*tp));
-
- (void)sprintf(tp->name, "%d", i);
-
- return (tp->name);
-}
-
-static void
-init_servarray(void)
-{
- struct servent *sv;
- register struct hnamemem *table;
- register int i;
-
- while ((sv = getservent()) != NULL) {
- int port = ntohs(sv->s_port);
- i = port & (HASHNAMESIZE-1);
- if (strcmp(sv->s_proto, "tcp") == 0)
- table = &tporttable[i];
- else if (strcmp(sv->s_proto, "udp") == 0)
- table = &uporttable[i];
- else
- continue;
-
- while (table->name)
- table = table->nxt;
- if (nflag) {
- char buf[32];
-
- (void)sprintf(buf, "%d", port);
- table->name = savestr(buf);
- } else
- table->name = savestr(sv->s_name);
- table->addr = port;
- table->nxt = (struct hnamemem *)calloc(1, sizeof(*table));
- }
- endservent();
-}
-
-/*XXX from libbpfc.a */
-extern struct eproto {
- char *s;
- u_short p;
-} eproto_db[];
-
-static void
-init_eprotoarray(void)
-{
- register int i;
- register struct hnamemem *table;
-
- for (i = 0; eproto_db[i].s; i++) {
- int j = ntohs(eproto_db[i].p) & (HASHNAMESIZE-1);
- table = &eprototable[j];
- while (table->name)
- table = table->nxt;
- table->name = eproto_db[i].s;
- table->addr = ntohs(eproto_db[i].p);
- table->nxt = (struct hnamemem *)calloc(1, sizeof(*table));
- }
-}
-
-/*
- * SNAP proto IDs with org code 0:0:0 are actually encapsulated Ethernet
- * types.
- */
-static void
-init_protoidarray(void)
-{
- register int i;
- register struct protoidmem *tp;
- u_char protoid[5];
-
- protoid[0] = 0;
- protoid[1] = 0;
- protoid[2] = 0;
- for (i = 0; eproto_db[i].s; i++) {
- u_short etype = htons(eproto_db[i].p);
- bcopy((char *)&etype, (char *)&protoid[3], 2);
- tp = lookup_protoid(protoid);
- tp->p_name = savestr(eproto_db[i].s);
- }
-}
-
-static struct etherlist {
- u_char addr[6];
- char *name;
-} etherlist[] = {
- {{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, "Broadcast" },
- {{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, NULL }
-};
-
-/*
- * Initialize the ethers hash table. We take two different approaches
- * depending on whether or not the system provides the ethers name
- * service. If it does, we just wire in a few names at startup,
- * and etheraddr_string() fills in the table on demand. If it doesn't,
- * then we suck in the entire /etc/ethers file at startup. The idea
- * is that parsing the local file will be fast, but spinning through
- * all the ethers entries via NIS & next_etherent might be very slow.
- *
- * XXX pcap_next_etherent doesn't belong in the pcap interface, but
- * since the pcap module already does name-to-address translation,
- * it's already does most of the work for the ethernet address-to-name
- * translation, so we just pcap_next_etherent as a convenience.
- */
-static void
-init_etherarray(void)
-{
- register struct etherlist *el;
- register struct enamemem *tp;
-#ifndef ETHER_SERVICE
- register struct pcap_etherent *ep;
- register FILE *fp;
-
- /* Suck in entire ethers file */
- fp = fopen(PCAP_ETHERS_FILE, "r");
- if (fp != NULL) {
- while ((ep = pcap_next_etherent(fp)) != NULL) {
- tp = lookup_emem(ep->addr);
- tp->e_name = savestr(ep->name);
- }
- (void)fclose(fp);
- }
-#endif
-
- /* Hardwire some ethernet names */
- for (el = etherlist; el->name != NULL; ++el) {
-#ifdef ETHER_SERVICE
- /* Use yp/nis version of name if available */
- char wrk[256];
- if (ether_ntohost(wrk, (struct ether_addr *)el->addr) == 0) {
- tp = lookup_emem(el->addr);
- tp->e_name = savestr(wrk);
- }
-#else
- /* install if not already present */
- tp = lookup_emem(el->addr);
- if (tp->e_name == NULL)
- tp->e_name = el->name;
-#endif
-
- }
-}
-
-static struct token llcsap_db[] = {
- { LLCSAP_NULL, "null" },
- { LLCSAP_8021B_I, "802.1b-gsap" },
- { LLCSAP_8021B_G, "802.1b-isap" },
- { LLCSAP_IP, "ip-sap" },
- { LLCSAP_PROWAYNM, "proway-nm" },
- { LLCSAP_8021D, "802.1d" },
- { LLCSAP_RS511, "eia-rs511" },
- { LLCSAP_ISO8208, "x.25/llc2" },
- { LLCSAP_PROWAY, "proway" },
- { LLCSAP_ISONS, "iso-clns" },
- { LLCSAP_GLOBAL, "global" },
- { 0, NULL }
-};
-
-static void
-init_llcsaparray(void)
-{
- register int i;
- register struct hnamemem *table;
-
- for (i = 0; llcsap_db[i].s != NULL; i++) {
- table = &llcsaptable[llcsap_db[i].v];
- while (table->name)
- table = table->nxt;
- table->name = llcsap_db[i].s;
- table->addr = llcsap_db[i].v;
- table->nxt = (struct hnamemem *)calloc(1, sizeof(*table));
- }
-}
-
-/*
- * Initialize the address to name translation machinery. We map all
- * non-local IP addresses to numeric addresses if fflag is true (i.e.,
- * to prevent blocking on the nameserver). localnet is the IP address
- * of the local network. mask is its subnet mask.
- */
-void
-init_addrtoname(int fflag, u_int32 localnet, u_int32 mask)
-{
- netmask = mask;
- if (fflag) {
- f_localnet = localnet;
- f_netmask = mask;
- }
- if (nflag)
- /*
- * Simplest way to suppress names.
- */
- return;
-
- init_etherarray();
- init_servarray();
- init_eprotoarray();
- init_llcsaparray();
- init_protoidarray();
-}
-
-char *
-dnaddr_string(u_short dnaddr)
-{
- register struct hnamemem *tp;
-
- for (tp = &dnaddrtable[dnaddr & (HASHNAMESIZE-1)]; tp->nxt != 0;
- tp = tp->nxt)
- if (tp->addr == dnaddr)
- return (tp->name);
-
- tp->addr = dnaddr;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof(*tp));
- if (nflag)
- tp->name = dnnum_string(dnaddr);
- else
- tp->name = dnname_string(dnaddr);
-
- return(tp->name);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/addrtoname.h b/usr.sbin/tcpdump/tcpdump/addrtoname.h
deleted file mode 100644
index f52825b..0000000
--- a/usr.sbin/tcpdump/tcpdump/addrtoname.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 1990, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: addrtoname.h,v 1.11 94/06/14 20:11:41 leres Exp $ (LBL)
- */
-
-/* Name to address translation routines. */
-
-extern char *etheraddr_string(const u_char *);
-extern char *etherproto_string(u_short);
-extern char *tcpport_string(u_short);
-extern char *udpport_string(u_short);
-extern char *getname(const u_char *);
-extern char *intoa(u_int32);
-
-extern void init_addrtoname(int, u_int32, u_int32);
-
-#define ipaddr_string(p) getname((const u_char *)(p))
diff --git a/usr.sbin/tcpdump/tcpdump/appletalk.h b/usr.sbin/tcpdump/tcpdump/appletalk.h
deleted file mode 100644
index 6a21f1d..0000000
--- a/usr.sbin/tcpdump/tcpdump/appletalk.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * AppleTalk protocol formats (courtesy Bill Croft of Stanford/SUMEX).
- *
- * @(#) $Header: appletalk.h,v 1.10 94/06/14 20:11:44 leres Exp $ (LBL)
- */
-
-struct LAP {
- u_char dst;
- u_char src;
- u_char type;
-};
-#define lapShortDDP 1 /* short DDP type */
-#define lapDDP 2 /* DDP type */
-#define lapKLAP 'K' /* Kinetics KLAP type */
-
-/* Datagram Delivery Protocol */
-
-struct atDDP {
- u_short length;
- u_short checksum;
- u_short dstNet;
- u_short srcNet;
- u_char dstNode;
- u_char srcNode;
- u_char dstSkt;
- u_char srcSkt;
- u_char type;
-};
-
-struct atShortDDP {
- u_short length;
- u_char dstSkt;
- u_char srcSkt;
- u_char type;
-};
-
-#define ddpMaxWKS 0x7F
-#define ddpMaxData 586
-#define ddpLengthMask 0x3FF
-#define ddpHopShift 10
-#define ddpSize 13 /* size of DDP header (avoid struct padding) */
-#define ddpSSize 5
-#define ddpWKS 128 /* boundary of DDP well known sockets */
-#define ddpRTMP 1 /* RTMP type */
-#define ddpRTMPrequest 5 /* RTMP request type */
-#define ddpNBP 2 /* NBP type */
-#define ddpATP 3 /* ATP type */
-#define ddpECHO 4 /* ECHO type */
-#define ddpIP 22 /* IP type */
-#define ddpARP 23 /* ARP type */
-#define ddpKLAP 0x4b /* Kinetics KLAP type */
-
-
-/* AppleTalk Transaction Protocol */
-
-struct atATP {
- u_char control;
- u_char bitmap;
- u_short transID;
- int32 userData;
-};
-
-#define atpReqCode 0x40
-#define atpRspCode 0x80
-#define atpRelCode 0xC0
-#define atpXO 0x20
-#define atpEOM 0x10
-#define atpSTS 0x08
-#define atpFlagMask 0x3F
-#define atpControlMask 0xF8
-#define atpMaxNum 8
-#define atpMaxData 578
-
-
-/* AppleTalk Echo Protocol */
-
-struct atEcho {
- u_char echoFunction;
- u_char *echoData;
-};
-
-#define echoSkt 4 /* the echoer socket */
-#define echoSize 1 /* size of echo header */
-#define echoRequest 1 /* echo request */
-#define echoReply 2 /* echo request */
-
-
-/* Name Binding Protocol */
-
-struct atNBP {
- u_char control;
- u_char id;
-};
-
-struct atNBPtuple {
- u_short net;
- u_char node;
- u_char skt;
- u_char enumerator;
-};
-
-#define nbpBrRq 0x10
-#define nbpLkUp 0x20
-#define nbpLkUpReply 0x30
-
-#define nbpNIS 2
-#define nbpTupleMax 15
-
-#define nbpHeaderSize 2
-#define nbpTupleSize 5
-
-#define nbpSkt 2 /* NIS */
-
-
-/* Routing Table Maint. Protocol */
-
-#define rtmpSkt 1 /* number of RTMP socket */
-#define rtmpSize 4 /* minimum size */
-#define rtmpTupleSize 3
-
-
-/* Zone Information Protocol */
-
-struct zipHeader {
- u_char command;
- u_char netcount;
-};
-
-#define zipHeaderSize 2
-#define zipQuery 1
-#define zipReply 2
-#define zipTakedown 3
-#define zipBringup 4
-#define ddpZIP 6
-#define zipSkt 6
-#define GetMyZone 7
-#define GetZoneList 8
-
-/*
- * UDP port range used for ddp-in-udp encapsulation is 16512-16639
- * for client sockets (128-255) and 200-327 for server sockets
- * (0-127). We also try to recognize the pre-April 88 server
- * socket range of 768-895.
- */
-#define atalk_port(p) \
- (((unsigned)((p) - 16512) < 128) || \
- ((unsigned)((p) - 200) < 128) || \
- ((unsigned)((p) - 768) < 128))
diff --git a/usr.sbin/tcpdump/tcpdump/bootp.h b/usr.sbin/tcpdump/tcpdump/bootp.h
deleted file mode 100644
index 19844ca..0000000
--- a/usr.sbin/tcpdump/tcpdump/bootp.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* @(#) $Header: bootp.h,v 1.6 94/01/13 19:06:29 leres Exp $ (LBL) */
-/*
- * Bootstrap Protocol (BOOTP). RFC951 and RFC1048.
- *
- * This file specifies the "implementation-independent" BOOTP protocol
- * information which is common to both client and server.
- *
- * Copyright 1988 by Carnegie Mellon.
- *
- * Permission to use, copy, modify, and distribute this program for any
- * purpose and without fee is hereby granted, provided that this copyright
- * and permission notice appear on all copies and supporting documentation,
- * the name of Carnegie Mellon not be used in advertising or publicity
- * pertaining to distribution of the program without specific prior
- * permission, and notice be given in supporting documentation that copying
- * and distribution is by permission of Carnegie Mellon and Stanford
- * University. Carnegie Mellon makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- */
-
-
-struct bootp {
- unsigned char bp_op; /* packet opcode type */
- unsigned char bp_htype; /* hardware addr type */
- unsigned char bp_hlen; /* hardware addr length */
- unsigned char bp_hops; /* gateway hops */
- u_int32 bp_xid; /* transaction ID */
- unsigned short bp_secs; /* seconds since boot began */
- unsigned short bp_unused;
- struct in_addr bp_ciaddr; /* client IP address */
- struct in_addr bp_yiaddr; /* 'your' IP address */
- struct in_addr bp_siaddr; /* server IP address */
- struct in_addr bp_giaddr; /* gateway IP address */
- unsigned char bp_chaddr[16]; /* client hardware address */
- unsigned char bp_sname[64]; /* server host name */
- unsigned char bp_file[128]; /* boot file name */
- unsigned char bp_vend[64]; /* vendor-specific area */
-};
-
-/*
- * UDP port numbers, server and client.
- */
-#define IPPORT_BOOTPS 67
-#define IPPORT_BOOTPC 68
-
-#define BOOTREPLY 2
-#define BOOTREQUEST 1
-
-
-/*
- * Vendor magic cookie (v_magic) for CMU
- */
-#define VM_CMU "CMU"
-
-/*
- * Vendor magic cookie (v_magic) for RFC1048
- */
-#define VM_RFC1048 { 99, 130, 83, 99 }
-
-
-
-/*
- * RFC1048 tag values used to specify what information is being supplied in
- * the vendor field of the packet.
- */
-
-#define TAG_PAD ((unsigned char) 0)
-#define TAG_SUBNET_MASK ((unsigned char) 1)
-#define TAG_TIME_OFFSET ((unsigned char) 2)
-#define TAG_GATEWAY ((unsigned char) 3)
-#define TAG_TIME_SERVER ((unsigned char) 4)
-#define TAG_NAME_SERVER ((unsigned char) 5)
-#define TAG_DOMAIN_SERVER ((unsigned char) 6)
-#define TAG_LOG_SERVER ((unsigned char) 7)
-#define TAG_COOKIE_SERVER ((unsigned char) 8)
-#define TAG_LPR_SERVER ((unsigned char) 9)
-#define TAG_IMPRESS_SERVER ((unsigned char) 10)
-#define TAG_RLP_SERVER ((unsigned char) 11)
-#define TAG_HOSTNAME ((unsigned char) 12)
-#define TAG_BOOTSIZE ((unsigned char) 13)
-#define TAG_END ((unsigned char) 255)
-/* RFC1497 tags */
-#define TAG_DUMPPATH ((unsigned char) 14)
-#define TAG_DOMAINNAME ((unsigned char) 15)
-#define TAG_SWAP_SERVER ((unsigned char) 16)
-#define TAG_ROOTPATH ((unsigned char) 17)
-#define TAG_EXTPATH ((unsigned char) 18)
-
-
-
-/*
- * "vendor" data permitted for CMU bootp clients.
- */
-
-struct cmu_vend {
- unsigned char v_magic[4]; /* magic number */
- u_int32 v_flags; /* flags/opcodes, etc. */
- struct in_addr v_smask; /* Subnet mask */
- struct in_addr v_dgate; /* Default gateway */
- struct in_addr v_dns1, v_dns2; /* Domain name servers */
- struct in_addr v_ins1, v_ins2; /* IEN-116 name servers */
- struct in_addr v_ts1, v_ts2; /* Time servers */
- unsigned char v_unused[24]; /* currently unused */
-};
-
-
-/* v_flags values */
-#define VF_SMASK 1 /* Subnet mask field contains valid data */
diff --git a/usr.sbin/tcpdump/tcpdump/bpf_dump.c b/usr.sbin/tcpdump/tcpdump/bpf_dump.c
deleted file mode 100644
index 547041a..0000000
--- a/usr.sbin/tcpdump/tcpdump/bpf_dump.c
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: bpf_dump.c,v 1.6 94/06/06 14:31:21 leres Exp $ (LBL)";
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <pcap.h>
-#include <stdio.h>
-
-#include "interface.h"
-
-extern void bpf_dump(struct bpf_program *, int);
-
-void
-bpf_dump(struct bpf_program *p, int option)
-{
- struct bpf_insn *insn;
- int i;
- int n = p->bf_len;
-
- insn = p->bf_insns;
- if (option > 2) {
- printf("%d\n", n);
- for (i = 0; i < n; ++insn, ++i) {
- printf("%lu %lu %lu %lu\n", insn->code,
- insn->jt, insn->jf, insn->k);
- }
- return ;
- }
- if (option > 1) {
- for (i = 0; i < n; ++insn, ++i)
- printf("{ 0x%x, %d, %d, 0x%08x },\n",
- insn->code, insn->jt, insn->jf, insn->k);
- return;
- }
- for (i = 0; i < n; ++insn, ++i) {
-#ifdef BDEBUG
- extern int bids[];
- printf(bids[i] > 0 ? "[%02d]" : " -- ", bids[i] - 1);
-#endif
- puts(bpf_image(insn, i));
- }
-}
diff --git a/usr.sbin/tcpdump/tcpdump/decnet.h b/usr.sbin/tcpdump/tcpdump/decnet.h
deleted file mode 100644
index 83e7e0e..0000000
--- a/usr.sbin/tcpdump/tcpdump/decnet.h
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * Copyright (c) 1992, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: decnet.h,v 1.3 94/06/14 20:11:44 leres Exp $ (LBL)
- */
-
-typedef unsigned char byte[1]; /* single byte field */
-typedef unsigned char word[2]; /* 2 byte field */
-typedef unsigned char longword[4]; /* 4 bytes field */
-
-/*
- * Definitions for DECNET Phase IV protocol headers
- */
-union etheraddress {
- unsigned char dne_addr[6]; /* full ethernet address */
- struct {
- unsigned char dne_hiord[4]; /* DECnet HIORD prefix */
- unsigned char dne_nodeaddr[2]; /* DECnet node address */
- } dne_remote;
-};
-
-typedef union etheraddress etheraddr; /* Ethernet address */
-
-#define HIORD 0x000400aa /* high 32-bits of address (swapped) */
-
-#define AREAMASK 0176000 /* mask for area field */
-#define AREASHIFT 10 /* bit-offset for area field */
-#define NODEMASK 01777 /* mask for node address field */
-
-#define DN_MAXADDL 20 /* max size of DECnet address */
-struct dn_naddr {
- unsigned short a_len; /* length of address */
- unsigned char a_addr[DN_MAXADDL]; /* address as bytes */
-};
-
-/*
- * Define long and short header formats.
- */
-struct shorthdr
- {
- byte sh_flags; /* route flags */
- word sh_dst; /* destination node address */
- word sh_src; /* source node address */
- byte sh_visits; /* visit count */
- };
-
-struct longhdr
- {
- byte lg_flags; /* route flags */
- byte lg_darea; /* destination area (reserved) */
- byte lg_dsarea; /* destination subarea (reserved) */
- etheraddr lg_dst; /* destination id */
- byte lg_sarea; /* source area (reserved) */
- byte lg_ssarea; /* source subarea (reserved) */
- etheraddr lg_src; /* source id */
- byte lg_nextl2; /* next level 2 router (reserved) */
- byte lg_visits; /* visit count */
- byte lg_service; /* service class (reserved) */
- byte lg_pt; /* protocol type (reserved) */
- };
-
-union routehdr
- {
- struct shorthdr rh_short; /* short route header */
- struct longhdr rh_long; /* long route header */
- };
-
-/*
- * Define the values of various fields in the protocol messages.
- *
- * 1. Data packet formats.
- */
-#define RMF_MASK 7 /* mask for message type */
-#define RMF_SHORT 2 /* short message format */
-#define RMF_LONG 6 /* long message format */
-#ifndef RMF_RQR
-#define RMF_RQR 010 /* request return to sender */
-#define RMF_RTS 020 /* returning to sender */
-#define RMF_IE 040 /* intra-ethernet packet */
-#endif /* RMR_RQR */
-#define RMF_FVER 0100 /* future version flag */
-#define RMF_PAD 0200 /* pad field */
-#define RMF_PADMASK 0177 /* pad field mask */
-
-#define VIS_MASK 077 /* visit field mask */
-
-/*
- * 2. Control packet formats.
- */
-#define RMF_CTLMASK 017 /* mask for message type */
-#define RMF_CTLMSG 01 /* control message indicator */
-#define RMF_INIT 01 /* initialisation message */
-#define RMF_VER 03 /* verification message */
-#define RMF_TEST 05 /* hello and test message */
-#define RMF_L1ROUT 07 /* level 1 routing message */
-#define RMF_L2ROUT 011 /* level 2 routing message */
-#define RMF_RHELLO 013 /* router hello message */
-#define RMF_EHELLO 015 /* endnode hello message */
-
-#define TI_L2ROUT 01 /* level 2 router */
-#define TI_L1ROUT 02 /* level 1 router */
-#define TI_ENDNODE 03 /* endnode */
-#define TI_VERIF 04 /* verification required */
-#define TI_BLOCK 010 /* blocking requested */
-
-#define VE_VERS 2 /* version number (2) */
-#define VE_ECO 0 /* ECO number */
-#define VE_UECO 0 /* user ECO number (0) */
-
-#define P3_VERS 1 /* phase III version number (1) */
-#define P3_ECO 3 /* ECO number (3) */
-#define P3_UECO 0 /* user ECO number (0) */
-
-#define II_L2ROUT 01 /* level 2 router */
-#define II_L1ROUT 02 /* level 1 router */
-#define II_ENDNODE 03 /* endnode */
-#define II_VERIF 04 /* verification required */
-#define II_NOMCAST 040 /* no multicast traffic accepted */
-#define II_BLOCK 0100 /* blocking requested */
-#define II_TYPEMASK 03 /* mask for node type */
-
-#define TESTDATA 0252 /* test data bytes */
-#define TESTLEN 1 /* length of transmitted test data */
-
-/*
- * Define control message formats.
- */
-struct initmsgIII /* phase III initialisation message */
- {
- byte inIII_flags; /* route flags */
- word inIII_src; /* source node address */
- byte inIII_info; /* routing layer information */
- word inIII_blksize; /* maximum data link block size */
- byte inIII_vers; /* version number */
- byte inIII_eco; /* ECO number */
- byte inIII_ueco; /* user ECO number */
- byte inIII_rsvd; /* reserved image field */
- };
-
-struct initmsg /* initialisation message */
- {
- byte in_flags; /* route flags */
- word in_src; /* source node address */
- byte in_info; /* routing layer information */
- word in_blksize; /* maximum data link block size */
- byte in_vers; /* version number */
- byte in_eco; /* ECO number */
- byte in_ueco; /* user ECO number */
- word in_hello; /* hello timer */
- byte in_rsvd; /* reserved image field */
- };
-
-struct verifmsg /* verification message */
- {
- byte ve_flags; /* route flags */
- word ve_src; /* source node address */
- byte ve_fcnval; /* function value image field */
- };
-
-struct testmsg /* hello and test message */
- {
- byte te_flags; /* route flags */
- word te_src; /* source node address */
- byte te_data; /* test data image field */
- };
-
-struct l1rout /* level 1 routing message */
- {
- byte r1_flags; /* route flags */
- word r1_src; /* source node address */
- byte r1_rsvd; /* reserved field */
- };
-
-struct l2rout /* level 2 routing message */
- {
- byte r2_flags; /* route flags */
- word r2_src; /* source node address */
- byte r2_rsvd; /* reserved field */
- };
-
-struct rhellomsg /* router hello message */
- {
- byte rh_flags; /* route flags */
- byte rh_vers; /* version number */
- byte rh_eco; /* ECO number */
- byte rh_ueco; /* user ECO number */
- etheraddr rh_src; /* source id */
- byte rh_info; /* routing layer information */
- word rh_blksize; /* maximum data link block size */
- byte rh_priority; /* router's priority */
- byte rh_area; /* reserved */
- word rh_hello; /* hello timer */
- byte rh_mpd; /* reserved */
- };
-
-struct ehellomsg /* endnode hello message */
- {
- byte eh_flags; /* route flags */
- byte eh_vers; /* version number */
- byte eh_eco; /* ECO number */
- byte eh_ueco; /* user ECO number */
- etheraddr eh_src; /* source id */
- byte eh_info; /* routing layer information */
- word eh_blksize; /* maximum data link block size */
- byte eh_area; /* area (reserved) */
- byte eh_seed[8]; /* verification seed */
- etheraddr eh_router; /* designated router */
- word eh_hello; /* hello timer */
- byte eh_mpd; /* (reserved) */
- byte eh_data; /* test data image field */
- };
-
-union controlmsg
- {
- struct initmsg cm_init; /* initialisation message */
- struct verifmsg cm_ver; /* verification message */
- struct testmsg cm_test; /* hello and test message */
- struct l1rout cm_l1rou; /* level 1 routing message */
- struct l2rout cm_l2rout; /* level 2 routing message */
- struct rhellomsg cm_rhello; /* router hello message */
- struct ehellomsg cm_ehello; /* endnode hello message */
- };
-
-/* Macros for decoding routing-info fields */
-#define RI_COST(x) ((x)&0777)
-#define RI_HOPS(x) (((x)>>10)&037)
-
-/*
- * NSP protocol fields and values.
- */
-
-#define NSP_TYPEMASK 014 /* mask to isolate type code */
-#define NSP_SUBMASK 0160 /* mask to isolate subtype code */
-#define NSP_SUBSHFT 4 /* shift to move subtype code */
-
-#define MFT_DATA 0 /* data message */
-#define MFT_ACK 04 /* acknowledgement message */
-#define MFT_CTL 010 /* control message */
-
-#define MFS_ILS 020 /* data or I/LS indicator */
-#define MFS_BOM 040 /* beginning of message (data) */
-#define MFS_MOM 0 /* middle of message (data) */
-#define MFS_EOM 0100 /* end of message (data) */
-#define MFS_INT 040 /* interrupt message */
-
-#define MFS_DACK 0 /* data acknowledgement */
-#define MFS_IACK 020 /* I/LS acknowledgement */
-#define MFS_CACK 040 /* connect acknowledgement */
-
-#define MFS_NOP 0 /* no operation */
-#define MFS_CI 020 /* connect initiate */
-#define MFS_CC 040 /* connect confirm */
-#define MFS_DI 060 /* disconnect initiate */
-#define MFS_DC 0100 /* disconnect confirm */
-#define MFS_RCI 0140 /* retransmitted connect initiate */
-
-#define SGQ_ACK 0100000 /* ack */
-#define SGQ_NAK 0110000 /* negative ack */
-#define SGQ_OACK 0120000 /* other channel ack */
-#define SGQ_ONAK 0130000 /* other channel negative ack */
-#define SGQ_MASK 07777 /* mask to isolate seq # */
-#define SGQ_OTHER 020000 /* other channel qualifier */
-#define SGQ_DELAY 010000 /* ack delay flag */
-
-#define SGQ_EOM 0100000 /* pseudo flag for end-of-message */
-
-#define LSM_MASK 03 /* mask for modifier field */
-#define LSM_NOCHANGE 0 /* no change */
-#define LSM_DONOTSEND 1 /* do not send data */
-#define LSM_SEND 2 /* send data */
-
-#define LSI_MASK 014 /* mask for interpretation field */
-#define LSI_DATA 0 /* data segment or message count */
-#define LSI_INTR 4 /* interrupt request count */
-#define LSI_INTM 0377 /* funny marker for int. message */
-
-#define COS_MASK 014 /* mask for flow control field */
-#define COS_NONE 0 /* no flow control */
-#define COS_SEGMENT 04 /* segment flow control */
-#define COS_MESSAGE 010 /* message flow control */
-#define COS_CRYPTSER 020 /* cryptographic services requested */
-#define COS_DEFAULT 1 /* default value for field */
-
-#define COI_MASK 3 /* mask for version field */
-#define COI_32 0 /* version 3.2 */
-#define COI_31 1 /* version 3.1 */
-#define COI_40 2 /* version 4.0 */
-#define COI_41 3 /* version 4.1 */
-
-#define MNU_MASK 140 /* mask for session control version */
-#define MNU_10 000 /* session V1.0 */
-#define MNU_20 040 /* session V2.0 */
-#define MNU_ACCESS 1 /* access control present */
-#define MNU_USRDATA 2 /* user data field present */
-#define MNU_INVKPROXY 4 /* invoke proxy field present */
-#define MNU_UICPROXY 8 /* use uic-based proxy */
-
-#define DC_NORESOURCES 1 /* no resource reason code */
-#define DC_NOLINK 41 /* no link terminate reason code */
-#define DC_COMPLETE 42 /* disconnect complete reason code */
-
-#define DI_NOERROR 0 /* user disconnect */
-#define DI_SHUT 3 /* node is shutting down */
-#define DI_NOUSER 4 /* destination end user does not exist */
-#define DI_INVDEST 5 /* invalid end user destination */
-#define DI_REMRESRC 6 /* insufficient remote resources */
-#define DI_TPA 8 /* third party abort */
-#define DI_PROTOCOL 7 /* protocol error discovered */
-#define DI_ABORT 9 /* user abort */
-#define DI_LOCALRESRC 32 /* insufficient local resources */
-#define DI_REMUSERRESRC 33 /* insufficient remote user resources */
-#define DI_BADACCESS 34 /* bad access control information */
-#define DI_BADACCNT 36 /* bad ACCOUNT information */
-#define DI_CONNECTABORT 38 /* connect request cancelled */
-#define DI_TIMEDOUT 38 /* remote node or user crashed */
-#define DI_UNREACHABLE 39 /* local timers expired due to ... */
-#define DI_BADIMAGE 43 /* bad image data in connect */
-#define DI_SERVMISMATCH 54 /* cryptographic service mismatch */
-
-#define UC_OBJREJECT 0 /* object rejected connect */
-#define UC_USERDISCONNECT 0 /* user disconnect */
-#define UC_RESOURCES 1 /* insufficient resources (local or remote) */
-#define UC_NOSUCHNODE 2 /* unrecognised node name */
-#define UC_REMOTESHUT 3 /* remote node shutting down */
-#define UC_NOSUCHOBJ 4 /* unrecognised object */
-#define UC_INVOBJFORMAT 5 /* invalid object name format */
-#define UC_OBJTOOBUSY 6 /* object too busy */
-#define UC_NETWORKABORT 8 /* network abort */
-#define UC_USERABORT 9 /* user abort */
-#define UC_INVNODEFORMAT 10 /* invalid node name format */
-#define UC_LOCALSHUT 11 /* local node shutting down */
-#define UC_ACCESSREJECT 34 /* invalid access control information */
-#define UC_NORESPONSE 38 /* no response from object */
-#define UC_UNREACHABLE 39 /* node unreachable */
-
-/*
- * NSP message formats.
- */
-struct nsphdr /* general nsp header */
- {
- byte nh_flags; /* message flags */
- word nh_dst; /* destination link address */
- word nh_src; /* source link address */
- };
-
-struct seghdr /* data segment header */
- {
- byte sh_flags; /* message flags */
- word sh_dst; /* destination link address */
- word sh_src; /* source link address */
- word sh_seq[3]; /* sequence numbers */
- };
-
-struct minseghdr /* minimum data segment header */
- {
- byte ms_flags; /* message flags */
- word ms_dst; /* destination link address */
- word ms_src; /* source link address */
- word ms_seq; /* sequence number */
- };
-
-struct lsmsg /* link service message (after hdr) */
- {
- byte ls_lsflags; /* link service flags */
- byte ls_fcval; /* flow control value */
- };
-
-struct ackmsg /* acknowledgement message */
- {
- byte ak_flags; /* message flags */
- word ak_dst; /* destination link address */
- word ak_src; /* source link address */
- word ak_acknum[2]; /* acknowledgement numbers */
- };
-
-struct minackmsg /* minimum acknowledgement message */
- {
- byte mk_flags; /* message flags */
- word mk_dst; /* destination link address */
- word mk_src; /* source link address */
- word mk_acknum; /* acknowledgement number */
- };
-
-struct ciackmsg /* connect acknowledgement message */
- {
- byte ck_flags; /* message flags */
- word ck_dst; /* destination link address */
- };
-
-struct cimsg /* connect initiate message */
- {
- byte ci_flags; /* message flags */
- word ci_dst; /* destination link address (0) */
- word ci_src; /* source link address */
- byte ci_services; /* requested services */
- byte ci_info; /* information */
- word ci_segsize; /* maximum segment size */
- };
-
-struct ccmsg /* connect confirm message */
- {
- byte cc_flags; /* message flags */
- word cc_dst; /* destination link address */
- word cc_src; /* source link address */
- byte cc_services; /* requested services */
- byte cc_info; /* information */
- word cc_segsize; /* maximum segment size */
- byte cc_optlen; /* optional data length */
- };
-
-struct cnmsg /* generic connect message */
- {
- byte cn_flags; /* message flags */
- word cn_dst; /* destination link address */
- word cn_src; /* source link address */
- byte cn_services; /* requested services */
- byte cn_info; /* information */
- word cn_segsize; /* maximum segment size */
- };
-
-struct dimsg /* disconnect initiate message */
- {
- byte di_flags; /* message flags */
- word di_dst; /* destination link address */
- word di_src; /* source link address */
- word di_reason; /* reason code */
- byte di_optlen; /* optional data length */
- };
-
-struct dcmsg /* disconnect confirm message */
- {
- byte dc_flags; /* message flags */
- word dc_dst; /* destination link address */
- word dc_src; /* source link address */
- word dc_reason; /* reason code */
- };
-
-/*
- * Like the macros in extract.h, except that since DECNET is a little-endian
- * protocol, the BYTEORDER sense is reversed.
- */
-#define EXTRACT_8BITS(p) (*(p))
-#if BYTEORDER == BIG_ENDIAN
-#define EXTRACT_16BITS(p)\
- ((u_short)\
- (*((u_char *)p+1)<<8|\
- *((u_char *)p+0)<<0))
-#define EXTRACT_32BITS(p)\
- (*((u_char *)p+3)<<24|\
- *((u_char *)p+2)<<16|\
- *((u_char *)p+1)<<8|\
- *((u_char *)p+0)<<0)
-#else
-#define EXTRACT_16BITS(p)\
- ((u_short)\
- (*((u_char *)p+0)<<8|\
- *((u_char *)p+1)<<0))
-#define EXTRACT_32BITS(p)\
- (*((u_char *)p+0)<<24|\
- *((u_char *)p+1)<<16|\
- *((u_char *)p+2)<<8|\
- *((u_char *)p+3)<<0)
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/ethertype.h b/usr.sbin/tcpdump/tcpdump/ethertype.h
deleted file mode 100644
index 43ee324..0000000
--- a/usr.sbin/tcpdump/tcpdump/ethertype.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ethertype.h,v 1.1 1995/03/08 12:52:12 olah Exp $ (LBL)
- */
-
-/* Map between Ethernet protocol types and names */
-
-/* Add other Ethernet packet types here */
-#ifndef ETHERTYPE_SPRITE
-#define ETHERTYPE_SPRITE 0x0500
-#endif
-#ifndef ETHERTYPE_MOPDL
-#define ETHERTYPE_MOPDL 0x6001
-#endif
-#ifndef ETHERTYPE_MOPRC
-#define ETHERTYPE_MOPRC 0x6002
-#endif
-#ifndef ETHERTYPE_DN
-#define ETHERTYPE_DN 0x6003
-#endif
-#ifndef ETHERTYPE_LAT
-#define ETHERTYPE_LAT 0x6004
-#endif
-#ifndef ETHERTYPE_LANBRIDGE
-#define ETHERTYPE_LANBRIDGE 0x8038
-#endif
-#ifndef ETHERTYPE_DECDNS
-#define ETHERTYPE_DECDNS 0x803c
-#endif
-#ifndef ETHERTYPE_DECDTS
-#define ETHERTYPE_DECDTS 0x803e
-#endif
-#ifndef ETHERTYPE_VEXP
-#define ETHERTYPE_VEXP 0x805b
-#endif
-#ifndef ETHERTYPE_VPROD
-#define ETHERTYPE_VPROD 0x805c
-#endif
-#ifndef ETHERTYPE_LOOPBACK
-#define ETHERTYPE_LOOPBACK 0x9000
-#endif
-
-#ifndef ETHERTYPE_ATALK
-#define ETHERTYPE_ATALK 0x809b
-#endif
-#ifndef ETHERTYPE_AARP
-#define ETHERTYPE_AARP 0x80f3
-#endif
-#ifndef ETHERTYPE_NS
-#define ETHERTYPE_NS 0x0600
-#endif
-#ifndef ETHERTYPE_IPX
-#define ETHERTYPE_IPX 0x8137
-#endif
-
diff --git a/usr.sbin/tcpdump/tcpdump/extract.h b/usr.sbin/tcpdump/tcpdump/extract.h
deleted file mode 100644
index 4e10275..0000000
--- a/usr.sbin/tcpdump/tcpdump/extract.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: extract.h,v 1.7 94/06/14 20:11:45 leres Exp $ (LBL)
- */
-
-#ifdef TCPDUMP_ALIGN
-#if BYTEORDER == LITTLE_ENDIAN
-#define EXTRACT_SHORT(p)\
- ((u_short)\
- ((u_short)*((u_char *)p+1)<<8|\
- (u_short)*((u_char *)p+0)<<0))
-#define EXTRACT_LONG(p)\
- ((u_int32)*((u_char *)p+3)<<24|\
- (u_int32)*((u_char *)p+2)<<16|\
- (u_int32)*((u_char *)p+1)<<8|\
- (u_int32)*((u_char *)p+0)<<0)
-#else
-#define EXTRACT_SHORT(p)\
- ((u_short)\
- ((u_short)*((u_char *)p+0)<<8|\
- (u_short)*((u_char *)p+1)<<0))
-#define EXTRACT_LONG(p)\
- ((u_int32)*((u_char *)p+0)<<24|\
- (u_int32)*((u_char *)p+1)<<16|\
- (u_int32)*((u_char *)p+2)<<8|\
- (u_int32)*((u_char *)p+3)<<0)
-#endif
-#else
-#define EXTRACT_SHORT(p) ((u_short)ntohs(*(u_short *)p))
-#define EXTRACT_LONG(p) (ntohl(*(u_int32 *)p))
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/fddi.h b/usr.sbin/tcpdump/tcpdump/fddi.h
deleted file mode 100644
index a6c2711..0000000
--- a/usr.sbin/tcpdump/tcpdump/fddi.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: fddi.h,v 1.6 94/06/14 20:12:35 leres Exp $ (LBL)
- */
-
-/*
- * Based on Ultrix if_fddi.h
- */
-
-/*
- * This stuff should come from a system header file, but there's no
- * obviously portable way to do that and it's not really going
- * to change from system to system (except for the padding business).
- */
-
-struct fddi_header {
-#if defined(ultrix) || defined(__alpha)
- /* Ultrix pads to make everything line up on a nice boundary */
-#define FDDIPAD 3
- u_char fddi_ph[FDDIPAD];
-#else
-#define FDDIPAD 0
-#endif
- u_char fddi_fc; /* frame control */
- u_char fddi_dhost[6];
- u_char fddi_shost[6];
-};
-
-
-/* Useful values for fddi_fc (frame control) field */
-
-/*
- * FDDI Frame Control bits
- */
-#define FDDIFC_C 0x80 /* Class bit */
-#define FDDIFC_L 0x40 /* Address length bit */
-#define FDDIFC_F 0x30 /* Frame format bits */
-#define FDDIFC_Z 0x0f /* Control bits */
-
-/*
- * FDDI Frame Control values. (48-bit addressing only).
- */
-#define FDDIFC_VOID 0x40 /* Void frame */
-#define FDDIFC_NRT 0x80 /* Nonrestricted token */
-#define FDDIFC_RT 0xc0 /* Restricted token */
-#define FDDIFC_SMT_INFO 0x41 /* SMT Info */
-#define FDDIFC_SMT_NSA 0x4F /* SMT Next station adrs */
-#define FDDIFC_MAC_BEACON 0xc2 /* MAC Beacon frame */
-#define FDDIFC_MAC_CLAIM 0xc3 /* MAC Claim frame */
-#define FDDIFC_LLC_ASYNC 0x50 /* Async. LLC frame */
-#define FDDIFC_LLC_SYNC 0xd0 /* Sync. LLC frame */
-#define FDDIFC_IMP_ASYNC 0x60 /* Implementor Async. */
-#define FDDIFC_IMP_SYNC 0xe0 /* Implementor Synch. */
-#define FDDIFC_SMT 0x40 /* SMT frame */
-#define FDDIFC_MAC 0xc0 /* MAC frame */
-
-#define FDDIFC_CLFF 0xF0 /* Class/Length/Format bits */
-#define FDDIFC_ZZZZ 0x0F /* Control bits */
diff --git a/usr.sbin/tcpdump/tcpdump/interface.h b/usr.sbin/tcpdump/tcpdump/interface.h
deleted file mode 100644
index 146ca6a..0000000
--- a/usr.sbin/tcpdump/tcpdump/interface.h
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: interface.h,v 1.66 94/06/14 20:21:37 leres Exp $ (LBL)
- */
-
-#ifdef __GNUC__
-#define inline __inline
-#ifndef __dead
-#define __dead volatile
-#endif
-#else
-#define inline
-#define __dead
-#endif
-
-#include "os.h" /* operating system stuff */
-#include "md.h" /* machine dependent stuff */
-
-#ifndef SIGRET
-#define SIGRET void /* default */
-#endif
-
-struct token {
- int v; /* value */
- char *s; /* string */
-};
-
-extern int dflag; /* print filter code */
-extern int eflag; /* print ethernet header */
-extern int nflag; /* leave addresses as numbers */
-extern int Nflag; /* remove domains from printed host names */
-extern int qflag; /* quick (shorter) output */
-extern int Sflag; /* print raw TCP sequence numbers */
-extern int tflag; /* print packet arrival time */
-extern int vflag; /* verbose */
-extern int xflag; /* print packet in hex */
-
-extern char *program_name; /* used to generate self-identifying messages */
-
-extern int snaplen;
-/* global pointers to beginning and end of current packet (during printing) */
-extern const u_char *packetp;
-extern const u_char *snapend;
-
-extern int fddipad; /* alignment offset for FDDI headers, in bytes */
-
-/* Eliminate some bogus warnings. */
-struct timeval;
-
-typedef void (*printfunc)(u_char *, struct timeval *, int, int);
-
-extern void ts_print(const struct timeval *);
-extern int clock_sigfigs(void);
-int gmt2local(void);
-
-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 token *, const char *, int);
-extern char *dnaddr_string(u_short);
-extern char *savestr(const char *);
-
-extern int initdevice(char *, int, int *);
-extern void wrapup(int);
-
-extern __dead void error(char *, ...);
-extern void warning(char *, ...);
-
-extern char *read_infile(char *);
-extern char *copy_argv(char **);
-
-extern void usage(void);
-extern char *isonsap_string(const u_char *);
-extern char *llcsap_string(u_char);
-extern char *protoid_string(const u_char *);
-extern char *dnname_string(u_short);
-extern char *dnnum_string(u_short);
-
-/* The printer routines. */
-
-struct pcap_pkthdr;
-
-extern void ether_if_print(u_char *, const struct pcap_pkthdr *,
- const u_char *);
-extern void fddi_if_print(u_char *, const struct pcap_pkthdr *, const u_char*);
-extern void null_if_print(u_char *, const struct pcap_pkthdr *, const u_char*);
-extern void ppp_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
-extern void sl_if_print(u_char *, const struct pcap_pkthdr *, const u_char *);
-
-extern void arp_print(const u_char *, int, int);
-extern void ip_print(const u_char *, int);
-extern void tcp_print(const u_char *, int, const u_char *);
-extern void udp_print(const u_char *, int, const u_char *);
-extern void icmp_print(const u_char *, const u_char *);
-extern void default_print(const u_char *, int);
-extern void default_print_unaligned(const u_char *, int);
-
-extern void aarp_print(const u_char *, int);
-extern void atalk_print(const u_char *, int);
-extern void bootp_print(const u_char *, int, u_short, u_short);
-extern void decnet_print(const u_char *, int, int);
-extern void egp_print(const u_char *, int, const u_char *);
-extern int ether_encap_print(u_short, const u_char *, int, int);
-extern void ipx_print(const u_char *, int length);
-extern void isoclns_print(const u_char *, int, int,
- const u_char *, const u_char *);
-extern int llc_print(const u_char *, int, int, const u_char *, const u_char *);
-extern void nfsreply_print(const u_char *, int, const u_char *);
-extern void nfsreq_print(const u_char *, int, const u_char *);
-extern void ns_print(const u_char *, int);
-extern void ntp_print(const u_char *, int);
-extern void ospf_print(const u_char *, int, const u_char *);
-extern void rip_print(const u_char *, int);
-extern void snmp_print(const u_char *, int);
-extern void sunrpcrequest_print(const u_char *, int, const u_char *);
-extern void tftp_print(const u_char *, int);
-extern void wb_print(const void *, int);
-
-#define min(a,b) ((a)>(b)?(b):(a))
-#define max(a,b) ((b)>(a)?(b):(a))
-
-/*
- * The default snapshot length. This value allows most printers to print
- * useful information while keeping the amount of unwanted data down.
- * In particular, it allows for an ethernet header, tcp/ip header, and
- * 14 bytes of data (assuming no ip options).
- */
-#define DEFAULT_SNAPLEN 68
-
-#ifndef BIG_ENDIAN
-#define BIG_ENDIAN 4321
-#define LITTLE_ENDIAN 1234
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/ipx.h b/usr.sbin/tcpdump/tcpdump/ipx.h
deleted file mode 100644
index 075d727..0000000
--- a/usr.sbin/tcpdump/tcpdump/ipx.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * IPX protocol formats
- *
- * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/ipx.h,v 1.1 1995/03/08 12:52:15 olah Exp $
- */
-
-/* well-known sockets */
-#define IPX_SKT_NCP 0x0451
-#define IPX_SKT_SAP 0x0452
-#define IPX_SKT_RIP 0x0453
-#define IPX_SKT_NETBIOS 0x0455
-#define IPX_SKT_DIAGNOSTICS 0x0456
-
-/* IPX transport header */
-struct ipxHdr {
- u_short cksum; /* Checksum */
- u_short length; /* Length, in bytes, including header */
- u_char tCtl; /* Transport Control (i.e. hop count) */
- u_char pType; /* Packet Type (i.e. level 2 protocol) */
- u_short dstNet[2]; /* destination net */
- u_char dstNode[6]; /* destination node */
- u_short dstSkt; /* destination socket */
- u_short srcNet[2]; /* source net */
- u_char srcNode[6]; /* source node */
- u_short srcSkt; /* source socket */
-} ipx_hdr_t;
-
-#define ipxSize 30
-
diff --git a/usr.sbin/tcpdump/tcpdump/llc.h b/usr.sbin/tcpdump/tcpdump/llc.h
deleted file mode 100644
index 89c10d5..0000000
--- a/usr.sbin/tcpdump/tcpdump/llc.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (c) 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: llc.h,v 1.4 94/06/14 20:11:46 leres Exp $ (LBL)
- */
-
-/*
- * This stuff should come from a system header file, but there's no
- * obviously portable way to do that and it's not really going
- * to change from system to system.
- */
-
-/*
- * A somewhat abstracted view of the LLC header
- */
-
-struct llc {
- u_char dsap;
- u_char ssap;
- union {
- u_char u_ctl;
- u_short is_ctl;
- struct {
- u_char snap_ui;
- u_char snap_pi[5];
- } snap;
- struct {
- u_char snap_ui;
- u_char snap_orgcode[3];
- u_char snap_ethertype[2];
- } snap_ether;
- } ctl;
-};
-
-#define llcui ctl.snap.snap_ui
-#define llcpi ctl.snap.snap_pi
-#define orgcode ctl.snap_ether.snap_orgcode
-#define ethertype ctl.snap_ether.snap_ethertype
-#define llcis ctl.is_ctl
-#define llcu ctl.u_ctl
-
-#define LLC_U_FMT 3
-#define LLC_GSAP 1
-#define LLC_S_FMT 1
-
-#define LLC_U_POLL 0x10
-#define LLC_IS_POLL 0x0001
-#define LLC_XID_FI 0x81
-
-#define LLC_U_CMD(u) ((u) & 0xef)
-#define LLC_UI 0x03
-#define LLC_UA 0x63
-#define LLC_DISC 0x43
-#define LLC_DM 0x0f
-#define LLC_SABME 0x6f
-#define LLC_TEST 0xe3
-#define LLC_XID 0xaf
-#define LLC_FRMR 0x87
-
-#define LLC_S_CMD(is) (((is) >> 10) & 0x03)
-#define LLC_RR 0x0100
-#define LLC_RNR 0x0500
-#define LLC_REJ 0x0900
-
-#define LLC_IS_NR(is) (((is) >> 9) & 0x7f)
-#define LLC_I_NS(is) (((is) >> 1) & 0x7f)
-
-#ifndef LLCSAP_NULL
-#define LLCSAP_NULL 0x00
-#endif
-#ifndef LLCSAP_GLOBAL
-#define LLCSAP_GLOBAL 0xff
-#endif
-#ifndef LLCSAP_8021B
-#define LLCSAP_8021B_I 0x02
-#endif
-#ifndef LLCSAP_8021B
-#define LLCSAP_8021B_G 0x03
-#endif
-#ifndef LLCSAP_IP
-#define LLCSAP_IP 0x06
-#endif
-#ifndef LLCSAP_PROWAYNM
-#define LLCSAP_PROWAYNM 0x0e
-#endif
-#ifndef LLCSAP_8021D
-#define LLCSAP_8021D 0x42
-#endif
-#ifndef LLCSAP_RS511
-#define LLCSAP_RS511 0x4e
-#endif
-#ifndef LLCSAP_ISO8208
-#define LLCSAP_ISO8208 0x7e
-#endif
-#ifndef LLCSAP_PROWAY
-#define LLCSAP_PROWAY 0x8e
-#endif
-#ifndef LLCSAP_SNAP
-#define LLCSAP_SNAP 0xaa
-#endif
-#ifndef LLCSAP_ISONS
-#define LLCSAP_ISONS 0xfe
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/md.h b/usr.sbin/tcpdump/tcpdump/md.h
deleted file mode 100644
index 65085d2..0000000
--- a/usr.sbin/tcpdump/tcpdump/md.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (c) 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/md.h,v 1.2 1995/03/08 12:52:17 olah Exp $ (LBL)
- */
-
-#define TCPDUMP_ALIGN
-
-#include <machine/endian.h>
-
-/* 32-bit data types */
-/* N.B.: this doesn't address printf()'s %d vs. %ld formats */
-typedef int32_t int32; /* signed 32-bit integer */
-typedef u_int32_t u_int32; /* unsigned 32-bit integer */
diff --git a/usr.sbin/tcpdump/tcpdump/mib.h b/usr.sbin/tcpdump/tcpdump/mib.h
deleted file mode 100644
index 48ead9b..0000000
--- a/usr.sbin/tcpdump/tcpdump/mib.h
+++ /dev/null
@@ -1,1256 +0,0 @@
-/*
- * This file was generated by tcpdump/makemib on Wed Sep 26 12:12:31 EDT 1990
- * You probably don't want to edit this by hand!
- *
- * struct mib somename = { desc, oid-octet, type, child-pointer, next-pointer
-};
- */
-
-/* parse problem: new name "mib" for mgmt.mib(1) ignored */
-/* parse problem: no parent for 0.nullSpecific(0) */
-struct obj
-_proteon_obj = {
- "proteon", 1, 0,
- NULL, NULL
-},
-_ibm_obj = {
- "ibm", 2, 0,
- NULL, &_proteon_obj
-},
-_cmu_obj = {
- "cmu", 3, 0,
- NULL, &_ibm_obj
-},
-_unix_obj = {
- "unix", 4, 0,
- NULL, &_cmu_obj
-},
-_acc_obj = {
- "acc", 5, 0,
- NULL, &_unix_obj
-},
-_twg_obj = {
- "twg", 6, 0,
- NULL, &_acc_obj
-},
-_cayman_obj = {
- "cayman", 7, 0,
- NULL, &_twg_obj
-},
-_nysernet_obj = {
- "nysernet", 8, 0,
- NULL, &_cayman_obj
-},
-_cisco_obj = {
- "cisco", 9, 0,
- NULL, &_nysernet_obj
-},
-_nsc_obj = {
- "nsc", 10, 0,
- NULL, &_cisco_obj
-},
-_hp_obj = {
- "hp", 11, 0,
- NULL, &_nsc_obj
-},
-_epilogue_obj = {
- "epilogue", 12, 0,
- NULL, &_hp_obj
-},
-_utennessee_obj = {
- "utennessee", 13, 0,
- NULL, &_epilogue_obj
-},
-_bbn_obj = {
- "bbn", 14, 0,
- NULL, &_utennessee_obj
-},
-_xylogics_obj = {
- "xylogics", 15, 0,
- NULL, &_bbn_obj
-},
-_unisys_obj = {
- "unisys", 16, 0,
- NULL, &_xylogics_obj
-},
-_canstar_obj = {
- "canstar", 17, 0,
- NULL, &_unisys_obj
-},
-_wellfleet_obj = {
- "wellfleet", 18, 0,
- NULL, &_canstar_obj
-},
-_trw_obj = {
- "trw", 19, 0,
- NULL, &_wellfleet_obj
-},
-_mit_obj = {
- "mit", 20, 0,
- NULL, &_trw_obj
-},
-_eon_obj = {
- "eon", 21, 0,
- NULL, &_mit_obj
-},
-_spartacus_obj = {
- "spartacus", 22, 0,
- NULL, &_eon_obj
-},
-_excelan_obj = {
- "excelan", 23, 0,
- NULL, &_spartacus_obj
-},
-_spider_obj = {
- "spider", 24, 0,
- NULL, &_excelan_obj
-},
-_nsfnet_obj = {
- "nsfnet", 25, 0,
- NULL, &_spider_obj
-},
-_sytek_obj = {
- "sytek", 26, 0,
- NULL, &_nsfnet_obj
-},
-_intergraph_obj = {
- "intergraph", 27, 0,
- NULL, &_sytek_obj
-},
-_interlan_obj = {
- "interlan", 28, 0,
- NULL, &_intergraph_obj
-},
-_vitalink_obj = {
- "vitalink", 29, 0,
- NULL, &_interlan_obj
-},
-_ulana_obj = {
- "ulana", 30, 0,
- NULL, &_vitalink_obj
-},
-_nswc_obj = {
- "nswc", 31, 0,
- NULL, &_ulana_obj
-},
-_santacruzoperation_obj = {
- "santacruzoperation", 32, 0,
- NULL, &_nswc_obj
-},
-_xyplex_obj = {
- "xyplex", 33, 0,
- NULL, &_santacruzoperation_obj
-},
-_cray_obj = {
- "cray", 34, 0,
- NULL, &_xyplex_obj
-},
-_bellnorthernresearch_obj = {
- "bellnorthernresearch", 35, 0,
- NULL, &_cray_obj
-},
-_dec_obj = {
- "dec", 36, 0,
- NULL, &_bellnorthernresearch_obj
-},
-_touch_obj = {
- "touch", 37, 0,
- NULL, &_dec_obj
-},
-_networkresearchcorp_obj = {
- "networkresearchcorp", 38, 0,
- NULL, &_touch_obj
-},
-_baylor_obj = {
- "baylor", 39, 0,
- NULL, &_networkresearchcorp_obj
-},
-_nmfeccllnl_obj = {
- "nmfeccllnl", 40, 0,
- NULL, &_baylor_obj
-},
-_sri_obj = {
- "sri", 41, 0,
- NULL, &_nmfeccllnl_obj
-},
-_sun_obj = {
- "sun", 42, 0,
- NULL, &_sri_obj
-},
-_3com_obj = {
- "3com", 43, 0,
- NULL, &_sun_obj
-},
-_cmc_obj = {
- "cmc", 44, 0,
- NULL, &_3com_obj
-},
-_synoptics_obj = {
- "synoptics", 45, 0,
- NULL, &_cmc_obj
-},
-_cheyenne_obj = {
- "cheyenne", 46, 0,
- NULL, &_synoptics_obj
-},
-_prime_obj = {
- "prime", 47, 0,
- NULL, &_cheyenne_obj
-},
-_mcnc_obj = {
- "mcnc", 48, 0,
- NULL, &_prime_obj
-},
-_chipcom_obj = {
- "chipcom", 49, 0,
- NULL, &_mcnc_obj
-},
-_opticaldatasystems_obj = {
- "opticaldatasystems", 50, 0,
- NULL, &_chipcom_obj
-},
-_gated_obj = {
- "gated", 51, 0,
- NULL, &_opticaldatasystems_obj
-},
-_cabletron_obj = {
- "cabletron", 52, 0,
- NULL, &_gated_obj
-},
-_apollo_obj = {
- "apollo", 53, 0,
- NULL, &_cabletron_obj
-},
-_desktalksystems_obj = {
- "desktalksystems", 54, 0,
- NULL, &_apollo_obj
-},
-_ssds_obj = {
- "ssds", 55, 0,
- NULL, &_desktalksystems_obj
-},
-_castlerock_obj = {
- "castlerock", 56, 0,
- NULL, &_ssds_obj
-},
-_mips_obj = {
- "mips", 57, 0,
- NULL, &_castlerock_obj
-},
-_tgv_obj = {
- "tgv", 58, 0,
- NULL, &_mips_obj
-},
-_silicongraphics_obj = {
- "silicongraphics", 59, 0,
- NULL, &_tgv_obj
-},
-_ubc_obj = {
- "ubc", 60, 0,
- NULL, &_silicongraphics_obj
-},
-_merit_obj = {
- "merit", 61, 0,
- NULL, &_ubc_obj
-},
-_fibercom_obj = {
- "fibercom", 62, 0,
- NULL, &_merit_obj
-},
-_apple_obj = {
- "apple", 63, 0,
- NULL, &_fibercom_obj
-},
-_gandalf_obj = {
- "gandalf", 64, 0,
- NULL, &_apple_obj
-},
-_dartmouth_obj = {
- "dartmouth", 65, 0,
- NULL, &_gandalf_obj
-},
-_davidsystems_obj = {
- "davidsystems", 66, 0,
- NULL, &_dartmouth_obj
-},
-_reuter_obj = {
- "reuter", 67, 0,
- NULL, &_davidsystems_obj
-},
-_cornell_obj = {
- "cornell", 68, 0,
- NULL, &_reuter_obj
-},
-_tmac_obj = {
- "tmac", 69, 0,
- NULL, &_cornell_obj
-},
-_locus_obj = {
- "locus", 70, 0,
- NULL, &_tmac_obj
-},
-_nasa_obj = {
- "nasa", 71, 0,
- NULL, &_locus_obj
-},
-_retix_obj = {
- "retix", 72, 0,
- NULL, &_nasa_obj
-},
-_boeing_obj = {
- "boeing", 73, 0,
- NULL, &_retix_obj
-},
-_att_obj = {
- "att", 74, 0,
- NULL, &_boeing_obj
-},
-_ungermannbass_obj = {
- "ungermannbass", 75, 0,
- NULL, &_att_obj
-},
-_digitalanalysis_obj = {
- "digitalanalysis", 76, 0,
- NULL, &_ungermannbass_obj
-},
-_hplanman_obj = {
- "hplanman", 77, 0,
- NULL, &_digitalanalysis_obj
-},
-_netlabs_obj = {
- "netlabs", 78, 0,
- NULL, &_hplanman_obj
-},
-_icl_obj = {
- "icl", 79, 0,
- NULL, &_netlabs_obj
-},
-_auspex_obj = {
- "auspex", 80, 0,
- NULL, &_icl_obj
-},
-_lannet_obj = {
- "lannet", 81, 0,
- NULL, &_auspex_obj
-},
-_ncd_obj = {
- "ncd", 82, 0,
- NULL, &_lannet_obj
-},
-_raycom_obj = {
- "raycom", 83, 0,
- NULL, &_ncd_obj
-},
-_pirellifocom_obj = {
- "pirellifocom", 84, 0,
- NULL, &_raycom_obj
-},
-_datability_obj = {
- "datability", 85, 0,
- NULL, &_pirellifocom_obj
-},
-_networkappltech_obj = {
- "networkappltech", 86, 0,
- NULL, &_datability_obj
-},
-_link_obj = {
- "link", 87, 0,
- NULL, &_networkappltech_obj
-},
-_nyu_obj = {
- "nyu", 88, 0,
- NULL, &_link_obj
-},
-_rnd_obj = {
- "rnd", 89, 0,
- NULL, &_nyu_obj
-},
-_intercon_obj = {
- "intercon", 90, 0,
- NULL, &_rnd_obj
-},
-_learningtree_obj = {
- "learningtree", 91, 0,
- NULL, &_intercon_obj
-},
-_webstercomputer_obj = {
- "webstercomputer", 92, 0,
- NULL, &_learningtree_obj
-},
-_frontier_obj = {
- "frontier", 93, 0,
- NULL, &_webstercomputer_obj
-},
-_nokia_obj = {
- "nokia", 94, 0,
- NULL, &_frontier_obj
-},
-_allenbradley_obj = {
- "allenbradley", 95, 0,
- NULL, &_nokia_obj
-},
-_cern_obj = {
- "cern", 96, 0,
- NULL, &_allenbradley_obj
-},
-_sigma_obj = {
- "sigma", 97, 0,
- NULL, &_cern_obj
-},
-_emergingtech_obj = {
- "emergingtech", 98, 0,
- NULL, &_sigma_obj
-},
-_snmpresearch_obj = {
- "snmpresearch", 99, 0,
- NULL, &_emergingtech_obj
-},
-_ohiostate_obj = {
- "ohiostate", 100, 0,
- NULL, &_snmpresearch_obj
-},
-_ultra_obj = {
- "ultra", 101, 0,
- NULL, &_ohiostate_obj
-},
-_ccur_obj = {
- "ccur", 136, 0,
- NULL, &_ultra_obj
-},
-_enterprises_obj = {
- "enterprises", 1, 0,
- &_ccur_obj, NULL
-},
-_snmpInPkts_obj = {
- "snmpInPkts", 1, 0,
- NULL, NULL
-},
-_snmpOutPkts_obj = {
- "snmpOutPkts", 2, 0,
- NULL, &_snmpInPkts_obj
-},
-_snmpInBadVersions_obj = {
- "snmpInBadVersions", 3, 0,
- NULL, &_snmpOutPkts_obj
-},
-_snmpInBadCommunityNames_obj = {
- "snmpInBadCommunityNames", 4, 0,
- NULL, &_snmpInBadVersions_obj
-},
-_snmpInBadCommunityUses_obj = {
- "snmpInBadCommunityUses", 5, 0,
- NULL, &_snmpInBadCommunityNames_obj
-},
-_snmpInASNParseErrs_obj = {
- "snmpInASNParseErrs", 6, 0,
- NULL, &_snmpInBadCommunityUses_obj
-},
-_snmpInBadTypes_obj = {
- "snmpInBadTypes", 7, 0,
- NULL, &_snmpInASNParseErrs_obj
-},
-_snmpInTooBigs_obj = {
- "snmpInTooBigs", 8, 0,
- NULL, &_snmpInBadTypes_obj
-},
-_snmpInNoSuchNames_obj = {
- "snmpInNoSuchNames", 9, 0,
- NULL, &_snmpInTooBigs_obj
-},
-_snmpInBadValues_obj = {
- "snmpInBadValues", 10, 0,
- NULL, &_snmpInNoSuchNames_obj
-},
-_snmpInReadOnlys_obj = {
- "snmpInReadOnlys", 11, 0,
- NULL, &_snmpInBadValues_obj
-},
-_snmpInGenErrs_obj = {
- "snmpInGenErrs", 12, 0,
- NULL, &_snmpInReadOnlys_obj
-},
-_snmpInTotalReqVars_obj = {
- "snmpInTotalReqVars", 13, 0,
- NULL, &_snmpInGenErrs_obj
-},
-_snmpInTotalSetVars_obj = {
- "snmpInTotalSetVars", 14, 0,
- NULL, &_snmpInTotalReqVars_obj
-},
-_snmpInGetRequests_obj = {
- "snmpInGetRequests", 15, 0,
- NULL, &_snmpInTotalSetVars_obj
-},
-_snmpInGetNexts_obj = {
- "snmpInGetNexts", 16, 0,
- NULL, &_snmpInGetRequests_obj
-},
-_snmpInSetRequests_obj = {
- "snmpInSetRequests", 17, 0,
- NULL, &_snmpInGetNexts_obj
-},
-_snmpInGetResponses_obj = {
- "snmpInGetResponses", 18, 0,
- NULL, &_snmpInSetRequests_obj
-},
-_snmpInTraps_obj = {
- "snmpInTraps", 19, 0,
- NULL, &_snmpInGetResponses_obj
-},
-_snmpOutTooBigs_obj = {
- "snmpOutTooBigs", 20, 0,
- NULL, &_snmpInTraps_obj
-},
-_snmpOutNoSuchNames_obj = {
- "snmpOutNoSuchNames", 21, 0,
- NULL, &_snmpOutTooBigs_obj
-},
-_snmpOutBadValues_obj = {
- "snmpOutBadValues", 22, 0,
- NULL, &_snmpOutNoSuchNames_obj
-},
-_snmpOutReadOnlys_obj = {
- "snmpOutReadOnlys", 23, 0,
- NULL, &_snmpOutBadValues_obj
-},
-_snmpOutGenErrs_obj = {
- "snmpOutGenErrs", 24, 0,
- NULL, &_snmpOutReadOnlys_obj
-},
-_snmpOutGetRequests_obj = {
- "snmpOutGetRequests", 25, 0,
- NULL, &_snmpOutGenErrs_obj
-},
-_snmpOutGetNexts_obj = {
- "snmpOutGetNexts", 26, 0,
- NULL, &_snmpOutGetRequests_obj
-},
-_snmpOutSetRequests_obj = {
- "snmpOutSetRequests", 27, 0,
- NULL, &_snmpOutGetNexts_obj
-},
-_snmpOutGetResponses_obj = {
- "snmpOutGetResponses", 28, 0,
- NULL, &_snmpOutSetRequests_obj
-},
-_snmpOutTraps_obj = {
- "snmpOutTraps", 29, 0,
- NULL, &_snmpOutGetResponses_obj
-},
-_snmpEnableAuthTraps_obj = {
- "snmpEnableAuthTraps", 30, 0,
- NULL, &_snmpOutTraps_obj
-},
-_egpNeighState_obj = {
- "egpNeighState", 1, 0,
- NULL, NULL
-},
-_egpNeighAddr_obj = {
- "egpNeighAddr", 2, 0,
- NULL, &_egpNeighState_obj
-},
-_egpNeighAs_obj = {
- "egpNeighAs", 3, 0,
- NULL, &_egpNeighAddr_obj
-},
-_egpNeighInMsgs_obj = {
- "egpNeighInMsgs", 4, 0,
- NULL, &_egpNeighAs_obj
-},
-_egpNeighInErrs_obj = {
- "egpNeighInErrs", 5, 0,
- NULL, &_egpNeighInMsgs_obj
-},
-_egpNeighOutMsgs_obj = {
- "egpNeighOutMsgs", 6, 0,
- NULL, &_egpNeighInErrs_obj
-},
-_egpNeighOutErrs_obj = {
- "egpNeighOutErrs", 7, 0,
- NULL, &_egpNeighOutMsgs_obj
-},
-_egpNeighInErrMsgs_obj = {
- "egpNeighInErrMsgs", 8, 0,
- NULL, &_egpNeighOutErrs_obj
-},
-_egpNeighOutErrMsgs_obj = {
- "egpNeighOutErrMsgs", 9, 0,
- NULL, &_egpNeighInErrMsgs_obj
-},
-_egpNeighStateUps_obj = {
- "egpNeighStateUps", 10, 0,
- NULL, &_egpNeighOutErrMsgs_obj
-},
-_egpNeighStateDowns_obj = {
- "egpNeighStateDowns", 11, 0,
- NULL, &_egpNeighStateUps_obj
-},
-_egpNeighIntervalHello_obj = {
- "egpNeighIntervalHello", 12, 0,
- NULL, &_egpNeighStateDowns_obj
-},
-_egpNeighIntervalPoll_obj = {
- "egpNeighIntervalPoll", 13, 0,
- NULL, &_egpNeighIntervalHello_obj
-},
-_egpNeighMode_obj = {
- "egpNeighMode", 14, 0,
- NULL, &_egpNeighIntervalPoll_obj
-},
-_egpNeighEventTrigger_obj = {
- "egpNeighEventTrigger", 15, 0,
- NULL, &_egpNeighMode_obj
-},
-_egpNeighEntry_obj = {
- "egpNeighEntry", 1, 0,
- &_egpNeighEventTrigger_obj, NULL
-},
-_egpInMsgs_obj = {
- "egpInMsgs", 1, 0,
- NULL, NULL
-},
-_egpInErrors_obj = {
- "egpInErrors", 2, 0,
- NULL, &_egpInMsgs_obj
-},
-_egpOutMsgs_obj = {
- "egpOutMsgs", 3, 0,
- NULL, &_egpInErrors_obj
-},
-_egpOutErrors_obj = {
- "egpOutErrors", 4, 0,
- NULL, &_egpOutMsgs_obj
-},
-_egpNeighTable_obj = {
- "egpNeighTable", 5, 0,
- &_egpNeighEntry_obj, &_egpOutErrors_obj
-},
-_egpAs_obj = {
- "egpAs", 6, 0,
- NULL, &_egpNeighTable_obj
-},
-_udpLocalAddress_obj = {
- "udpLocalAddress", 1, 0,
- NULL, NULL
-},
-_udpLocalPort_obj = {
- "udpLocalPort", 2, 0,
- NULL, &_udpLocalAddress_obj
-},
-_udpEntry_obj = {
- "udpEntry", 1, 0,
- &_udpLocalPort_obj, NULL
-},
-_udpInDatagrams_obj = {
- "udpInDatagrams", 1, 0,
- NULL, NULL
-},
-_udpNoPorts_obj = {
- "udpNoPorts", 2, 0,
- NULL, &_udpInDatagrams_obj
-},
-_udpInErrors_obj = {
- "udpInErrors", 3, 0,
- NULL, &_udpNoPorts_obj
-},
-_udpOutDatagrams_obj = {
- "udpOutDatagrams", 4, 0,
- NULL, &_udpInErrors_obj
-},
-_udpTable_obj = {
- "udpTable", 5, 0,
- &_udpEntry_obj, &_udpOutDatagrams_obj
-},
-_tcpConnState_obj = {
- "tcpConnState", 1, 0,
- NULL, NULL
-},
-_tcpConnLocalAddress_obj = {
- "tcpConnLocalAddress", 2, 0,
- NULL, &_tcpConnState_obj
-},
-_tcpConnLocalPort_obj = {
- "tcpConnLocalPort", 3, 0,
- NULL, &_tcpConnLocalAddress_obj
-},
-_tcpConnRemAddress_obj = {
- "tcpConnRemAddress", 4, 0,
- NULL, &_tcpConnLocalPort_obj
-},
-_tcpConnRemPort_obj = {
- "tcpConnRemPort", 5, 0,
- NULL, &_tcpConnRemAddress_obj
-},
-_tcpConnEntry_obj = {
- "tcpConnEntry", 1, 0,
- &_tcpConnRemPort_obj, NULL
-},
-_tcpRtoAlgorithm_obj = {
- "tcpRtoAlgorithm", 1, 0,
- NULL, NULL
-},
-_tcpRtoMin_obj = {
- "tcpRtoMin", 2, 0,
- NULL, &_tcpRtoAlgorithm_obj
-},
-_tcpRtoMax_obj = {
- "tcpRtoMax", 3, 0,
- NULL, &_tcpRtoMin_obj
-},
-_tcpMaxConn_obj = {
- "tcpMaxConn", 4, 0,
- NULL, &_tcpRtoMax_obj
-},
-_tcpActiveOpens_obj = {
- "tcpActiveOpens", 5, 0,
- NULL, &_tcpMaxConn_obj
-},
-_tcpPassiveOpens_obj = {
- "tcpPassiveOpens", 6, 0,
- NULL, &_tcpActiveOpens_obj
-},
-_tcpAttemptFails_obj = {
- "tcpAttemptFails", 7, 0,
- NULL, &_tcpPassiveOpens_obj
-},
-_tcpEstabResets_obj = {
- "tcpEstabResets", 8, 0,
- NULL, &_tcpAttemptFails_obj
-},
-_tcpCurrEstab_obj = {
- "tcpCurrEstab", 9, 0,
- NULL, &_tcpEstabResets_obj
-},
-_tcpInSegs_obj = {
- "tcpInSegs", 10, 0,
- NULL, &_tcpCurrEstab_obj
-},
-_tcpOutSegs_obj = {
- "tcpOutSegs", 11, 0,
- NULL, &_tcpInSegs_obj
-},
-_tcpRetransSegs_obj = {
- "tcpRetransSegs", 12, 0,
- NULL, &_tcpOutSegs_obj
-},
-_tcpConnTable_obj = {
- "tcpConnTable", 13, 0,
- &_tcpConnEntry_obj, &_tcpRetransSegs_obj
-},
-_tcpInErrs_obj = {
- "tcpInErrs", 14, 0,
- NULL, &_tcpConnTable_obj
-},
-_tcpOutRsts_obj = {
- "tcpOutRsts", 15, 0,
- NULL, &_tcpInErrs_obj
-},
-_icmpInMsgs_obj = {
- "icmpInMsgs", 1, 0,
- NULL, NULL
-},
-_icmpInErrors_obj = {
- "icmpInErrors", 2, 0,
- NULL, &_icmpInMsgs_obj
-},
-_icmpInDestUnreachs_obj = {
- "icmpInDestUnreachs", 3, 0,
- NULL, &_icmpInErrors_obj
-},
-_icmpInTimeExcds_obj = {
- "icmpInTimeExcds", 4, 0,
- NULL, &_icmpInDestUnreachs_obj
-},
-_icmpInParmProbs_obj = {
- "icmpInParmProbs", 5, 0,
- NULL, &_icmpInTimeExcds_obj
-},
-_icmpInSrcQuenchs_obj = {
- "icmpInSrcQuenchs", 6, 0,
- NULL, &_icmpInParmProbs_obj
-},
-_icmpInRedirects_obj = {
- "icmpInRedirects", 7, 0,
- NULL, &_icmpInSrcQuenchs_obj
-},
-_icmpInEchos_obj = {
- "icmpInEchos", 8, 0,
- NULL, &_icmpInRedirects_obj
-},
-_icmpInEchoReps_obj = {
- "icmpInEchoReps", 9, 0,
- NULL, &_icmpInEchos_obj
-},
-_icmpInTimestamps_obj = {
- "icmpInTimestamps", 10, 0,
- NULL, &_icmpInEchoReps_obj
-},
-_icmpInTimestampReps_obj = {
- "icmpInTimestampReps", 11, 0,
- NULL, &_icmpInTimestamps_obj
-},
-_icmpInAddrMasks_obj = {
- "icmpInAddrMasks", 12, 0,
- NULL, &_icmpInTimestampReps_obj
-},
-_icmpInAddrMaskReps_obj = {
- "icmpInAddrMaskReps", 13, 0,
- NULL, &_icmpInAddrMasks_obj
-},
-_icmpOutMsgs_obj = {
- "icmpOutMsgs", 14, 0,
- NULL, &_icmpInAddrMaskReps_obj
-},
-_icmpOutErrors_obj = {
- "icmpOutErrors", 15, 0,
- NULL, &_icmpOutMsgs_obj
-},
-_icmpOutDestUnreachs_obj = {
- "icmpOutDestUnreachs", 16, 0,
- NULL, &_icmpOutErrors_obj
-},
-_icmpOutTimeExcds_obj = {
- "icmpOutTimeExcds", 17, 0,
- NULL, &_icmpOutDestUnreachs_obj
-},
-_icmpOutParmProbs_obj = {
- "icmpOutParmProbs", 18, 0,
- NULL, &_icmpOutTimeExcds_obj
-},
-_icmpOutSrcQuenchs_obj = {
- "icmpOutSrcQuenchs", 19, 0,
- NULL, &_icmpOutParmProbs_obj
-},
-_icmpOutRedirects_obj = {
- "icmpOutRedirects", 20, 0,
- NULL, &_icmpOutSrcQuenchs_obj
-},
-_icmpOutEchos_obj = {
- "icmpOutEchos", 21, 0,
- NULL, &_icmpOutRedirects_obj
-},
-_icmpOutEchoReps_obj = {
- "icmpOutEchoReps", 22, 0,
- NULL, &_icmpOutEchos_obj
-},
-_icmpOutTimestamps_obj = {
- "icmpOutTimestamps", 23, 0,
- NULL, &_icmpOutEchoReps_obj
-},
-_icmpOutTimestampReps_obj = {
- "icmpOutTimestampReps", 24, 0,
- NULL, &_icmpOutTimestamps_obj
-},
-_icmpOutAddrMasks_obj = {
- "icmpOutAddrMasks", 25, 0,
- NULL, &_icmpOutTimestampReps_obj
-},
-_icmpOutAddrMaskReps_obj = {
- "icmpOutAddrMaskReps", 26, 0,
- NULL, &_icmpOutAddrMasks_obj
-},
-_ipNetToMediaIfIndex_obj = {
- "ipNetToMediaIfIndex", 1, 0,
- NULL, NULL
-},
-_ipNetToMediaPhysAddress_obj = {
- "ipNetToMediaPhysAddress", 2, 0,
- NULL, &_ipNetToMediaIfIndex_obj
-},
-_ipNetToMediaNetAddress_obj = {
- "ipNetToMediaNetAddress", 3, 0,
- NULL, &_ipNetToMediaPhysAddress_obj
-},
-_ipNetToMediaType_obj = {
- "ipNetToMediaType", 4, 0,
- NULL, &_ipNetToMediaNetAddress_obj
-},
-_ipNetToMediaEntry_obj = {
- "ipNetToMediaEntry", 1, 0,
- &_ipNetToMediaType_obj, NULL
-},
-_ipRouteDest_obj = {
- "ipRouteDest", 1, 0,
- NULL, NULL
-},
-_ipRouteIfIndex_obj = {
- "ipRouteIfIndex", 2, 0,
- NULL, &_ipRouteDest_obj
-},
-_ipRouteMetric1_obj = {
- "ipRouteMetric1", 3, 0,
- NULL, &_ipRouteIfIndex_obj
-},
-_ipRouteMetric2_obj = {
- "ipRouteMetric2", 4, 0,
- NULL, &_ipRouteMetric1_obj
-},
-_ipRouteMetric3_obj = {
- "ipRouteMetric3", 5, 0,
- NULL, &_ipRouteMetric2_obj
-},
-_ipRouteMetric4_obj = {
- "ipRouteMetric4", 6, 0,
- NULL, &_ipRouteMetric3_obj
-},
-_ipRouteNextHop_obj = {
- "ipRouteNextHop", 7, 0,
- NULL, &_ipRouteMetric4_obj
-},
-_ipRouteType_obj = {
- "ipRouteType", 8, 0,
- NULL, &_ipRouteNextHop_obj
-},
-_ipRouteProto_obj = {
- "ipRouteProto", 9, 0,
- NULL, &_ipRouteType_obj
-},
-_ipRouteAge_obj = {
- "ipRouteAge", 10, 0,
- NULL, &_ipRouteProto_obj
-},
-_ipRouteMask_obj = {
- "ipRouteMask", 11, 0,
- NULL, &_ipRouteAge_obj
-},
-_ipRouteEntry_obj = {
- "ipRouteEntry", 1, 0,
- &_ipRouteMask_obj, NULL
-},
-_ipAdEntAddr_obj = {
- "ipAdEntAddr", 1, 0,
- NULL, NULL
-},
-_ipAdEntIfIndex_obj = {
- "ipAdEntIfIndex", 2, 0,
- NULL, &_ipAdEntAddr_obj
-},
-_ipAdEntNetMask_obj = {
- "ipAdEntNetMask", 3, 0,
- NULL, &_ipAdEntIfIndex_obj
-},
-_ipAdEntBcastAddr_obj = {
- "ipAdEntBcastAddr", 4, 0,
- NULL, &_ipAdEntNetMask_obj
-},
-_ipAdEntReasmMaxSize_obj = {
- "ipAdEntReasmMaxSize", 5, 0,
- NULL, &_ipAdEntBcastAddr_obj
-},
-_ipAddrEntry_obj = {
- "ipAddrEntry", 1, 0,
- &_ipAdEntReasmMaxSize_obj, NULL
-},
-_ipForwarding_obj = {
- "ipForwarding", 1, 0,
- NULL, NULL
-},
-_ipDefaultTTL_obj = {
- "ipDefaultTTL", 2, 0,
- NULL, &_ipForwarding_obj
-},
-_ipInReceives_obj = {
- "ipInReceives", 3, 0,
- NULL, &_ipDefaultTTL_obj
-},
-_ipInHdrErrors_obj = {
- "ipInHdrErrors", 4, 0,
- NULL, &_ipInReceives_obj
-},
-_ipInAddrErrors_obj = {
- "ipInAddrErrors", 5, 0,
- NULL, &_ipInHdrErrors_obj
-},
-_ipForwDatagrams_obj = {
- "ipForwDatagrams", 6, 0,
- NULL, &_ipInAddrErrors_obj
-},
-_ipInUnknownProtos_obj = {
- "ipInUnknownProtos", 7, 0,
- NULL, &_ipForwDatagrams_obj
-},
-_ipInDiscards_obj = {
- "ipInDiscards", 8, 0,
- NULL, &_ipInUnknownProtos_obj
-},
-_ipInDelivers_obj = {
- "ipInDelivers", 9, 0,
- NULL, &_ipInDiscards_obj
-},
-_ipOutRequests_obj = {
- "ipOutRequests", 10, 0,
- NULL, &_ipInDelivers_obj
-},
-_ipOutDiscards_obj = {
- "ipOutDiscards", 11, 0,
- NULL, &_ipOutRequests_obj
-},
-_ipOutNoRoutes_obj = {
- "ipOutNoRoutes", 12, 0,
- NULL, &_ipOutDiscards_obj
-},
-_ipReasmTimeout_obj = {
- "ipReasmTimeout", 13, 0,
- NULL, &_ipOutNoRoutes_obj
-},
-_ipReasmReqds_obj = {
- "ipReasmReqds", 14, 0,
- NULL, &_ipReasmTimeout_obj
-},
-_ipReasmOKs_obj = {
- "ipReasmOKs", 15, 0,
- NULL, &_ipReasmReqds_obj
-},
-_ipReasmFails_obj = {
- "ipReasmFails", 16, 0,
- NULL, &_ipReasmOKs_obj
-},
-_ipFragOKs_obj = {
- "ipFragOKs", 17, 0,
- NULL, &_ipReasmFails_obj
-},
-_ipFragFails_obj = {
- "ipFragFails", 18, 0,
- NULL, &_ipFragOKs_obj
-},
-_ipFragCreates_obj = {
- "ipFragCreates", 19, 0,
- NULL, &_ipFragFails_obj
-},
-_ipAddrTable_obj = {
- "ipAddrTable", 20, 0,
- &_ipAddrEntry_obj, &_ipFragCreates_obj
-},
-_ipRoutingTable_obj = {
- "ipRoutingTable", 21, 0,
- &_ipRouteEntry_obj, &_ipAddrTable_obj
-},
-_ipNetToMediaTable_obj = {
- "ipNetToMediaTable", 22, 0,
- &_ipNetToMediaEntry_obj, &_ipRoutingTable_obj
-},
-_atIfIndex_obj = {
- "atIfIndex", 1, 0,
- NULL, NULL
-},
-_atPhysAddress_obj = {
- "atPhysAddress", 2, 0,
- NULL, &_atIfIndex_obj
-},
-_atNetAddress_obj = {
- "atNetAddress", 3, 0,
- NULL, &_atPhysAddress_obj
-},
-_atEntry_obj = {
- "atEntry", 1, 0,
- &_atNetAddress_obj, NULL
-},
-_atTable_obj = {
- "atTable", 1, 0,
- &_atEntry_obj, NULL
-},
-_ifIndex_obj = {
- "ifIndex", 1, 0,
- NULL, NULL
-},
-_ifDescr_obj = {
- "ifDescr", 2, 0,
- NULL, &_ifIndex_obj
-},
-_ifType_obj = {
- "ifType", 3, 0,
- NULL, &_ifDescr_obj
-},
-_ifMtu_obj = {
- "ifMtu", 4, 0,
- NULL, &_ifType_obj
-},
-_ifSpeed_obj = {
- "ifSpeed", 5, 0,
- NULL, &_ifMtu_obj
-},
-_ifPhysAddress_obj = {
- "ifPhysAddress", 6, 0,
- NULL, &_ifSpeed_obj
-},
-_ifAdminStatus_obj = {
- "ifAdminStatus", 7, 0,
- NULL, &_ifPhysAddress_obj
-},
-_ifOperStatus_obj = {
- "ifOperStatus", 8, 0,
- NULL, &_ifAdminStatus_obj
-},
-_ifLastChange_obj = {
- "ifLastChange", 9, 0,
- NULL, &_ifOperStatus_obj
-},
-_ifInOctets_obj = {
- "ifInOctets", 10, 0,
- NULL, &_ifLastChange_obj
-},
-_ifInUcastPkts_obj = {
- "ifInUcastPkts", 11, 0,
- NULL, &_ifInOctets_obj
-},
-_ifInNUcastPkts_obj = {
- "ifInNUcastPkts", 12, 0,
- NULL, &_ifInUcastPkts_obj
-},
-_ifInDiscards_obj = {
- "ifInDiscards", 13, 0,
- NULL, &_ifInNUcastPkts_obj
-},
-_ifInErrors_obj = {
- "ifInErrors", 14, 0,
- NULL, &_ifInDiscards_obj
-},
-_ifInUnknownProtos_obj = {
- "ifInUnknownProtos", 15, 0,
- NULL, &_ifInErrors_obj
-},
-_ifOutOctets_obj = {
- "ifOutOctets", 16, 0,
- NULL, &_ifInUnknownProtos_obj
-},
-_ifOutUcastPkts_obj = {
- "ifOutUcastPkts", 17, 0,
- NULL, &_ifOutOctets_obj
-},
-_ifOutNUcastPkts_obj = {
- "ifOutNUcastPkts", 18, 0,
- NULL, &_ifOutUcastPkts_obj
-},
-_ifOutDiscards_obj = {
- "ifOutDiscards", 19, 0,
- NULL, &_ifOutNUcastPkts_obj
-},
-_ifOutErrors_obj = {
- "ifOutErrors", 20, 0,
- NULL, &_ifOutDiscards_obj
-},
-_ifOutQLen_obj = {
- "ifOutQLen", 21, 0,
- NULL, &_ifOutErrors_obj
-},
-_ifSpecific_obj = {
- "ifSpecific", 22, 0,
- NULL, &_ifOutQLen_obj
-},
-_ifEntry_obj = {
- "ifEntry", 1, 0,
- &_ifSpecific_obj, NULL
-},
-_ifNumber_obj = {
- "ifNumber", 1, 0,
- NULL, NULL
-},
-_ifTable_obj = {
- "ifTable", 2, 0,
- &_ifEntry_obj, &_ifNumber_obj
-},
-_sysDescr_obj = {
- "sysDescr", 1, 0,
- NULL, NULL
-},
-_sysObjectID_obj = {
- "sysObjectID", 2, 0,
- NULL, &_sysDescr_obj
-},
-_sysUpTime_obj = {
- "sysUpTime", 3, 0,
- NULL, &_sysObjectID_obj
-},
-_sysContact_obj = {
- "sysContact", 4, 0,
- NULL, &_sysUpTime_obj
-},
-_sysName_obj = {
- "sysName", 5, 0,
- NULL, &_sysContact_obj
-},
-_sysLocation_obj = {
- "sysLocation", 6, 0,
- NULL, &_sysName_obj
-},
-_sysServices_obj = {
- "sysServices", 7, 0,
- NULL, &_sysLocation_obj
-},
-_system_obj = {
- "system", 1, 0,
- &_sysServices_obj, NULL
-},
-_interfaces_obj = {
- "interfaces", 2, 0,
- &_ifTable_obj, &_system_obj
-},
-_at_obj = {
- "at", 3, 0,
- &_atTable_obj, &_interfaces_obj
-},
-_ip_obj = {
- "ip", 4, 0,
- &_ipNetToMediaTable_obj, &_at_obj
-},
-_icmp_obj = {
- "icmp", 5, 0,
- &_icmpOutAddrMaskReps_obj, &_ip_obj
-},
-_tcp_obj = {
- "tcp", 6, 0,
- &_tcpOutRsts_obj, &_icmp_obj
-},
-_udp_obj = {
- "udp", 7, 0,
- &_udpTable_obj, &_tcp_obj
-},
-_egp_obj = {
- "egp", 8, 0,
- &_egpAs_obj, &_udp_obj
-},
-_transmission_obj = {
- "transmission", 10, 0,
- NULL, &_egp_obj
-},
-_snmp_obj = {
- "snmp", 11, 0,
- &_snmpEnableAuthTraps_obj, &_transmission_obj
-},
-_mib_obj = {
- "mib", 1, 0,
- &_snmp_obj, NULL
-},
-_directory_obj = {
- "directory", 1, 0,
- NULL, NULL
-},
-_mgmt_obj = {
- "mgmt", 2, 0,
- &_mib_obj, &_directory_obj
-},
-_experimental_obj = {
- "experimental", 3, 0,
- NULL, &_mgmt_obj
-},
-_private_obj = {
- "private", 4, 0,
- &_enterprises_obj, &_experimental_obj
-},
-_internet_obj = {
- "internet", 1, 0,
- &_private_obj, NULL
-},
-_dod_obj = {
- "dod", 6, 0,
- &_internet_obj, NULL
-},
-_org_obj = {
- "org", 3, 0,
- &_dod_obj, NULL
-},
-_iso_obj = {
- "iso", 1, 0,
- &_org_obj, NULL
-},
-*mibroot = &_iso_obj;
diff --git a/usr.sbin/tcpdump/tcpdump/nfs.h b/usr.sbin/tcpdump/tcpdump/nfs.h
deleted file mode 100644
index e6931c2..0000000
--- a/usr.sbin/tcpdump/tcpdump/nfs.h
+++ /dev/null
@@ -1,446 +0,0 @@
-/* $NetBSD: nfs.h,v 1.1 1996/05/23 22:49:53 fvdl Exp $ */
-
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Rick Macklem at The University of Guelph.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- * This product includes software developed by the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)nfsproto.h 8.2 (Berkeley) 3/30/95
- */
-
-/*
- * nfs definitions as per the Version 2 and 3 specs
- */
-
-/*
- * Constants as defined in the Sun NFS Version 2 and 3 specs.
- * "NFS: Network File System Protocol Specification" RFC1094
- * and in the "NFS: Network File System Version 3 Protocol
- * Specification"
- */
-
-#define NFS_PORT 2049
-#define NFS_PROG 100003
-#define NFS_VER2 2
-#define NFS_VER3 3
-#define NFS_V2MAXDATA 8192
-#define NFS_MAXDGRAMDATA 16384
-#define NFS_MAXDATA 32768
-#define NFS_MAXPATHLEN 1024
-#define NFS_MAXNAMLEN 255
-#define NFS_MAXPKTHDR 404
-#define NFS_MAXPACKET (NFS_MAXPKTHDR + NFS_MAXDATA)
-#define NFS_MINPACKET 20
-#define NFS_FABLKSIZE 512 /* Size in bytes of a block wrt fa_blocks */
-
-/* Stat numbers for rpc returns (version 2 and 3) */
-#define NFS_OK 0
-#define NFSERR_PERM 1
-#define NFSERR_NOENT 2
-#define NFSERR_IO 5
-#define NFSERR_NXIO 6
-#define NFSERR_ACCES 13
-#define NFSERR_EXIST 17
-#define NFSERR_XDEV 18 /* Version 3 only */
-#define NFSERR_NODEV 19
-#define NFSERR_NOTDIR 20
-#define NFSERR_ISDIR 21
-#define NFSERR_INVAL 22 /* Version 3 only */
-#define NFSERR_FBIG 27
-#define NFSERR_NOSPC 28
-#define NFSERR_ROFS 30
-#define NFSERR_MLINK 31 /* Version 3 only */
-#define NFSERR_NAMETOL 63
-#define NFSERR_NOTEMPTY 66
-#define NFSERR_DQUOT 69
-#define NFSERR_STALE 70
-#define NFSERR_REMOTE 71 /* Version 3 only */
-#define NFSERR_WFLUSH 99 /* Version 2 only */
-#define NFSERR_BADHANDLE 10001 /* The rest Version 3 only */
-#define NFSERR_NOT_SYNC 10002
-#define NFSERR_BAD_COOKIE 10003
-#define NFSERR_NOTSUPP 10004
-#define NFSERR_TOOSMALL 10005
-#define NFSERR_SERVERFAULT 10006
-#define NFSERR_BADTYPE 10007
-#define NFSERR_JUKEBOX 10008
-#define NFSERR_TRYLATER NFSERR_JUKEBOX
-#define NFSERR_STALEWRITEVERF 30001 /* Fake return for nfs_commit() */
-
-#define NFSERR_RETVOID 0x20000000 /* Return void, not error */
-#define NFSERR_AUTHERR 0x40000000 /* Mark an authentication error */
-#define NFSERR_RETERR 0x80000000 /* Mark an error return for V3 */
-
-/* Sizes in bytes of various nfs rpc components */
-#define NFSX_UNSIGNED 4
-
-/* specific to NFS Version 2 */
-#define NFSX_V2FH 32
-#define NFSX_V2FATTR 68
-#define NFSX_V2SATTR 32
-#define NFSX_V2COOKIE 4
-#define NFSX_V2STATFS 20
-
-/* specific to NFS Version 3 */
-#if 0
-#define NFSX_V3FH (sizeof (fhandle_t)) /* size this server uses */
-#endif
-#define NFSX_V3FHMAX 64 /* max. allowed by protocol */
-#define NFSX_V3FATTR 84
-#define NFSX_V3SATTR 60 /* max. all fields filled in */
-#define NFSX_V3SRVSATTR (sizeof (struct nfsv3_sattr))
-#define NFSX_V3POSTOPATTR (NFSX_V3FATTR + NFSX_UNSIGNED)
-#define NFSX_V3WCCDATA (NFSX_V3POSTOPATTR + 8 * NFSX_UNSIGNED)
-#define NFSX_V3COOKIEVERF 8
-#define NFSX_V3WRITEVERF 8
-#define NFSX_V3CREATEVERF 8
-#define NFSX_V3STATFS 52
-#define NFSX_V3FSINFO 48
-#define NFSX_V3PATHCONF 24
-
-/* variants for both versions */
-#define NFSX_FH(v3) ((v3) ? (NFSX_V3FHMAX + NFSX_UNSIGNED) : \
- NFSX_V2FH)
-#define NFSX_SRVFH(v3) ((v3) ? NFSX_V3FH : NFSX_V2FH)
-#define NFSX_FATTR(v3) ((v3) ? NFSX_V3FATTR : NFSX_V2FATTR)
-#define NFSX_PREOPATTR(v3) ((v3) ? (7 * NFSX_UNSIGNED) : 0)
-#define NFSX_POSTOPATTR(v3) ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : 0)
-#define NFSX_POSTOPORFATTR(v3) ((v3) ? (NFSX_V3FATTR + NFSX_UNSIGNED) : \
- NFSX_V2FATTR)
-#define NFSX_WCCDATA(v3) ((v3) ? NFSX_V3WCCDATA : 0)
-#define NFSX_WCCORFATTR(v3) ((v3) ? NFSX_V3WCCDATA : NFSX_V2FATTR)
-#define NFSX_SATTR(v3) ((v3) ? NFSX_V3SATTR : NFSX_V2SATTR)
-#define NFSX_COOKIEVERF(v3) ((v3) ? NFSX_V3COOKIEVERF : 0)
-#define NFSX_WRITEVERF(v3) ((v3) ? NFSX_V3WRITEVERF : 0)
-#define NFSX_READDIR(v3) ((v3) ? (5 * NFSX_UNSIGNED) : \
- (2 * NFSX_UNSIGNED))
-#define NFSX_STATFS(v3) ((v3) ? NFSX_V3STATFS : NFSX_V2STATFS)
-
-/* nfs rpc procedure numbers (before version mapping) */
-#define NFSPROC_NULL 0
-#define NFSPROC_GETATTR 1
-#define NFSPROC_SETATTR 2
-#define NFSPROC_LOOKUP 3
-#define NFSPROC_ACCESS 4
-#define NFSPROC_READLINK 5
-#define NFSPROC_READ 6
-#define NFSPROC_WRITE 7
-#define NFSPROC_CREATE 8
-#define NFSPROC_MKDIR 9
-#define NFSPROC_SYMLINK 10
-#define NFSPROC_MKNOD 11
-#define NFSPROC_REMOVE 12
-#define NFSPROC_RMDIR 13
-#define NFSPROC_RENAME 14
-#define NFSPROC_LINK 15
-#define NFSPROC_READDIR 16
-#define NFSPROC_READDIRPLUS 17
-#define NFSPROC_FSSTAT 18
-#define NFSPROC_FSINFO 19
-#define NFSPROC_PATHCONF 20
-#define NFSPROC_COMMIT 21
-
-/* And leasing (nqnfs) procedure numbers (must be last) */
-#define NQNFSPROC_GETLEASE 22
-#define NQNFSPROC_VACATED 23
-#define NQNFSPROC_EVICTED 24
-
-#define NFSPROC_NOOP 25
-#define NFS_NPROCS 26
-
-/* Actual Version 2 procedure numbers */
-#define NFSV2PROC_NULL 0
-#define NFSV2PROC_GETATTR 1
-#define NFSV2PROC_SETATTR 2
-#define NFSV2PROC_NOOP 3
-#define NFSV2PROC_ROOT NFSV2PROC_NOOP /* Obsolete */
-#define NFSV2PROC_LOOKUP 4
-#define NFSV2PROC_READLINK 5
-#define NFSV2PROC_READ 6
-#define NFSV2PROC_WRITECACHE NFSV2PROC_NOOP /* Obsolete */
-#define NFSV2PROC_WRITE 8
-#define NFSV2PROC_CREATE 9
-#define NFSV2PROC_REMOVE 10
-#define NFSV2PROC_RENAME 11
-#define NFSV2PROC_LINK 12
-#define NFSV2PROC_SYMLINK 13
-#define NFSV2PROC_MKDIR 14
-#define NFSV2PROC_RMDIR 15
-#define NFSV2PROC_READDIR 16
-#define NFSV2PROC_STATFS 17
-
-/*
- * Constants used by the Version 3 protocol for various RPCs
- */
-#define NFSV3SATTRTIME_DONTCHANGE 0
-#define NFSV3SATTRTIME_TOSERVER 1
-#define NFSV3SATTRTIME_TOCLIENT 2
-
-#define NFSV3ATTRTIME_NMODES 3
-
-#define NFSV3ACCESS_READ 0x01
-#define NFSV3ACCESS_LOOKUP 0x02
-#define NFSV3ACCESS_MODIFY 0x04
-#define NFSV3ACCESS_EXTEND 0x08
-#define NFSV3ACCESS_DELETE 0x10
-#define NFSV3ACCESS_EXECUTE 0x20
-
-#define NFSV3WRITE_UNSTABLE 0
-#define NFSV3WRITE_DATASYNC 1
-#define NFSV3WRITE_FILESYNC 2
-
-#define NFSV3WRITE_NMODES 3
-
-#define NFSV3CREATE_UNCHECKED 0
-#define NFSV3CREATE_GUARDED 1
-#define NFSV3CREATE_EXCLUSIVE 2
-
-#define NFSV3CREATE_NMODES 3
-
-#define NFSV3FSINFO_LINK 0x01
-#define NFSV3FSINFO_SYMLINK 0x02
-#define NFSV3FSINFO_HOMOGENEOUS 0x08
-#define NFSV3FSINFO_CANSETTIME 0x10
-
-/* Conversion macros */
-#define vtonfsv2_mode(t,m) \
- txdr_unsigned(((t) == VFIFO) ? MAKEIMODE(VCHR, (m)) : \
- MAKEIMODE((t), (m)))
-#define vtonfsv3_mode(m) txdr_unsigned((m) & 07777)
-#define nfstov_mode(a) (fxdr_unsigned(u_int16_t, (a))&07777)
-#define vtonfsv2_type(a) txdr_unsigned(nfsv2_type[((int32_t)(a))])
-#define vtonfsv3_type(a) txdr_unsigned(nfsv3_type[((int32_t)(a))])
-#define nfsv2tov_type(a) nv2tov_type[fxdr_unsigned(u_int32,(a))&0x7]
-#define nfsv3tov_type(a) nv3tov_type[fxdr_unsigned(u_int32,(a))&0x7]
-
-/* File types */
-typedef enum { NFNON=0, NFREG=1, NFDIR=2, NFBLK=3, NFCHR=4, NFLNK=5,
- NFSOCK=6, NFFIFO=7 } nfstype;
-
-/* Structs for common parts of the rpc's */
-/*
- * File Handle (32 bytes for version 2), variable up to 64 for version 3.
- * File Handles of up to NFS_SMALLFH in size are stored directly in the
- * nfs node, whereas larger ones are malloc'd. (This never happens when
- * NFS_SMALLFH is set to 64.)
- * NFS_SMALLFH should be in the range of 32 to 64 and be divisible by 4.
- */
-#ifndef NFS_SMALLFH
-#define NFS_SMALLFH 64
-#endif
-union nfsfh {
-/* fhandle_t fh_generic; */
- u_char fh_bytes[NFS_SMALLFH];
-};
-typedef union nfsfh nfsfh_t;
-
-struct nfsv2_time {
- u_int32 nfsv2_sec;
- u_int32 nfsv2_usec;
-};
-typedef struct nfsv2_time nfstime2;
-
-struct nfsv3_time {
- u_int32 nfsv3_sec;
- u_int32 nfsv3_nsec;
-};
-typedef struct nfsv3_time nfstime3;
-
-/*
- * Quads are defined as arrays of 2 longs to ensure dense packing for the
- * protocol and to facilitate xdr conversion.
- */
-struct nfs_uquad {
- u_int32 nfsuquad[2];
-};
-typedef struct nfs_uquad nfsuint64;
-
-/*
- * Used to convert between two u_longs and a u_quad_t.
- */
-union nfs_quadconvert {
- u_int32 lval[2];
- u_quad_t qval;
-};
-typedef union nfs_quadconvert nfsquad_t;
-
-/*
- * NFS Version 3 special file number.
- */
-struct nfsv3_spec {
- u_int32 specdata1;
- u_int32 specdata2;
-};
-typedef struct nfsv3_spec nfsv3spec;
-
-/*
- * File attributes and setable attributes. These structures cover both
- * NFS version 2 and the version 3 protocol. Note that the union is only
- * used so that one pointer can refer to both variants. These structures
- * go out on the wire and must be densely packed, so no quad data types
- * are used. (all fields are longs or u_longs or structures of same)
- * NB: You can't do sizeof(struct nfs_fattr), you must use the
- * NFSX_FATTR(v3) macro.
- */
-struct nfs_fattr {
- u_int32 fa_type;
- u_int32 fa_mode;
- u_int32 fa_nlink;
- u_int32 fa_uid;
- u_int32 fa_gid;
- union {
- struct {
- u_int32 nfsv2fa_size;
- u_int32 nfsv2fa_blocksize;
- u_int32 nfsv2fa_rdev;
- u_int32 nfsv2fa_blocks;
- u_int32 nfsv2fa_fsid;
- u_int32 nfsv2fa_fileid;
- nfstime2 nfsv2fa_atime;
- nfstime2 nfsv2fa_mtime;
- nfstime2 nfsv2fa_ctime;
- } fa_nfsv2;
- struct {
- nfsuint64 nfsv3fa_size;
- nfsuint64 nfsv3fa_used;
- nfsv3spec nfsv3fa_rdev;
- nfsuint64 nfsv3fa_fsid;
- nfsuint64 nfsv3fa_fileid;
- nfstime3 nfsv3fa_atime;
- nfstime3 nfsv3fa_mtime;
- nfstime3 nfsv3fa_ctime;
- } fa_nfsv3;
- } fa_un;
-};
-
-/* and some ugly defines for accessing union components */
-#define fa2_size fa_un.fa_nfsv2.nfsv2fa_size
-#define fa2_blocksize fa_un.fa_nfsv2.nfsv2fa_blocksize
-#define fa2_rdev fa_un.fa_nfsv2.nfsv2fa_rdev
-#define fa2_blocks fa_un.fa_nfsv2.nfsv2fa_blocks
-#define fa2_fsid fa_un.fa_nfsv2.nfsv2fa_fsid
-#define fa2_fileid fa_un.fa_nfsv2.nfsv2fa_fileid
-#define fa2_atime fa_un.fa_nfsv2.nfsv2fa_atime
-#define fa2_mtime fa_un.fa_nfsv2.nfsv2fa_mtime
-#define fa2_ctime fa_un.fa_nfsv2.nfsv2fa_ctime
-#define fa3_size fa_un.fa_nfsv3.nfsv3fa_size
-#define fa3_used fa_un.fa_nfsv3.nfsv3fa_used
-#define fa3_rdev fa_un.fa_nfsv3.nfsv3fa_rdev
-#define fa3_fsid fa_un.fa_nfsv3.nfsv3fa_fsid
-#define fa3_fileid fa_un.fa_nfsv3.nfsv3fa_fileid
-#define fa3_atime fa_un.fa_nfsv3.nfsv3fa_atime
-#define fa3_mtime fa_un.fa_nfsv3.nfsv3fa_mtime
-#define fa3_ctime fa_un.fa_nfsv3.nfsv3fa_ctime
-
-struct nfsv2_sattr {
- u_int32 sa_mode;
- u_int32 sa_uid;
- u_int32 sa_gid;
- u_int32 sa_size;
- nfstime2 sa_atime;
- nfstime2 sa_mtime;
-};
-
-/*
- * NFS Version 3 sattr structure for the new node creation case.
- */
-struct nfsv3_sattr {
- u_int32 sa_modeset;
- u_int32 sa_mode;
- u_int32 sa_uidset;
- u_int32 sa_uid;
- u_int32 sa_gidset;
- u_int32 sa_gid;
- u_int32 sa_sizeset;
- u_int32 sa_size;
- u_int32 sa_atimetype;
- nfstime3 sa_atime;
- u_int32 sa_mtimetype;
- nfstime3 sa_mtime;
-};
-
-struct nfs_statfs {
- union {
- struct {
- u_int32 nfsv2sf_tsize;
- u_int32 nfsv2sf_bsize;
- u_int32 nfsv2sf_blocks;
- u_int32 nfsv2sf_bfree;
- u_int32 nfsv2sf_bavail;
- } sf_nfsv2;
- struct {
- nfsuint64 nfsv3sf_tbytes;
- nfsuint64 nfsv3sf_fbytes;
- nfsuint64 nfsv3sf_abytes;
- nfsuint64 nfsv3sf_tfiles;
- nfsuint64 nfsv3sf_ffiles;
- nfsuint64 nfsv3sf_afiles;
- u_int32 nfsv3sf_invarsec;
- } sf_nfsv3;
- } sf_un;
-};
-
-#define sf_tsize sf_un.sf_nfsv2.nfsv2sf_tsize
-#define sf_bsize sf_un.sf_nfsv2.nfsv2sf_bsize
-#define sf_blocks sf_un.sf_nfsv2.nfsv2sf_blocks
-#define sf_bfree sf_un.sf_nfsv2.nfsv2sf_bfree
-#define sf_bavail sf_un.sf_nfsv2.nfsv2sf_bavail
-#define sf_tbytes sf_un.sf_nfsv3.nfsv3sf_tbytes
-#define sf_fbytes sf_un.sf_nfsv3.nfsv3sf_fbytes
-#define sf_abytes sf_un.sf_nfsv3.nfsv3sf_abytes
-#define sf_tfiles sf_un.sf_nfsv3.nfsv3sf_tfiles
-#define sf_ffiles sf_un.sf_nfsv3.nfsv3sf_ffiles
-#define sf_afiles sf_un.sf_nfsv3.nfsv3sf_afiles
-#define sf_invarsec sf_un.sf_nfsv3.nfsv3sf_invarsec
-
-struct nfsv3_fsinfo {
- u_int32 fs_rtmax;
- u_int32 fs_rtpref;
- u_int32 fs_rtmult;
- u_int32 fs_wtmax;
- u_int32 fs_wtpref;
- u_int32 fs_wtmult;
- u_int32 fs_dtpref;
- nfsuint64 fs_maxfilesize;
- nfstime3 fs_timedelta;
- u_int32 fs_properties;
-};
-
-struct nfsv3_pathconf {
- u_int32 pc_linkmax;
- u_int32 pc_namemax;
- u_int32 pc_notrunc;
- u_int32 pc_chownrestricted;
- u_int32 pc_caseinsensitive;
- u_int32 pc_casepreserving;
-};
diff --git a/usr.sbin/tcpdump/tcpdump/nfsfh.h b/usr.sbin/tcpdump/tcpdump/nfsfh.h
deleted file mode 100644
index 545d76e..0000000
--- a/usr.sbin/tcpdump/tcpdump/nfsfh.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/nfsfh.h,v 1.1 1995/03/08 12:52:19 olah Exp $
- *
- * nfsfh.h - NFS file handle definitions (for portable use)
- *
- * Jeffrey C. Mogul
- * Digital Equipment Corporation
- * Western Research Laboratory
- */
-
-/*
- * Internal representation of dev_t, because different NFS servers
- * that we might be spying upon use different external representations.
- */
-typedef struct {
- u_long Minor; /* upper case to avoid clashing with macro names */
- u_long Major;
-} my_devt;
-
-#define dev_eq(a,b) ((a.Minor == b.Minor) && (a.Major == b.Major))
-
-/*
- * Many file servers now use a large file system ID. This is
- * our internal representation of that.
- */
-typedef struct {
- my_devt fsid_dev;
- u_long fsid_code;
-} my_fsid;
-
-#define fsid_eq(a,b) ((a.fsid_code == b.fsid_code) &&\
- 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/usr.sbin/tcpdump/tcpdump/ntp.h b/usr.sbin/tcpdump/tcpdump/ntp.h
deleted file mode 100644
index 2a626fd..0000000
--- a/usr.sbin/tcpdump/tcpdump/ntp.h
+++ /dev/null
@@ -1,117 +0,0 @@
-/* $Header: ntp.h,v 1.2 93/11/12 21:43:36 mccanne Exp $ */
-
-/*
- * Based on ntp.h from the U of MD implementation
- * This file is based on Version 2 of the NTP spec (RFC1119).
- */
-
-/*
- * Definitions for the masses
- */
-#define JAN_1970 2208988800 /* 1970 - 1900 in seconds */
-
-/*
- * Structure definitions for NTP fixed point values
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Integer Part |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Fraction Part |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- *
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Integer Part | Fraction Part |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-*/
-struct l_fixedpt {
- u_int32 int_part;
- u_int32 fraction;
-};
-
-struct s_fixedpt {
- u_short int_part;
- u_short fraction;
-};
-
-/* ================= Table 3.3. Packet Variables ================= */
-/*
- * 0 1 2 3
- * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * |LI | VN | Mode| Stratum | Poll | Precision |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Synchronizing Distance |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Synchronizing Dispersion |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | Reference Clock Identifier |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Reference Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Originate Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Receive Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- * | |
- * | Transmit Timestamp (64 bits) |
- * | |
- * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-*/
-struct ntpdata {
- u_char status; /* status of local clock and leap info */
- u_char stratum; /* Stratum level */
- u_char ppoll; /* poll value */
- int precision:8;
- struct s_fixedpt distance;
- struct s_fixedpt dispersion;
- u_int32 refid;
- struct l_fixedpt reftime;
- struct l_fixedpt org;
- struct l_fixedpt rec;
- struct l_fixedpt xmt;
-};
-/*
- * Leap Second Codes (high order two bits)
- */
-#define NO_WARNING 0x00 /* no warning */
-#define PLUS_SEC 0x40 /* add a second (61 seconds) */
-#define MINUS_SEC 0x80 /* minus a second (59 seconds) */
-#define ALARM 0xc0 /* alarm condition (clock unsynchronized) */
-
-/*
- * Clock Status Bits that Encode Version
- */
-#define NTPVERSION_1 0x08
-#define VERSIONMASK 0x38
-#define LEAPMASK 0xc0
-#define MODEMASK 0x07
-
-/*
- * Code values
- */
-#define MODE_UNSPEC 0 /* unspecified */
-#define MODE_SYM_ACT 1 /* symmetric active */
-#define MODE_SYM_PAS 2 /* symmetric passive */
-#define MODE_CLIENT 3 /* client */
-#define MODE_SERVER 4 /* server */
-#define MODE_BROADCAST 5 /* broadcast */
-#define MODE_RES1 6 /* reserved */
-#define MODE_RES2 7 /* reserved */
-
-/*
- * Stratum Definitions
- */
-#define UNSPECIFIED 0
-#define PRIM_REF 1 /* radio clock */
-#define INFO_QUERY 62 /* **** THIS implementation dependent **** */
-#define INFO_REPLY 63 /* **** THIS implementation dependent **** */
diff --git a/usr.sbin/tcpdump/tcpdump/os.h b/usr.sbin/tcpdump/tcpdump/os.h
deleted file mode 100644
index 799e36e..0000000
--- a/usr.sbin/tcpdump/tcpdump/os.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * @(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/os.h,v 1.2 1995/03/08 12:52:21 olah Exp $ (LBL)
- */
-
-#include <sys/param.h>
-
-#ifndef BSD
-#define BSD
-#endif
-
-#define SHA(ap) ((ap)->arp_sha)
-#define SPA(ap) ((ap)->arp_spa)
-#define THA(ap) ((ap)->arp_tha)
-#define TPA(ap) ((ap)->arp_tpa)
-
-#define EDST(ep) ((ep)->ether_dhost)
-#define ESRC(ep) ((ep)->ether_shost)
-
-#ifndef ETHERTYPE_REVARP
-#define ETHERTYPE_REVARP 0x8035
-#endif
-
-#ifndef IPPROTO_ND
-/* From <netinet/in.h> on a Sun somewhere. */
-#define IPPROTO_ND 77
-#endif
-
-#ifndef REVARP_REQUEST
-#define REVARP_REQUEST 3
-#endif
-#ifndef REVARP_REPLY
-#define REVARP_REPLY 4
-#endif
-
-/* newish RIP commands */
-#ifndef RIPCMD_POLL
-#define RIPCMD_POLL 5
-#endif
-#ifndef RIPCMD_POLLENTRY
-#define RIPCMD_POLLENTRY 6
-#endif
-
-typedef int64_t int64;
-typedef u_int64_t u_int64;
-
-#define INT64_FORMAT "%qd"
-#define U_INT64_FORMAT "%qu"
-#define HEX_INT64_FORMAT "%qx"
diff --git a/usr.sbin/tcpdump/tcpdump/ospf.h b/usr.sbin/tcpdump/tcpdump/ospf.h
deleted file mode 100644
index 252c399..0000000
--- a/usr.sbin/tcpdump/tcpdump/ospf.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (c) 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu)
- */
-#define OSPF_TYPE_UMD 0 /* UMd's special monitoring packets */
-#define OSPF_TYPE_HELLO 1 /* Hello */
-#define OSPF_TYPE_DB 2 /* Database Description */
-#define OSPF_TYPE_LSR 3 /* Link State Request */
-#define OSPF_TYPE_LSU 4 /* Link State Update */
-#define OSPF_TYPE_LSA 5 /* Link State Ack */
-#define OSPF_TYPE_MAX 6
-
-/* Options *_options */
-#define OSPF_OPTION_T 0x01 /* T bit: TOS support */
-#define OSPF_OPTION_E 0x02 /* E bit: External routes advertised */
-#define OSPF_OPTION_MC 0x04 /* MC bit: Multicast capable */
-
-/* ospf_authtype */
-#define OSPF_AUTH_NONE 0 /* No auth-data */
-#define OSPF_AUTH_SIMPLE 1 /* Simple password */
-
-/* db_flags */
-#define OSPF_DB_INIT 0x04 /* */
-#define OSPF_DB_MORE 0x02
-#define OSPF_DB_MASTER 0x01
-
-/* ls_type */
-#define LS_TYPE_ROUTER 1 /* router link */
-#define LS_TYPE_NETWORK 2 /* network link */
-#define LS_TYPE_SUM_IP 3 /* summary link */
-#define LS_TYPE_SUM_ABR 4 /* summary area link */
-#define LS_TYPE_ASE 5 /* ASE */
-#define LS_TYPE_GROUP 6 /* Group membership (multicast */
- /* extensions 23 July 1991) */
-#define LS_TYPE_MAX 7
-
-/*************************************************
- *
- * is the above a bug in the documentation?
- *
- *************************************************/
-
-
-/* rla_link.link_type */
-#define RLA_TYPE_ROUTER 1 /* point-to-point to another router */
-#define RLA_TYPE_TRANSIT 2 /* connection to transit network */
-#define RLA_TYPE_STUB 3 /* connection to stub network */
-#define RLA_TYPE_VIRTUAL 4 /* virtual link */
-
-/* rla_flags */
-#define RLA_FLAG_B 0x01
-#define RLA_FLAG_E 0x02
-#define RLA_FLAG_W1 0x04
-#define RLA_FLAG_W2 0x08
-
-/* sla_tosmetric breakdown */
-#define SLA_MASK_TOS 0x7f000000
-#define SLA_MASK_METRIC 0x00ffffff
-#define SLA_SHIFT_TOS 24
-
-/* asla_tosmetric breakdown */
-#define ASLA_FLAG_EXTERNAL 0x80000000
-#define ASLA_MASK_TOS 0x7f000000
-#define ASLA_SHIFT_TOS 24
-#define ASLA_MASK_METRIC 0x00ffffff
-
-/* multicast vertex type */
-#define MCLA_VERTEX_ROUTER 1
-#define MCLA_VERTEX_NETWORK 2
-
-/* link state advertisement header */
-struct lsa_hdr {
- u_short ls_age;
- u_char ls_options;
- u_char ls_type;
- struct in_addr ls_stateid;
- struct in_addr ls_router;
- u_int32 ls_seq;
- u_short ls_chksum;
- u_short ls_length;
-} ;
-
-/* link state advertisement */
-struct lsa {
- struct lsa_hdr ls_hdr;
-
- /* Link state types */
- union {
- /* Router links advertisements */
- struct {
- u_char rla_flags;
- u_char rla_zero[1];
- u_short rla_count;
- struct rlalink {
- struct in_addr link_id;
- struct in_addr link_data;
- u_char link_type;
- u_char link_toscount;
- u_short link_tos0metric;
- } rla_link[1]; /* may repeat */
- } un_rla;
-
- /* Network links advertisements */
- struct {
- struct in_addr nla_mask;
- struct in_addr nla_router[1]; /* may repeat */
- } un_nla;
-
- /* Summary links advertisements */
- struct {
- struct in_addr sla_mask;
- u_int32 sla_tosmetric[1]; /* may repeat */
- } un_sla;
-
- /* AS external links advertisements */
- struct {
- struct in_addr asla_mask;
- struct aslametric {
- u_int32 asla_tosmetric;
- struct in_addr asla_forward;
- struct in_addr asla_tag;
- } asla_metric[1]; /* may repeat */
- } un_asla;
-
- /* Multicast group membership */
- struct mcla {
- u_int32 mcla_vtype;
- struct in_addr mcla_vid;
- } un_mcla[1];
- } lsa_un;
-} ;
-
-
-/*
- * TOS metric struct (will be 0 or more in router links update)
- */
-struct tos_metric {
- u_char tos_type;
- u_char tos_zero;
- u_short tos_metric;
-} ;
-
-#define OSPF_AUTH_SIZE 8
-
-/*
- * the main header
- */
-struct ospfhdr {
- u_char ospf_version;
- u_char ospf_type;
- u_short ospf_len;
- struct in_addr ospf_routerid;
- struct in_addr ospf_areaid;
- u_short ospf_chksum;
- u_short ospf_authtype;
- u_char ospf_authdata[OSPF_AUTH_SIZE];
- union {
-
- /* Hello packet */
- struct {
- struct in_addr hello_mask;
- u_short hello_helloint;
- u_char hello_options;
- u_char hello_priority;
- u_int32 hello_deadint;
- struct in_addr hello_dr;
- struct in_addr hello_bdr;
- struct in_addr hello_neighbor[1]; /* may repeat */
- } un_hello;
-
- /* Database Description packet */
- struct {
- u_char db_zero[2];
- u_char db_options;
- u_char db_flags;
- u_int32 db_seq;
- struct lsa_hdr db_lshdr[1]; /* may repeat */
- } un_db;
-
- /* Link State Request */
- struct lsr {
- u_int32 ls_type;
- struct in_addr ls_stateid;
- struct in_addr ls_router;
- } un_lsr[1]; /* may repeat */
-
- /* Link State Update */
- struct {
- u_int32 lsu_count;
- struct lsa lsu_lsa[1]; /* may repeat */
- } un_lsu;
-
- /* Link State Acknowledment */
- struct {
- struct lsa_hdr lsa_lshdr[1]; /* may repeat */
- } un_lsa ;
- } ospf_un ;
-} ;
-
-#define ospf_hello ospf_un.un_hello
-#define ospf_db ospf_un.un_db
-#define ospf_lsr ospf_un.un_lsr
-#define ospf_lsu ospf_un.un_lsu
-#define ospf_lsa ospf_un.un_lsa
-
diff --git a/usr.sbin/tcpdump/tcpdump/parsenfsfh.c b/usr.sbin/tcpdump/tcpdump/parsenfsfh.c
deleted file mode 100644
index 78464bb..0000000
--- a/usr.sbin/tcpdump/tcpdump/parsenfsfh.c
+++ /dev/null
@@ -1,426 +0,0 @@
-#ifndef lint
-static char *RCSid = "$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/parsenfsfh.c,v 1.1 1995/03/08 12:52:23 olah Exp $";
-#endif
-
-/*
- * parsenfsfh.c - portable parser for NFS file handles
- * uses all sorts of heuristics
- *
- * Jeffrey C. Mogul
- * Digital Equipment Corporation
- * Western Research Laboratory
- */
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "interface.h"
-#include "nfsfh.h"
-
-/*
- * Make sure that we use 32-bit integers when necessary. The "x"
- * suffix is to avoid possible identifier conflicts.
- */
-
-typedef int int32x;
-typedef unsigned int u_int32x;
-
-/*
- * This routine attempts to parse a file handle (in network byte order),
- * using heuristics to guess what kind of format it is in. See the
- * file "fhandle_layouts" for a detailed description of the various
- * patterns we know about.
- *
- * The file handle is parsed into our internal representation of a
- * file-system id, and an internal representation of an inode-number.
- */
-
-#define FHT_UNKNOWN 0
-#define FHT_AUSPEX 1
-#define FHT_DECOSF 2
-#define FHT_IRIX4 3
-#define FHT_IRIX5 4
-#define FHT_SUNOS3 5
-#define FHT_SUNOS4 6
-#define FHT_ULTRIX 7
-#define FHT_VMSUCX 8
-#define FHT_SUNOS5 9
-#define FHT_AIX32 10
-#define FHT_HPUX9 11
-
-#ifdef ultrix
-/* Nasty hack to keep the Ultrix C compiler from emitting bogus warnings */
-#define XFF(x) ((unsigned long)(x))
-#else
-#define XFF(x) (x)
-#endif
-
-#define make_uint32(msb,b,c,lsb)\
- (XFF(lsb) + (XFF(c)<<8) + (XFF(b)<<16) + (XFF(msb)<<24))
-
-#define make_uint24(msb,b, lsb)\
- (XFF(lsb) + (XFF(b)<<8) + (XFF(msb)<<16))
-
-#define make_uint16(msb,lsb)\
- (XFF(lsb) + (XFF(msb)<<8))
-
-#ifdef __alpha
- /* or other 64-bit systems */
-#define make_uint48(msb,b,c,d,e,lsb)\
- ((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24) + ((b)<<32) + ((msb)<<40))
-#else
- /* on 32-bit systems ignore high-order bits */
-#define make_uint48(msb,b,c,d,e,lsb)\
- ((lsb) + ((e)<<8) + ((d)<<16) + ((c)<<24))
-#endif
-
-static int is_UCX(unsigned char *);
-
-void
-Parse_fh(fh, len, fsidp, inop, osnamep, fsnamep, ourself)
-register caddr_t *fh;
-int len;
-my_fsid *fsidp;
-ino_t *inop;
-char **osnamep; /* if non-NULL, return OS name here */
-char **fsnamep; /* if non-NULL, return server fs name here (for VMS) */
-int ourself; /* true if file handle was generated on this host */
-{
- register unsigned char *fhp = (unsigned char *)fh;
- u_int32x temp;
- int fhtype = FHT_UNKNOWN;
-
- if (ourself) {
- /* File handle generated on this host, no need for guessing */
-#if defined(IRIX40)
- fhtype = FHT_IRIX4;
-#endif
-#if defined(IRIX50)
- fhtype = FHT_IRIX5;
-#endif
-#if defined(IRIX51)
- fhtype = FHT_IRIX5;
-#endif
-#if defined(SUNOS4)
- fhtype = FHT_SUNOS4;
-#endif
-#if defined(SUNOS5)
- fhtype = FHT_SUNOS5;
-#endif
-#if defined(ultrix)
- fhtype = FHT_ULTRIX;
-#endif
-#if defined(__osf__)
- fhtype = FHT_DECOSF;
-#endif
- }
- /*
- * This is basically a big decision tree
- */
- else if ((fhp[0] == 0) && (fhp[1] == 0)) {
- /* bytes[0,1] == (0,0); rules out Ultrix, IRIX5, SUNOS5 */
- /* probably rules out HP-UX, AIX unless they allow major=0 */
- if ((fhp[2] == 0) && (fhp[3] == 0)) {
- /* bytes[2,3] == (0,0); must be Auspex */
- /* XXX or could be Ultrix+MASSBUS "hp" disk? */
- fhtype = FHT_AUSPEX;
- }
- else {
- /*
- * bytes[2,3] != (0,0); rules out Auspex, could be
- * DECOSF, SUNOS4, or IRIX4
- */
- if ((fhp[4] != 0) && (fhp[5] == 0) &&
- (fhp[8] == 12) && (fhp[9] == 0)) {
- /* seems to be DECOSF, with minor == 0 */
- fhtype = FHT_DECOSF;
- }
- else {
- /* could be SUNOS4 or IRIX4 */
- /* XXX the test of fhp[5] == 8 could be wrong */
- if ((fhp[4] == 0) && (fhp[5] == 8) && (fhp[6] == 0) &&
- (fhp[7] == 0)) {
- /* looks like a length, not a file system typecode */
- fhtype = FHT_IRIX4;
- }
- else {
- /* by elimination */
- fhtype = FHT_SUNOS4;
- }
- }
- }
- }
- else {
- /*
- * bytes[0,1] != (0,0); rules out Auspex, IRIX4, SUNOS4
- * could be IRIX5, DECOSF, UCX, Ultrix, SUNOS5
- * could be AIX, HP-UX
- */
- if ((fhp[2] == 0) && (fhp[3] == 0)) {
- /*
- * bytes[2,3] == (0,0); rules out OSF, probably not UCX
- * (unless the exported device name is just one letter!),
- * could be Ultrix, IRIX5, AIX, or SUNOS5
- * might be HP-UX (depends on their values for minor devs)
- */
- /*XXX we probably only need to test of these two bytes */
- if ((fhp[21] == 0) && (fhp[23] == 0)) {
- fhtype = FHT_ULTRIX;
- }
- else {
- /* Could be SUNOS5/IRIX5, maybe AIX */
- /* XXX no obvious difference between SUNOS5 and IRIX5 */
- if (fhp[9] == 10)
- fhtype = FHT_SUNOS5;
- /* XXX what about AIX? */
- }
- }
- else {
- /*
- * bytes[2,3] != (0,0); rules out Ultrix, could be
- * DECOSF, SUNOS5, IRIX5, AIX, HP-UX, or UCX
- */
- if ((fhp[8] == 12) && (fhp[9] == 0)) {
- fhtype = FHT_DECOSF;
- }
- else if ((fhp[8] == 0) && (fhp[9] == 10)) {
- /* could be SUNOS5/IRIX5, AIX, HP-UX */
- if ((fhp[7] == 0) && (fhp[6] == 0) &&
- (fhp[5] == 0) && (fhp[4] == 0)) {
- /* XXX is this always true of HP-UX? */
- fhtype = FHT_HPUX9;
- }
- else if (fhp[7] == 2) {
- /* This would be MNT_NFS on AIX, which is impossible */
- fhtype = FHT_SUNOS5; /* or maybe IRIX5 */
- }
- else {
- /*
- * XXX Could be SUNOS5/IRIX5 or AIX. I don't
- * XXX see any way to disambiguate these, so
- * XXX I'm going with the more likely guess.
- * XXX Sorry, Big Blue.
- */
- fhtype = FHT_SUNOS5; /* or maybe IRIX5 */
- }
- }
- else {
- if (is_UCX(fhp)) {
- fhtype = FHT_VMSUCX;
- }
- else {
- fhtype = FHT_UNKNOWN;
- }
- }
- }
- }
-
- /* XXX still needs to handle SUNOS3 */
-
- switch (fhtype) {
- case FHT_AUSPEX:
- fsidp->fsid_dev.Minor = fhp[7];
- fsidp->fsid_dev.Major = fhp[6];
- fsidp->fsid_code = 0;
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "Auspex";
- break;
-
- case FHT_DECOSF:
- fsidp->fsid_code = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]);
- /* XXX could ignore 3 high-order bytes */
-
- temp = make_uint32(fhp[3], fhp[2], fhp[1], fhp[0]);
- fsidp->fsid_dev.Minor = temp & 0xFFFFF;
- fsidp->fsid_dev.Major = (temp>>20) & 0xFFF;
-
- temp = make_uint32(fhp[15], fhp[14], fhp[13], fhp[12]);
- *inop = temp;
- if (osnamep)
- *osnamep = "OSF";
- break;
-
- case FHT_IRIX4:
- fsidp->fsid_dev.Minor = fhp[3];
- fsidp->fsid_dev.Major = fhp[2];
- fsidp->fsid_code = 0;
-
- temp = make_uint32(fhp[8], fhp[9], fhp[10], fhp[11]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "IRIX4";
- break;
-
- case FHT_IRIX5:
- fsidp->fsid_dev.Minor = make_uint16(fhp[2], fhp[3]);
- fsidp->fsid_dev.Major = make_uint16(fhp[0], fhp[1]);
- fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "IRIX5";
- break;
-
- case FHT_SUNOS3:
- if (osnamep)
- *osnamep = "SUNOS3";
- break;
-
- case FHT_SUNOS4:
- fsidp->fsid_dev.Minor = fhp[3];
- fsidp->fsid_dev.Major = fhp[2];
- fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "SUNOS4";
- break;
-
- case FHT_SUNOS5:
- temp = make_uint16(fhp[0], fhp[1]);
- fsidp->fsid_dev.Major = (temp>>2) & 0x3FFF;
- temp = make_uint24(fhp[1], fhp[2], fhp[3]);
- fsidp->fsid_dev.Minor = temp & 0x3FFFF;
- fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "SUNOS5";
- break;
-
- case FHT_ULTRIX:
- fsidp->fsid_code = 0;
- fsidp->fsid_dev.Minor = fhp[0];
- fsidp->fsid_dev.Major = fhp[1];
-
- temp = make_uint32(fhp[7], fhp[6], fhp[5], fhp[4]);
- *inop = temp;
- if (osnamep)
- *osnamep = "Ultrix";
- break;
-
- case FHT_VMSUCX:
- /* No numeric file system ID, so hash on the device-name */
- if (sizeof(*fsidp) >= 14) {
- if (sizeof(*fsidp) > 14)
- bzero((char *)fsidp, sizeof(*fsidp));
- bcopy(fh, (char *)fsidp, 14); /* just use the whole thing */
- }
- else {
- u_long tempa[4]; /* at least 16 bytes, maybe more */
-
- bzero((char *)tempa, sizeof(tempa));
- bcopy(fh, (char *)tempa, 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;
- }
-
- /* VMS file ID is: (RVN, FidHi, FidLo) */
- *inop = make_uint32(fhp[26], fhp[27], fhp[23], fhp[22]);
-
- /* Caller must save (and null-terminate?) this value */
- if (fsnamep)
- *fsnamep = (char *)&(fhp[1]);
-
- if (osnamep)
- *osnamep = "VMS";
- break;
-
- case FHT_AIX32:
- fsidp->fsid_dev.Minor = make_uint16(fhp[2], fhp[3]);
- fsidp->fsid_dev.Major = make_uint16(fhp[0], fhp[1]);
- fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "AIX32";
- break;
-
- case FHT_HPUX9:
- fsidp->fsid_dev.Major = fhp[0];
- temp = make_uint24(fhp[1], fhp[2], fhp[3]);
- fsidp->fsid_dev.Minor = temp;
- fsidp->fsid_code = make_uint32(fhp[4], fhp[5], fhp[6], fhp[7]);
-
- temp = make_uint32(fhp[12], fhp[13], fhp[14], fhp[15]);
- *inop = temp;
-
- if (osnamep)
- *osnamep = "HPUX9";
- break;
-
- case FHT_UNKNOWN:
-#ifdef DEBUG
- {
- /* XXX debugging */
- int i;
- for (i=0; i<32;i++) fprintf(stderr, "%x.", fhp[i]);
- fprintf(stderr, "\n");
- }
-#endif
- /* XXX for now, give "bogus" values to aid debugging */
- fsidp->fsid_code = 0;
- fsidp->fsid_dev.Minor = 257;
- fsidp->fsid_dev.Major = 257;
- *inop = 1;
-
- /* display will show this string instead of (257,257) */
- if (fsnamep)
- *fsnamep = "Unknown";
-
- if (osnamep)
- *osnamep = "Unknown";
- break;
-
- }
-}
-
-/*
- * Is this a VMS UCX file handle?
- * Check for:
- * (1) leading code byte [XXX not yet]
- * (2) followed by string of printing chars & spaces
- * (3) followed by string of nulls
- */
-static int
-is_UCX(fhp)
-unsigned char *fhp;
-{
- register int i;
- int seen_null = 0;
-
- for (i = 1; i < 14; i++) {
- if (isprint(fhp[i])) {
- if (seen_null)
- return(0);
- else
- continue;
- }
- else if (fhp[i] == 0) {
- seen_null = 1;
- continue;
- }
- else
- return(0);
- }
-
- return(1);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-arp.c b/usr.sbin/tcpdump/tcpdump/print-arp.c
deleted file mode 100644
index 92fce66..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-arp.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: print-arp.c,v 1.28 94/06/14 20:17:36 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-static u_char ezero[6];
-
-void
-arp_print(register const u_char *bp, int length, int caplen)
-{
- register const struct ether_arp *ap;
- register const struct ether_header *eh;
- const u_char *p;
- int pro, hrd, op;
-
- ap = (struct ether_arp *)bp;
- if ((u_char *)(ap + 1) > snapend) {
- printf("[|arp]");
- return;
- }
- if (length < sizeof(struct ether_arp)) {
- (void)printf("truncated-arp");
- default_print((u_char *)ap, length);
- return;
- }
- /*
- * Don't assume alignment.
- */
- p = (u_char*)&ap->arp_pro;
- pro = (p[0] << 8) | p[1];
- p = (u_char*)&ap->arp_hrd;
- hrd = (p[0] << 8) | p[1];
- p = (u_char*)&ap->arp_op;
- op = (p[0] << 8) | p[1];
-
- if ((pro != ETHERTYPE_IP && pro != ETHERTYPE_TRAIL)
- || ap->arp_hln != sizeof(SHA(ap))
- || ap->arp_pln != sizeof(SPA(ap))) {
- (void)printf("arp-#%d for proto #%d (%d) hardware #%d (%d)",
- op, pro, ap->arp_pln,
- hrd, ap->arp_hln);
- return;
- }
- if (pro == ETHERTYPE_TRAIL)
- (void)printf("trailer-");
- eh = (struct ether_header *)packetp;
- switch (op) {
-
- case ARPOP_REQUEST:
- (void)printf("arp who-has %s", ipaddr_string(TPA(ap)));
- if (bcmp((char *)ezero, (char *)THA(ap), 6) != 0)
- (void)printf(" (%s)", etheraddr_string(THA(ap)));
- (void)printf(" tell %s", ipaddr_string(SPA(ap)));
- if (bcmp((char *)ESRC(eh), (char *)SHA(ap), 6) != 0)
- (void)printf(" (%s)", etheraddr_string(SHA(ap)));
- break;
-
- case ARPOP_REPLY:
- (void)printf("arp reply %s", ipaddr_string(SPA(ap)));
- if (bcmp((char *)ESRC(eh), (char *)SHA(ap), 6) != 0)
- (void)printf(" (%s)", etheraddr_string(SHA(ap)));
- (void)printf(" is-at %s", etheraddr_string(SHA(ap)));
- if (bcmp((char *)EDST(eh), (char *)THA(ap), 6) != 0)
- (void)printf(" (%s)", etheraddr_string(THA(ap)));
- break;
-
- case REVARP_REQUEST:
- (void)printf("rarp who-is %s tell %s",
- etheraddr_string(THA(ap)),
- etheraddr_string(SHA(ap)));
- break;
-
- case REVARP_REPLY:
- (void)printf("rarp reply %s at %s",
- etheraddr_string(THA(ap)),
- ipaddr_string(TPA(ap)));
- break;
-
- default:
- (void)printf("arp-#%d", op);
- default_print((u_char *)ap, caplen);
- return;
- }
- if (hrd != ARPHRD_ETHER)
- printf(" hardware #%d", ap->arp_hrd);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-atalk.c b/usr.sbin/tcpdump/tcpdump/print-atalk.c
deleted file mode 100644
index 8bcb8ff..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-atalk.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Format and print AppleTalk packets.
- */
-#ifndef lint
-static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-atalk.c,v 1.2 1995/03/08 12:52:25 olah Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/if_ether.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "ethertype.h"
-#include "extract.h" /* must come after interface.h */
-#include "appletalk.h"
-
-static struct token type2str[] = {
- { ddpRTMP, "rtmp" },
- { ddpRTMPrequest, "rtmpReq" },
- { ddpECHO, "echo" },
- { ddpIP, "IP" },
- { ddpARP, "ARP" },
- { ddpKLAP, "KLAP" },
- { 0, NULL }
-};
-
-struct aarp {
- u_short htype, ptype;
- u_char halen, palen;
- u_short op;
- u_char hsaddr[6];
- u_char psaddr[4];
- u_char hdaddr[6];
- u_char pdaddr[4];
-};
-
-static char tstr[] = "[|atalk]";
-
-static void atp_print(const struct atATP *, int);
-static void atp_bitmap_print(u_char);
-static void nbp_print(const struct atNBP *, int, u_short, u_char, u_char);
-static const char *print_cstring(const char *, const u_char *);
-static const struct atNBPtuple *nbp_tuple_print(const struct atNBPtuple *,
- const u_char *,
- u_short, u_char, u_char);
-static const struct atNBPtuple *nbp_name_print(const struct atNBPtuple *,
- const u_char *);
-static const char *ataddr_string(u_short, u_char);
-static void ddp_print(const u_char *, int, int, u_short, u_char, u_char);
-static const char *ddpskt_string(int);
-
-/*
- * Print AppleTalk Datagram Delivery Protocol packets.
- */
-void
-atalk_print(register const u_char *bp, int length)
-{
- register const struct LAP *lp;
- register const struct atDDP *dp;
- register const struct atShortDDP *sdp;
- u_short snet;
-
-#if 0
- lp = (struct LAP *)bp;
- bp += sizeof(*lp);
- length -= sizeof(*lp);
-#else
- {
- static struct LAP lp_ = {0, 0, lapDDP};
- lp = &lp_;
- }
-#endif
- switch (lp->type) {
-
- case lapShortDDP:
- if (length < ddpSSize) {
- (void)printf(" [|sddp %d]", length);
- return;
- }
- sdp = (const struct atShortDDP *)bp;
- printf("%s.%s",
- ataddr_string(0, lp->src), ddpskt_string(sdp->srcSkt));
- printf(" > %s.%s:",
- ataddr_string(0, lp->dst), ddpskt_string(sdp->dstSkt));
- bp += ddpSSize;
- length -= ddpSSize;
- ddp_print(bp, length, sdp->type, 0, lp->src, sdp->srcSkt);
- break;
-
- case lapDDP:
- if (length < ddpSize) {
- (void)printf(" [|ddp %d]", length);
- return;
- }
- dp = (const struct atDDP *)bp;
- snet = EXTRACT_SHORT(&dp->srcNet);
- printf("%s.%s", ataddr_string(snet, dp->srcNode),
- ddpskt_string(dp->srcSkt));
- printf(" > %s.%s:",
- ataddr_string(EXTRACT_SHORT(&dp->dstNet), dp->dstNode),
- ddpskt_string(dp->dstSkt));
- bp += ddpSize;
- length -= ddpSize;
- ddp_print(bp, length, dp->type, snet, dp->srcNode, dp->srcSkt);
- break;
-
-#ifdef notdef
- case lapKLAP:
- klap_print(bp, length);
- break;
-#endif
-
- default:
- printf("%d > %d at-lap#%d %d",
- lp->src, lp->dst, lp->type, length);
- break;
- }
-}
-
-/* XXX should probably pass in the snap header and do checks like arp_print() */
-void
-aarp_print(register const u_char *bp, int length)
-{
- register const struct aarp *ap;
-
-#define AT(member) ataddr_string((ap->member[1]<<8)|ap->member[2],ap->member[3])
-
- printf("aarp ");
- ap = (const struct aarp *)bp;
- if (ap->htype == 1 && ap->ptype == ETHERTYPE_ATALK &&
- ap->halen == 6 && ap->palen == 4 )
- switch (ap->op) {
-
- case 1: /* request */
- (void)printf("who-has %s tell %s",
- AT(pdaddr), AT(psaddr));
- return;
-
- case 2: /* response */
- (void)printf("reply %s is-at %s",
- AT(pdaddr), etheraddr_string(ap->hdaddr));
- return;
-
- case 3: /* probe (oy!) */
- (void)printf("probe %s tell %s",
- AT(pdaddr), AT(psaddr));
- return;
- }
- (void)printf("len %d op %d htype %d ptype %#x halen %d palen %d",
- length, ap->op, ap->htype, ap->ptype, ap->halen, ap->palen );
-}
-
-static void
-ddp_print(register const u_char *bp, register int length, register int t,
- register u_short snet, register u_char snode, u_char skt)
-{
-
- switch (t) {
-
- case ddpNBP:
- nbp_print((const struct atNBP *)bp, length, snet, snode, skt);
- break;
-
- case ddpATP:
- atp_print((const struct atATP *)bp, length);
- break;
-
- default:
- (void)printf(" at-%s %d", tok2str(type2str, NULL, t), length);
- break;
- }
-}
-
-static void
-atp_print(register const struct atATP *ap, int length)
-{
- char c;
- u_int32 data;
-
- if ((const u_char *)(ap + 1) > snapend) {
- /* Just bail if we don't have the whole chunk. */
- fputs(tstr, stdout);
- return;
- }
- length -= sizeof(*ap);
- switch (ap->control & 0xc0) {
-
- case atpReqCode:
- (void)printf(" atp-req%s %d",
- ap->control & atpXO? " " : "*",
- EXTRACT_SHORT(&ap->transID));
-
- atp_bitmap_print(ap->bitmap);
-
- if (length != 0)
- (void)printf(" [len=%d]", length);
-
- switch (ap->control & (atpEOM|atpSTS)) {
- case atpEOM:
- (void)printf(" [EOM]");
- break;
- case atpSTS:
- (void)printf(" [STS]");
- break;
- case atpEOM|atpSTS:
- (void)printf(" [EOM,STS]");
- break;
- }
- break;
-
- case atpRspCode:
- (void)printf(" atp-resp%s%d:%d (%d)",
- ap->control & atpEOM? "*" : " ",
- EXTRACT_SHORT(&ap->transID), ap->bitmap, length);
- switch (ap->control & (atpXO|atpSTS)) {
- case atpXO:
- (void)printf(" [XO]");
- break;
- case atpSTS:
- (void)printf(" [STS]");
- break;
- case atpXO|atpSTS:
- (void)printf(" [XO,STS]");
- break;
- }
- break;
-
- case atpRelCode:
- (void)printf(" atp-rel %d", EXTRACT_SHORT(&ap->transID));
-
- atp_bitmap_print(ap->bitmap);
-
- /* length should be zero */
- if (length)
- (void)printf(" [len=%d]", length);
-
- /* there shouldn't be any control flags */
- if (ap->control & (atpXO|atpEOM|atpSTS)) {
- c = '[';
- if (ap->control & atpXO) {
- (void)printf("%cXO", c);
- c = ',';
- }
- if (ap->control & atpEOM) {
- (void)printf("%cEOM", c);
- c = ',';
- }
- if (ap->control & atpSTS) {
- (void)printf("%cSTS", c);
- c = ',';
- }
- (void)printf("]");
- }
- break;
-
- default:
- (void)printf(" atp-0x%x %d (%d)", ap->control,
- EXTRACT_SHORT(&ap->transID), length);
- break;
- }
- data = EXTRACT_LONG(&ap->userData);
- if (data != 0)
- (void)printf(" 0x%x", data);
-}
-
-static void
-atp_bitmap_print(register u_char bm)
-{
- register char c;
- register int i;
-
- /*
- * The '& 0xff' below is needed for compilers that want to sign
- * extend a u_char, which is the case with the Ultrix compiler.
- * (gcc is smart enough to eliminate it, at least on the Sparc).
- */
- if ((bm + 1) & (bm & 0xff)) {
- c = '<';
- for (i = 0; bm; ++i) {
- if (bm & 1) {
- (void)printf("%c%d", c, i);
- c = ',';
- }
- bm >>= 1;
- }
- (void)printf(">");
- } else {
- for (i = 0; bm; ++i)
- bm >>= 1;
- if (i > 1)
- (void)printf("<0-%d>", i - 1);
- else
- (void)printf("<0>");
- }
-}
-
-static void
-nbp_print(register const struct atNBP *np, int length, register u_short snet,
- register u_char snode, register u_char skt)
-{
- register const struct atNBPtuple *tp =
- (struct atNBPtuple *)((u_char *)np + nbpHeaderSize);
- int i = length;
- const u_char *ep;
-
- length -= nbpHeaderSize;
- if (length < 8) {
- /* must be room for at least one tuple */
- (void)printf(" truncated-nbp %d", length + nbpHeaderSize);
- return;
- }
- /* ep points to end of available data */
- ep = snapend;
- if ((const u_char *)tp > ep) {
- fputs(tstr, stdout);
- return;
- }
- switch (i = np->control & 0xf0) {
-
- case nbpBrRq:
- case nbpLkUp:
- (void)printf(i == nbpLkUp? " nbp-lkup %d:":" nbp-brRq %d:",
- np->id);
- if ((const u_char *)(tp + 1) > ep) {
- fputs(tstr, stdout);
- return;
- }
- (void)nbp_name_print(tp, ep);
- /*
- * look for anomalies: the spec says there can only
- * be one tuple, the address must match the source
- * address and the enumerator should be zero.
- */
- if ((np->control & 0xf) != 1)
- (void)printf(" [ntup=%d]", np->control & 0xf);
- if (tp->enumerator)
- (void)printf(" [enum=%d]", tp->enumerator);
- if (EXTRACT_SHORT(&tp->net) != snet ||
- tp->node != snode || tp->skt != skt)
- (void)printf(" [addr=%s.%d]",
- ataddr_string(EXTRACT_SHORT(&tp->net),
- tp->node), tp->skt);
- break;
-
- case nbpLkUpReply:
- (void)printf(" nbp-reply %d:", np->id);
-
- /* print each of the tuples in the reply */
- for (i = np->control & 0xf; --i >= 0 && tp; )
- tp = nbp_tuple_print(tp, ep, snet, snode, skt);
- break;
-
- default:
- (void)printf(" nbp-0x%x %d (%d)", np->control, np->id,
- length);
- break;
- }
-}
-
-/* print a counted string */
-static const char *
-print_cstring(register const char *cp, register const u_char *ep)
-{
- register int length;
-
- if (cp >= (const char *)ep) {
- fputs(tstr, stdout);
- return (0);
- }
- length = *cp++;
-
- /* Spec says string can be at most 32 bytes long */
- if (length < 0 || length > 32) {
- (void)printf("[len=%d]", length);
- return (0);
- }
- while (--length >= 0) {
- if (cp >= (char *)ep) {
- fputs(tstr, stdout);
- return (0);
- }
- putchar(*cp++);
- }
- return (cp);
-}
-
-static const struct atNBPtuple *
-nbp_tuple_print(register const struct atNBPtuple *tp,
- register const u_char *ep,
- register u_short snet, register u_char snode,
- register u_char skt)
-{
- register const struct atNBPtuple *tpn;
-
- if ((const u_char *)(tp + 1) > ep) {
- fputs(tstr, stdout);
- return 0;
- }
- tpn = nbp_name_print(tp, ep);
-
- /* if the enumerator isn't 1, print it */
- if (tp->enumerator != 1)
- (void)printf("(%d)", tp->enumerator);
-
- /* if the socket doesn't match the src socket, print it */
- if (tp->skt != skt)
- (void)printf(" %d", tp->skt);
-
- /* if the address doesn't match the src address, it's an anomaly */
- if (EXTRACT_SHORT(&tp->net) != snet || tp->node != snode)
- (void)printf(" [addr=%s]",
- ataddr_string(EXTRACT_SHORT(&tp->net), tp->node));
-
- return (tpn);
-}
-
-static const struct atNBPtuple *
-nbp_name_print(const struct atNBPtuple *tp, register const u_char *ep)
-{
- register const char *cp = (const char *)tp + nbpTupleSize;
-
- putchar(' ');
-
- /* Object */
- putchar('"');
- if ((cp = print_cstring(cp, ep)) != NULL) {
- /* Type */
- putchar(':');
- if ((cp = print_cstring(cp, ep)) != NULL) {
- /* Zone */
- putchar('@');
- if ((cp = print_cstring(cp, ep)) != NULL)
- putchar('"');
- }
- }
- return ((const struct atNBPtuple *)cp);
-}
-
-
-#define HASHNAMESIZE 4096
-
-struct hnamemem {
- int addr;
- char *name;
- struct hnamemem *nxt;
-};
-
-static struct hnamemem hnametable[HASHNAMESIZE];
-
-static const char *
-ataddr_string(u_short atnet, u_char athost)
-{
- register struct hnamemem *tp, *tp2;
- register int i = (atnet << 8) | athost;
- char nambuf[256];
- static int first = 1;
- FILE *fp;
-
- /*
- * if this is the first call, see if there's an AppleTalk
- * number to name map file.
- */
- if (first && (first = 0, !nflag)
- && (fp = fopen("/etc/atalk.names", "r"))) {
- char line[256];
- int i1, i2, i3;
-
- while (fgets(line, sizeof(line), fp)) {
- if (line[0] == '\n' || line[0] == 0 || line[0] == '#')
- continue;
- if (sscanf(line, "%d.%d.%d %s", &i1, &i2, &i3,
- nambuf) == 4)
- /* got a hostname. */
- i3 |= ((i1 << 8) | i2) << 8;
- else if (sscanf(line, "%d.%d %s", &i1, &i2,
- nambuf) == 3)
- /* got a net name */
- i3 = (((i1 << 8) | i2) << 8) | 255;
- else
- continue;
-
- for (tp = &hnametable[i3 & (HASHNAMESIZE-1)];
- tp->nxt; tp = tp->nxt)
- ;
- tp->addr = i3;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof(*tp));
- tp->name = savestr(nambuf);
- }
- fclose(fp);
- }
-
- for (tp = &hnametable[i & (HASHNAMESIZE-1)]; tp->nxt; tp = tp->nxt)
- if (tp->addr == i)
- return (tp->name);
-
- /* didn't have the node name -- see if we've got the net name */
- i |= 255;
- for (tp2 = &hnametable[i & (HASHNAMESIZE-1)]; tp2->nxt; tp2 = tp2->nxt)
- if (tp2->addr == i) {
- tp->addr = (atnet << 8) | athost;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof(*tp));
- (void)sprintf(nambuf, "%s.%02x", tp2->name, athost);
- tp->name = savestr(nambuf);
- return (tp->name);
- }
-
- tp->addr = (atnet << 8) | athost;
- tp->nxt = (struct hnamemem *)calloc(1, sizeof(*tp));
- if (athost != 255)
- (void)sprintf(nambuf, "%02x.%02x.%02x",
- atnet >> 8, atnet & 0xff, athost);
- else
- (void)sprintf(nambuf, "%02x.%02x", atnet >> 8, atnet & 0xff);
- i = strlen(nambuf) + 1;
- tp->name = strcpy(malloc((u_int) i), nambuf);
-
- return (tp->name);
-}
-
-static struct token skt2str[] = {
- { rtmpSkt, "rtmp" }, /* routing table maintenance */
- { nbpSkt, "nis" }, /* name info socket */
- { echoSkt, "echo" }, /* AppleTalk echo protocol */
- { zipSkt, "zip" }, /* zone info protocol */
- { 0, NULL }
-};
-
-static const char *
-ddpskt_string(register int skt)
-{
- static char buf[8];
-
- if (nflag) {
- (void)sprintf(buf, "%02x", skt);
- return (buf);
- }
- return (tok2str(skt2str, "%02x", skt));
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-bootp.c b/usr.sbin/tcpdump/tcpdump/print-bootp.c
deleted file mode 100644
index 9e3f8ca..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-bootp.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Format and print bootp packets.
- */
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-bootp.c,v 1.30 94/06/14 20:17:37 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-
-#include <ctype.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "bootp.h"
-
-static void rfc1048_print(const u_char *, int);
-static void cmu_print(const u_char *, int);
-
-static char tstr[] = " [|bootp]";
-
-/*
- * Print bootp requests
- */
-void
-bootp_print(register const u_char *cp, int length,
- u_short sport, u_short dport)
-{
- register const struct bootp *bp;
- static u_char vm_cmu[4] = VM_CMU;
- static u_char vm_rfc1048[4] = VM_RFC1048;
- const u_char *ep;
-
-#define TCHECK(var, l) if ((u_char *)&(var) > ep - l) goto trunc
-
- bp = (struct bootp *)cp;
- /* 'ep' points to the end of avaible data. */
- ep = snapend;
-
- TCHECK(bp->bp_op, sizeof(bp->bp_op));
- switch (bp->bp_op) {
-
- case BOOTREQUEST:
- /* Usually, a request goes from a client to a server */
- if (sport != IPPORT_BOOTPC || dport != IPPORT_BOOTPS)
- printf(" (request)");
- break;
-
- case BOOTREPLY:
- /* Usually, a reply goes from a server to a client */
- if (sport != IPPORT_BOOTPS || dport != IPPORT_BOOTPC)
- printf(" (reply)");
- break;
-
- default:
- printf(" bootp-#%d", bp->bp_op);
- }
-
- TCHECK(bp->bp_secs, sizeof(bp->bp_secs));
-
- /* The usual hardware address type is 1 (10Mb Ethernet) */
- if (bp->bp_htype != 1)
- printf(" htype-#%d", bp->bp_htype);
-
- /* The usual length for 10Mb Ethernet address is 6 bytes */
- if (bp->bp_htype != 1 || bp->bp_hlen != 6)
- printf(" hlen:%d", bp->bp_hlen);
-
- /* Only print interesting fields */
- if (bp->bp_hops)
- printf(" hops:%d", bp->bp_hops);
- if (bp->bp_xid)
- printf(" xid:0x%x", ntohl(bp->bp_xid));
- if (bp->bp_secs)
- printf(" secs:%d", ntohs(bp->bp_secs));
-
- /* Client's ip address */
- TCHECK(bp->bp_ciaddr, sizeof(bp->bp_ciaddr));
- if (bp->bp_ciaddr.s_addr)
- printf(" C:%s", ipaddr_string(&bp->bp_ciaddr));
-
- /* 'your' ip address (bootp client) */
- TCHECK(bp->bp_yiaddr, sizeof(bp->bp_yiaddr));
- if (bp->bp_yiaddr.s_addr)
- printf(" Y:%s", ipaddr_string(&bp->bp_yiaddr));
-
- /* Server's ip address */
- TCHECK(bp->bp_siaddr, sizeof(bp->bp_siaddr));
- if (bp->bp_siaddr.s_addr)
- printf(" S:%s", ipaddr_string(&bp->bp_siaddr));
-
- /* Gateway's ip address */
- TCHECK(bp->bp_giaddr, sizeof(bp->bp_giaddr));
- if (bp->bp_giaddr.s_addr)
- printf(" G:%s", ipaddr_string(&bp->bp_giaddr));
-
- /* Client's Ethernet address */
- if (bp->bp_htype == 1 && bp->bp_hlen == 6) {
- register const struct ether_header *eh;
- register const char *e;
-
- TCHECK(bp->bp_chaddr[0], 6);
- eh = (struct ether_header *)packetp;
- if (bp->bp_op == BOOTREQUEST)
- e = (const char *)ESRC(eh);
- else if (bp->bp_op == BOOTREPLY)
- e = (const char *)EDST(eh);
- else
- e = 0;
- if (e == 0 || bcmp((char *)bp->bp_chaddr, e, 6) != 0)
- printf(" ether %s", etheraddr_string(bp->bp_chaddr));
- }
-
- TCHECK(bp->bp_sname[0], 1); /* check first char only */
- if (*bp->bp_sname) {
- printf(" sname ");
- if (fn_print(bp->bp_sname, ep)) {
- fputs(tstr + 1, stdout);
- return;
- }
- }
- TCHECK(bp->bp_sname[0], 1); /* check first char only */
- if (*bp->bp_file) {
- printf(" file ");
- if (fn_print(bp->bp_file, ep)) {
- fputs(tstr + 1, stdout);
- return;
- }
- }
-
- /* Decode the vendor buffer */
- TCHECK(bp->bp_vend[0], sizeof(bp->bp_vend));
- length -= sizeof(*bp) - sizeof(bp->bp_vend);
- if (bcmp((char *)bp->bp_vend, (char *)vm_rfc1048,
- sizeof(u_int32)) == 0)
- rfc1048_print(bp->bp_vend, length);
- else if (bcmp((char *)bp->bp_vend, (char *)vm_cmu,
- sizeof(u_int32)) == 0)
- cmu_print(bp->bp_vend, length);
- else {
- u_int32 ul;
-
- bcopy((char *)bp->bp_vend, (char *)&ul, sizeof(ul));
- if (ul != 0)
- printf("vend-#0x%x", ul);
- }
-
- return;
-trunc:
- fputs(tstr, stdout);
-#undef TCHECK
-}
-
-/* The first character specifies the format to print */
-static struct token tag2str[] = {
-/* RFC1048 tags */
- { TAG_PAD, " PAD" },
- { TAG_SUBNET_MASK, "iSM" }, /* subnet mask (RFC950) */
- { TAG_TIME_OFFSET, "lTZ" }, /* seconds from UTC */
- { TAG_GATEWAY, "iDG" }, /* default gateway */
- { TAG_TIME_SERVER, "iTS" }, /* time servers (RFC868) */
- { TAG_NAME_SERVER, "iIEN" }, /* IEN name servers (IEN116) */
- { TAG_DOMAIN_SERVER, "iNS" }, /* domain name (RFC1035) */
- { TAG_LOG_SERVER, "iLOG" }, /* MIT log servers */
- { TAG_COOKIE_SERVER, "iCS" }, /* cookie servers (RFC865) */
- { TAG_LPR_SERVER, "iLPR" }, /* lpr server (RFC1179) */
- { TAG_IMPRESS_SERVER, "iIM" }, /* impress servers (Imagen) */
- { TAG_RLP_SERVER, "iRL" }, /* resource location (RFC887) */
- { TAG_HOSTNAME, "aHN" }, /* ascii hostname */
- { TAG_BOOTSIZE, "sBS" }, /* 512 byte blocks */
- { TAG_END, " END" },
-/* RFC1497 tags */
- { TAG_DUMPPATH, "aDP" },
- { TAG_DOMAINNAME, "aDN" },
- { TAG_SWAP_SERVER, "iSS" },
- { TAG_ROOTPATH, "aRP" },
- { TAG_EXTPATH, "aEP" },
- { 0, NULL }
-};
-
-static void
-rfc1048_print(register const u_char *bp, register int length)
-{
- register u_char tag;
- register const u_char *ep;
- register u_int len, size;
- register const char *cp;
- register char c;
- int first;
- u_int32 ul;
- u_short us;
-
- printf(" vend-rfc1048");
-
- /* Setup end pointer */
- ep = bp + length;
-
- /* Step over magic cookie */
- bp += sizeof(int32);
-
- /* Loop while we there is a tag left in the buffer */
- while (bp + 1 < ep) {
- tag = *bp++;
- if (tag == TAG_PAD)
- continue;
- if (tag == TAG_END)
- return;
- cp = tok2str(tag2str, "?T%d", tag);
- c = *cp++;
- printf(" %s:", cp);
-
- /* Get the length; check for truncation */
- if (bp + 1 >= ep) {
- fputs(tstr, stdout);
- return;
- }
- len = *bp++;
- if (bp + len >= ep) {
- fputs(tstr, stdout);
- return;
- }
-
- /* Print data */
- size = len;
- if (c == '?') {
- /* Base default formats for unknown tags on data size */
- if (size & 1)
- c = 'b';
- else if (size & 2)
- c = 's';
- else
- c = 'l';
- }
- first = 1;
- switch (c) {
-
- case 'a':
- /* ascii strings */
- (void)fn_printn(bp, size, NULL);
- bp += size;
- size = 0;
- break;
-
- case 'i':
- case 'l':
- /* ip addresses/32-bit words */
- while (size >= sizeof(ul)) {
- if (!first)
- putchar(',');
- bcopy((char *)bp, (char *)&ul, sizeof(ul));
- if (c == 'i')
- printf("%s", ipaddr_string(&ul));
- else
- printf("%lu", ul);
- bp += sizeof(ul);
- size -= sizeof(ul);
- first = 0;
- }
- break;
-
- case 's':
- /* shorts */
- while (size >= sizeof(us)) {
- if (!first)
- putchar(',');
- bcopy((char *)bp, (char *)&us, sizeof(us));
- printf("%d", us);
- bp += sizeof(us);
- size -= sizeof(us);
- first = 0;
- }
- break;
-
- case 'b':
- default:
- /* Bytes */
- while (size > 0) {
- if (!first)
- putchar('.');
- printf("%d", *bp);
- ++bp;
- --size;
- first = 0;
- }
- break;
- }
- /* Data left over? */
- if (size)
- printf("[len %d]", len);
- }
-}
-
-static void
-cmu_print(register const u_char *bp, register int length)
-{
- register const struct cmu_vend *cmu;
- register const u_char *ep;
- char *fmt = " %s:%s";
-
-#define TCHECK(var, l) if ((u_char *)&(var) > ep - l) goto trunc
-#define PRINTCMUADDR(m, s) { TCHECK(cmu->m, sizeof(cmu->m)); \
- if (cmu->m.s_addr != 0) \
- printf(fmt, s, ipaddr_string(&cmu->m.s_addr)); }
-
- /* Setup end pointer */
- ep = bp + length;
-
- printf(" vend-cmu");
- cmu = (struct cmu_vend *)bp;
-
- /* Only print if there are unknown bits */
- TCHECK(cmu->v_flags, sizeof(cmu->v_flags));
- if ((cmu->v_flags & ~(VF_SMASK)) != 0)
- printf(" F:0x%x", cmu->v_flags);
- PRINTCMUADDR(v_dgate, "DG");
- PRINTCMUADDR(v_smask, cmu->v_flags & VF_SMASK ? "SM" : "SM*");
- PRINTCMUADDR(v_dns1, "NS1");
- PRINTCMUADDR(v_dns2, "NS2");
- PRINTCMUADDR(v_ins1, "IEN1");
- PRINTCMUADDR(v_ins2, "IEN2");
- PRINTCMUADDR(v_ts1, "TS1");
- PRINTCMUADDR(v_ts2, "TS2");
- return;
-
-trunc:
- fputs(tstr, stdout);
-#undef TCHECK
-#undef PRINTCMUADDR
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-decnet.c b/usr.sbin/tcpdump/tcpdump/print-decnet.c
deleted file mode 100644
index 91794d8..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-decnet.c
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: print-decnet.c,v 1.15 94/06/20 19:44:38 leres Exp $ (LBL)";
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-#ifdef DECNETLIB
-#include <netdnet/dnetdb.h>
-#endif
-
-#include <ctype.h>
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <unistd.h>
-
-#include "decnet.h"
-#include "interface.h"
-#include "addrtoname.h"
-
-/* Forwards */
-static void print_decnet_ctlmsg(const union routehdr *, int);
-static void print_t_info(int);
-static void print_l1_routes(const char *, int);
-static void print_l2_routes(const char *, int);
-static void print_i_info(int);
-static void print_elist(const char *, int);
-static void print_nsp(const u_char *, int);
-static void print_reason(int);
-#ifdef PRINT_NSPDATA
-static void pdata(u_char *, int);
-#endif
-
-#ifdef DECNETLIB
-extern char *dnet_htoa(struct dn_naddr *);
-#endif
-
-void
-decnet_print(register const u_char *ap, register int length,
- register int caplen)
-{
- static union routehdr rhcopy;
- register union routehdr *rhp = &rhcopy;
- register int mflags;
- int dst, src, hops;
- int rhlen;
- const u_char *nspp;
- int nsplen;
- int pktlen;
-
- if (length < sizeof(struct shorthdr)) {
- (void)printf("[|decnet]");
- return;
- }
-
- pktlen = EXTRACT_16BITS(ap);
-
- rhlen = min(length, caplen);
- rhlen = min(rhlen, sizeof(*rhp));
- bcopy(&(ap[sizeof(short)]), rhp, rhlen);
-
- mflags = EXTRACT_8BITS(rhp->rh_short.sh_flags);
-
- if (mflags & RMF_PAD) {
- /* pad bytes of some sort in front of message */
- int padlen = mflags & RMF_PADMASK;
- if (vflag)
- (void) printf("[pad:%d] ", padlen);
- ap += padlen;
- length -= padlen;
- caplen -= padlen;
- rhlen = min(length, caplen);
- rhlen = min(rhlen, sizeof(*rhp));
- bcopy(&(ap[sizeof(short)]), rhp, rhlen);
- mflags = EXTRACT_8BITS(rhp->rh_short.sh_flags);
- }
-
- if (mflags & RMF_FVER) {
- (void) printf("future-version-decnet");
- default_print(ap, length);
- return;
- }
-
- /* is it a control message? */
- if (mflags & RMF_CTLMSG) {
- print_decnet_ctlmsg(rhp, min(length, caplen));
- return;
- }
-
- switch (mflags & RMF_MASK) {
- case RMF_LONG:
- dst = EXTRACT_16BITS(rhp->rh_long.lg_dst.dne_remote.dne_nodeaddr);
- src = EXTRACT_16BITS(rhp->rh_long.lg_src.dne_remote.dne_nodeaddr);
- hops = EXTRACT_8BITS(rhp->rh_long.lg_visits);
- nspp = &(ap[sizeof(short) + sizeof(struct longhdr)]);
- nsplen = min((length - sizeof(struct longhdr)),
- (caplen - sizeof(struct longhdr)));
- break;
- case RMF_SHORT:
- dst = EXTRACT_16BITS(rhp->rh_short.sh_dst);
- src = EXTRACT_16BITS(rhp->rh_short.sh_src);
- hops = (EXTRACT_8BITS(rhp->rh_short.sh_visits) & VIS_MASK)+1;
- nspp = &(ap[sizeof(short) + sizeof(struct shorthdr)]);
- nsplen = min((length - sizeof(struct shorthdr)),
- (caplen - sizeof(struct shorthdr)));
- break;
- default:
- (void) printf("unknown message flags under mask");
- default_print((u_char *)ap, length);
- return;
- }
-
- (void)printf("%s > %s %d ",
- dnaddr_string(src), dnaddr_string(dst), pktlen);
- if (vflag) {
- if (mflags & RMF_RQR)
- (void)printf("RQR ");
- if (mflags & RMF_RTS)
- (void)printf("RTS ");
- if (mflags & RMF_IE)
- (void)printf("IE ");
- (void)printf("%d hops ", hops);
- }
-
- print_nsp(nspp, nsplen);
-}
-
-static void
-print_decnet_ctlmsg(register const union routehdr *rhp, int length)
-{
- int mflags = EXTRACT_8BITS(rhp->rh_short.sh_flags);
- register union controlmsg *cmp = (union controlmsg *)rhp;
- int src, dst, info, blksize, eco, ueco, hello, other, vers;
- etheraddr srcea, rtea;
- int priority;
- char *rhpx = (char *)rhp;
-
- switch (mflags & RMF_CTLMASK) {
- case RMF_INIT:
- (void)printf("init ");
- src = EXTRACT_16BITS(cmp->cm_init.in_src);
- info = EXTRACT_8BITS(cmp->cm_init.in_info);
- blksize = EXTRACT_16BITS(cmp->cm_init.in_blksize);
- vers = EXTRACT_8BITS(cmp->cm_init.in_vers);
- eco = EXTRACT_8BITS(cmp->cm_init.in_eco);
- ueco = EXTRACT_8BITS(cmp->cm_init.in_ueco);
- hello = EXTRACT_16BITS(cmp->cm_init.in_hello);
- print_t_info(info);
- (void)printf(
- "src %sblksize %d vers %d eco %d ueco %d hello %d",
- dnaddr_string(src), blksize, vers, eco, ueco,
- hello);
- break;
- case RMF_VER:
- (void)printf("verification ");
- src = EXTRACT_16BITS(cmp->cm_ver.ve_src);
- other = EXTRACT_8BITS(cmp->cm_ver.ve_fcnval);
- (void)printf("src %s fcnval %o", dnaddr_string(src), other);
- break;
- case RMF_TEST:
- (void)printf("test ");
- src = EXTRACT_16BITS(cmp->cm_test.te_src);
- other = EXTRACT_8BITS(cmp->cm_test.te_data);
- (void)printf("src %s data %o", dnaddr_string(src), other);
- break;
- case RMF_L1ROUT:
- (void)printf("lev-1-routing ");
- src = EXTRACT_16BITS(cmp->cm_l1rou.r1_src);
- (void)printf("src %s ", dnaddr_string(src));
- print_l1_routes(&(rhpx[sizeof(struct l1rout)]),
- length - sizeof(struct l1rout));
- break;
- case RMF_L2ROUT:
- (void)printf("lev-2-routing ");
- src = EXTRACT_16BITS(cmp->cm_l2rout.r2_src);
- (void)printf("src %s ", dnaddr_string(src));
- print_l2_routes(&(rhpx[sizeof(struct l2rout)]),
- length - sizeof(struct l2rout));
- break;
- case RMF_RHELLO:
- (void)printf("router-hello ");
- vers = EXTRACT_8BITS(cmp->cm_rhello.rh_vers);
- eco = EXTRACT_8BITS(cmp->cm_rhello.rh_eco);
- ueco = EXTRACT_8BITS(cmp->cm_rhello.rh_ueco);
- bcopy(&(cmp->cm_rhello.rh_src), &srcea, sizeof(srcea));
- src = EXTRACT_16BITS(srcea.dne_remote.dne_nodeaddr);
- info = EXTRACT_8BITS(cmp->cm_rhello.rh_info);
- blksize = EXTRACT_16BITS(cmp->cm_rhello.rh_blksize);
- priority = EXTRACT_8BITS(cmp->cm_rhello.rh_priority);
- hello = EXTRACT_16BITS(cmp->cm_rhello.rh_hello);
- print_i_info(info);
- (void)printf(
- "vers %d eco %d ueco %d src %s blksize %d pri %d hello %d",
- vers, eco, ueco, dnaddr_string(src),
- blksize, priority, hello);
- print_elist(&(rhpx[sizeof(struct rhellomsg)]),
- length - sizeof(struct rhellomsg));
- break;
- case RMF_EHELLO:
- (void)printf("endnode-hello ");
- vers = EXTRACT_8BITS(cmp->cm_ehello.eh_vers);
- eco = EXTRACT_8BITS(cmp->cm_ehello.eh_eco);
- ueco = EXTRACT_8BITS(cmp->cm_ehello.eh_ueco);
- bcopy(&(cmp->cm_ehello.eh_src), &srcea, sizeof(srcea));
- src = EXTRACT_16BITS(srcea.dne_remote.dne_nodeaddr);
- info = EXTRACT_8BITS(cmp->cm_ehello.eh_info);
- blksize = EXTRACT_16BITS(cmp->cm_ehello.eh_blksize);
- /*seed*/
- bcopy(&(cmp->cm_ehello.eh_router), &rtea, sizeof(rtea));
- dst = EXTRACT_16BITS(rtea.dne_remote.dne_nodeaddr);
- hello = EXTRACT_16BITS(cmp->cm_ehello.eh_hello);
- other = EXTRACT_8BITS(cmp->cm_ehello.eh_data);
- print_i_info(info);
- (void)printf(
- "vers %d eco %d ueco %d src %s blksize %d rtr %s hello %d data %o",
- vers, eco, ueco, dnaddr_string(src),
- blksize, dnaddr_string(dst), hello, other);
- break;
-
- default:
- (void)printf("unknown control message");
- default_print((u_char *)rhp, length);
- break;
- }
-}
-
-static void
-print_t_info(int info)
-{
- int ntype = info & 3;
- switch (ntype) {
- case 0: (void)printf("reserved-ntype? "); break;
- case TI_L2ROUT: (void)printf("l2rout "); break;
- case TI_L1ROUT: (void)printf("l1rout "); break;
- case TI_ENDNODE: (void)printf("endnode "); break;
- }
- if (info & TI_VERIF)
- (void)printf("verif ");
- if (info & TI_BLOCK)
- (void)printf("blo ");
-}
-
-static void
-print_l1_routes(const char *rp, int len)
-{
- int count;
- int id;
- int info;
-
- /* The last short is a checksum */
- while (len > (3 * sizeof(short))) {
- count = EXTRACT_16BITS(rp);
- if (count > 1024)
- return; /* seems to be bogus from here on */
- rp += sizeof(short);
- len -= sizeof(short);
- id = EXTRACT_16BITS(rp);
- rp += sizeof(short);
- len -= sizeof(short);
- info = EXTRACT_16BITS(rp);
- rp += sizeof(short);
- len -= sizeof(short);
- (void)printf("{ids %d-%d cost %d hops %d} ", id, id + count,
- RI_COST(info), RI_HOPS(info));
- }
-}
-
-static void
-print_l2_routes(const char *rp, int len)
-{
- int count;
- int area;
- int info;
-
- /* The last short is a checksum */
- while (len > (3 * sizeof(short))) {
- count = EXTRACT_16BITS(rp);
- if (count > 1024)
- return; /* seems to be bogus from here on */
- rp += sizeof(short);
- len -= sizeof(short);
- area = EXTRACT_16BITS(rp);
- rp += sizeof(short);
- len -= sizeof(short);
- info = EXTRACT_16BITS(rp);
- rp += sizeof(short);
- len -= sizeof(short);
- (void)printf("{areas %d-%d cost %d hops %d} ", area, area + count,
- RI_COST(info), RI_HOPS(info));
- }
-}
-
-static void
-print_i_info(int info)
-{
- int ntype = info & II_TYPEMASK;
- switch (ntype) {
- case 0: (void)printf("reserved-ntype? "); break;
- case II_L2ROUT: (void)printf("l2rout "); break;
- case II_L1ROUT: (void)printf("l1rout "); break;
- case II_ENDNODE: (void)printf("endnode "); break;
- }
- if (info & II_VERIF)
- (void)printf("verif ");
- if (info & II_NOMCAST)
- (void)printf("nomcast ");
- if (info & II_BLOCK)
- (void)printf("blo ");
-}
-
-static void
-print_elist(const char *elp, int len)
-{
- /* Not enough examples available for me to debug this */
-}
-
-static void
-print_nsp(const u_char *nspp, int nsplen)
-{
- const struct nsphdr *nsphp = (struct nsphdr *)nspp;
- int dst, src, flags;
-
- flags = EXTRACT_8BITS(nsphp->nh_flags);
- dst = EXTRACT_16BITS(nsphp->nh_dst);
- src = EXTRACT_16BITS(nsphp->nh_src);
-
- switch (flags & NSP_TYPEMASK) {
- case MFT_DATA:
- switch (flags & NSP_SUBMASK) {
- case MFS_BOM:
- case MFS_MOM:
- case MFS_EOM:
- case MFS_BOM+MFS_EOM:
- printf("data %d>%d ", src, dst);
- {
- struct seghdr *shp = (struct seghdr *)nspp;
- int ack;
-#ifdef PRINT_NSPDATA
- u_char *dp;
-#endif
- int data_off = sizeof(struct minseghdr);
-
- ack = EXTRACT_16BITS(shp->sh_seq[0]);
- if (ack & SGQ_ACK) { /* acknum field */
- if ((ack & SGQ_NAK) == SGQ_NAK)
- (void)printf("nak %d ", ack & SGQ_MASK);
- else
- (void)printf("ack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[1]);
- data_off += sizeof(short);
- if (ack & SGQ_OACK) { /* ackoth field */
- if ((ack & SGQ_ONAK) == SGQ_ONAK)
- (void)printf("onak %d ", ack & SGQ_MASK);
- else
- (void)printf("oack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[2]);
- data_off += sizeof(short);
- }
- }
- (void)printf("seg %d ", ack & SGQ_MASK);
-#ifdef PRINT_NSPDATA
- dp = &(nspp[data_off]);
- pdata(dp, 10);
-#endif
- }
- break;
- case MFS_ILS+MFS_INT:
- printf("intr ");
- {
- struct seghdr *shp = (struct seghdr *)nspp;
- int ack;
-#ifdef PRINT_NSPDATA
- u_char *dp;
-#endif
- int data_off = sizeof(struct minseghdr);
-
- ack = EXTRACT_16BITS(shp->sh_seq[0]);
- if (ack & SGQ_ACK) { /* acknum field */
- if ((ack & SGQ_NAK) == SGQ_NAK)
- (void)printf("nak %d ", ack & SGQ_MASK);
- else
- (void)printf("ack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[1]);
- data_off += sizeof(short);
- if (ack & SGQ_OACK) { /* ackdat field */
- if ((ack & SGQ_ONAK) == SGQ_ONAK)
- (void)printf("nakdat %d ", ack & SGQ_MASK);
- else
- (void)printf("ackdat %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[2]);
- data_off += sizeof(short);
- }
- }
- (void)printf("seg %d ", ack & SGQ_MASK);
-#ifdef PRINT_NSPDATA
- dp = &(nspp[data_off]);
- pdata(dp, 10);
-#endif
- }
- break;
- case MFS_ILS:
- (void)printf("link-service %d>%d ", src, dst);
- {
- struct seghdr *shp = (struct seghdr *)nspp;
- struct lsmsg *lsmp =
- (struct lsmsg *)&(nspp[sizeof(struct seghdr)]);
- int ack;
- int lsflags, fcval;
-
- ack = EXTRACT_16BITS(shp->sh_seq[0]);
- if (ack & SGQ_ACK) { /* acknum field */
- if ((ack & SGQ_NAK) == SGQ_NAK)
- (void)printf("nak %d ", ack & SGQ_MASK);
- else
- (void)printf("ack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[1]);
- if (ack & SGQ_OACK) { /* ackdat field */
- if ((ack & SGQ_ONAK) == SGQ_ONAK)
- (void)printf("nakdat %d ", ack & SGQ_MASK);
- else
- (void)printf("ackdat %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(shp->sh_seq[2]);
- }
- }
- (void)printf("seg %d ", ack & SGQ_MASK);
- lsflags = EXTRACT_8BITS(lsmp->ls_lsflags);
- fcval = EXTRACT_8BITS(lsmp->ls_fcval);
- switch (lsflags & LSI_MASK) {
- case LSI_DATA:
- (void)printf("dat seg count %d ", fcval);
- switch (lsflags & LSM_MASK) {
- case LSM_NOCHANGE:
- break;
- case LSM_DONOTSEND:
- (void)printf("donotsend-data ");
- break;
- case LSM_SEND:
- (void)printf("send-data ");
- break;
- default:
- (void)printf("reserved-fcmod? %x", lsflags);
- break;
- }
- break;
- case LSI_INTR:
- (void)printf("intr req count %d ", fcval);
- break;
- default:
- (void)printf("reserved-fcval-int? %x", lsflags);
- break;
- }
- }
- break;
- default:
- (void)printf("reserved-subtype? %x %d > %d", flags, src, dst);
- break;
- }
- break;
- case MFT_ACK:
- switch (flags & NSP_SUBMASK) {
- case MFS_DACK:
- (void)printf("data-ack %d>%d ", src, dst);
- {
- struct ackmsg *amp = (struct ackmsg *)nspp;
- int ack;
-
- ack = EXTRACT_16BITS(amp->ak_acknum[0]);
- if (ack & SGQ_ACK) { /* acknum field */
- if ((ack & SGQ_NAK) == SGQ_NAK)
- (void)printf("nak %d ", ack & SGQ_MASK);
- else
- (void)printf("ack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(amp->ak_acknum[1]);
- if (ack & SGQ_OACK) { /* ackoth field */
- if ((ack & SGQ_ONAK) == SGQ_ONAK)
- (void)printf("onak %d ", ack & SGQ_MASK);
- else
- (void)printf("oack %d ", ack & SGQ_MASK);
- }
- }
- }
- break;
- case MFS_IACK:
- (void)printf("ils-ack %d>%d ", src, dst);
- {
- struct ackmsg *amp = (struct ackmsg *)nspp;
- int ack;
-
- ack = EXTRACT_16BITS(amp->ak_acknum[0]);
- if (ack & SGQ_ACK) { /* acknum field */
- if ((ack & SGQ_NAK) == SGQ_NAK)
- (void)printf("nak %d ", ack & SGQ_MASK);
- else
- (void)printf("ack %d ", ack & SGQ_MASK);
- ack = EXTRACT_16BITS(amp->ak_acknum[1]);
- if (ack & SGQ_OACK) { /* ackdat field */
- if ((ack & SGQ_ONAK) == SGQ_ONAK)
- (void)printf("nakdat %d ", ack & SGQ_MASK);
- else
- (void)printf("ackdat %d ", ack & SGQ_MASK);
- }
- }
- }
- break;
- case MFS_CACK:
- (void)printf("conn-ack %d", dst);
- break;
- default:
- (void)printf("reserved-acktype? %x %d > %d", flags, src, dst);
- break;
- }
- break;
- case MFT_CTL:
- switch (flags & NSP_SUBMASK) {
- case MFS_CI:
- case MFS_RCI:
- if ((flags & NSP_SUBMASK) == MFS_CI)
- (void)printf("conn-initiate ");
- else
- (void)printf("retrans-conn-initiate ");
- (void)printf("%d>%d ", src, dst);
- {
- struct cimsg *cimp = (struct cimsg *)nspp;
- int services, info, segsize;
-#ifdef PRINT_NSPDATA
- u_char *dp;
-#endif
-
- services = EXTRACT_8BITS(cimp->ci_services);
- info = EXTRACT_8BITS(cimp->ci_info);
- segsize = EXTRACT_16BITS(cimp->ci_segsize);
-
- switch (services & COS_MASK) {
- case COS_NONE:
- break;
- case COS_SEGMENT:
- (void)printf("seg ");
- break;
- case COS_MESSAGE:
- (void)printf("msg ");
- break;
- case COS_CRYPTSER:
- (void)printf("crypt ");
- break;
- }
- switch (info & COI_MASK) {
- case COI_32:
- (void)printf("ver 3.2 ");
- break;
- case COI_31:
- (void)printf("ver 3.1 ");
- break;
- case COI_40:
- (void)printf("ver 4.0 ");
- break;
- case COI_41:
- (void)printf("ver 4.1 ");
- break;
- }
- (void)printf("segsize %d ", segsize);
-#ifdef PRINT_NSPDATA
- dp = &(nspp[sizeof(struct cimsg)]);
- pdata(dp, nsplen - sizeof(struct cimsg));
-#endif
- }
- break;
- case MFS_CC:
- (void)printf("conn-confirm %d>%d ", src, dst);
- {
- struct ccmsg *ccmp = (struct ccmsg *)nspp;
- int services, info, segsize, optlen;
-#ifdef PRINT_NSPDATA
- u_char *dp;
-#endif
-
- services = EXTRACT_8BITS(ccmp->cc_services);
- info = EXTRACT_8BITS(ccmp->cc_info);
- segsize = EXTRACT_16BITS(ccmp->cc_segsize);
- optlen = EXTRACT_8BITS(ccmp->cc_optlen);
-
- switch (services & COS_MASK) {
- case COS_NONE:
- break;
- case COS_SEGMENT:
- (void)printf("seg ");
- break;
- case COS_MESSAGE:
- (void)printf("msg ");
- break;
- case COS_CRYPTSER:
- (void)printf("crypt ");
- break;
- }
- switch (info & COI_MASK) {
- case COI_32:
- (void)printf("ver 3.2 ");
- break;
- case COI_31:
- (void)printf("ver 3.1 ");
- break;
- case COI_40:
- (void)printf("ver 4.0 ");
- break;
- case COI_41:
- (void)printf("ver 4.1 ");
- break;
- }
- (void)printf("segsize %d ", segsize);
- if (optlen) {
- (void)printf("optlen %d ", optlen);
-#ifdef PRINT_NSPDATA
- optlen = min(optlen, nsplen - sizeof(struct ccmsg));
- dp = &(nspp[sizeof(struct ccmsg)]);
- pdata(dp, optlen);
-#endif
- }
- }
- break;
- case MFS_DI:
- (void)printf("disconn-initiate %d>%d ", src, dst);
- {
- struct dimsg *dimp = (struct dimsg *)nspp;
- int reason, optlen;
-#ifdef PRINT_NSPDATA
- u_char *dp;
-#endif
-
- reason = EXTRACT_16BITS(dimp->di_reason);
- optlen = EXTRACT_8BITS(dimp->di_optlen);
-
- print_reason(reason);
- if (optlen) {
- (void)printf("optlen %d ", optlen);
-#ifdef PRINT_NSPDATA
- optlen = min(optlen, nsplen - sizeof(struct dimsg));
- dp = &(nspp[sizeof(struct dimsg)]);
- pdata(dp, optlen);
-#endif
- }
- }
- break;
- case MFS_DC:
- (void)printf("disconn-confirm %d>%d ", src, dst);
- {
- struct dcmsg *dcmp = (struct dcmsg *)nspp;
- int reason;
-
- reason = EXTRACT_16BITS(dcmp->dc_reason);
-
- print_reason(reason);
- }
- break;
- default:
- (void)printf("reserved-ctltype? %x %d > %d", flags, src, dst);
- break;
- }
- break;
- default:
- (void)printf("reserved-type? %x %d > %d", flags, src, dst);
- break;
- }
-}
-
-struct token reason2str[] = {
- { UC_OBJREJECT, "object rejected connect" },
- { UC_RESOURCES, "insufficient resources" },
- { UC_NOSUCHNODE, "unrecognized node name" },
- { DI_SHUT, "node is shutting down" },
- { UC_NOSUCHOBJ, "unrecognized object" },
- { UC_INVOBJFORMAT, "invalid object name format" },
- { UC_OBJTOOBUSY, "object too busy" },
- { DI_PROTOCOL, "protocol error discovered" },
- { DI_TPA, "third party abort" },
- { UC_USERABORT, "user abort" },
- { UC_INVNODEFORMAT, "invalid node name format" },
- { UC_LOCALSHUT, "local node shutting down" },
- { DI_LOCALRESRC, "insufficient local resources" },
- { DI_REMUSERRESRC, "insufficient remote user resources" },
- { UC_ACCESSREJECT, "invalid access control information" },
- { DI_BADACCNT, "bad ACCOUNT information" },
- { UC_NORESPONSE, "no response from object" },
- { UC_UNREACHABLE, "node unreachable" },
- { DC_NOLINK, "no link terminate" },
- { DC_COMPLETE, "disconnect complete" },
- { DI_BADIMAGE, "bad image data in connect" },
- { DI_SERVMISMATCH, "cryptographic service mismatch" },
- { 0, NULL }
-};
-
-static void
-print_reason(register int reason)
-{
- printf("%s ", tok2str(reason2str, "reason-%d", reason));
-}
-
-char *
-dnnum_string(u_short dnaddr)
-{
- char *str;
- int area = (dnaddr & AREAMASK) >> AREASHIFT;
- int node = dnaddr & NODEMASK;
-
- str = (char *)malloc(sizeof("00.0000"));
- sprintf(str, "%d.%d", area, node);
- return(str);
-}
-
-char *
-dnname_string(u_short dnaddr)
-{
-#ifdef DECNETLIB
- struct dn_naddr dna;
-
- dna.a_len = sizeof(short);
- bcopy((char *)&dnaddr, dna.a_addr, sizeof(short));
- return (savestr(dnet_htoa(&dna)));
-#else
- return(dnnum_string(dnaddr)); /* punt */
-#endif
-}
-
-#ifdef PRINT_NSPDATA
-static void
-pdata(u_char *dp, int maxlen)
-{
- char c;
- int x = maxlen;
-
- while (x-- > 0) {
- c = *dp++;
- if (isprint(c))
- putchar(c);
- else
- printf("\\%o", c & 0xFF);
- }
-}
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/print-domain.c b/usr.sbin/tcpdump/tcpdump/print-domain.c
deleted file mode 100644
index 2ed1edf..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-domain.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: print-domain.c,v 1.23 94/06/14 20:17:38 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#undef NOERROR /* Solaris sucks */
-#include <arpa/nameser.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-static char *ns_ops[] = {
- "", " inv_q", " stat", " op3", " op4", " op5", " op6", " op7",
- " op8", " updataA", " updateD", " updateDA",
- " updateM", " updateMA", " zoneInit", " zoneRef",
-};
-
-static char *ns_resp[] = {
- "", " FormErr", " ServFail", " NXDomain",
- " NotImp", " Refused", " Resp6", " Resp7",
- " Resp8", " Resp9", " Resp10", " Resp11",
- " Resp12", " Resp13", " Resp14", " NoChange",
-};
-
-/* skip over a domain name */
-static const u_char *
-ns_nskip(register const u_char *cp)
-{
- register u_char i;
-
- if (((i = *cp++) & 0xc0) == 0xc0)
- return (cp + 1);
- while (i) {
- cp += i;
- i = *cp++;
- }
- return (cp);
-}
-
-/* print a domain name */
-static void
-ns_nprint(register const u_char *cp, register const u_char *bp,
- register const u_char *ep)
-{
- register u_int i;
-
- putchar(' ');
- if ((i = *cp++) != 0)
- while (i && cp < ep) {
- if ((i & 0xc0) == 0xc0) {
- cp = bp + (((i << 8) | *cp) & 0x3fff);
- i = *cp++;
- continue;
- }
- do {
- putchar(*cp++);
- } while (--i);
- putchar('.');
- i = *cp++;
- }
- else
- putchar('.');
-}
-
-static struct token type2str[] = {
- { T_A, "A" },
- { T_NS, "NS" },
- { T_MD, "MD" },
- { T_MF, "MF" },
- { T_CNAME, "CNAME" },
- { T_SOA, "SOA" },
- { T_MB, "MB" },
- { T_MG, "MG" },
- { T_MR, "MR" },
- { T_NULL, "NULL" },
- { T_WKS, "WKS" },
- { T_PTR, "PTR" },
- { T_HINFO, "HINFO" },
- { T_MINFO, "MINFO" },
- { T_MX, "MX" },
- { T_UINFO, "UINFO" },
- { T_UID, "UID" },
- { T_GID, "GID" },
-#ifdef T_UNSPEC
- { T_UNSPEC, "UNSPEC" },
-#endif
- { T_AXFR, "AXFR" },
- { T_MAILB, "MAILB" },
- { T_MAILA, "MAILA" },
- { T_ANY, "ANY" },
- { 0, NULL }
-};
-
-/* print a query */
-static void
-ns_qprint(register const u_char *cp, register const u_char *bp,
- register const u_char *ep)
-{
- const u_char *np = cp;
- register u_int i;
-
- cp = ns_nskip(cp);
-
- if (cp + 4 > ep)
- return;
-
- /* print the qtype and qclass (if it's not IN) */
- i = *cp++ << 8;
- i |= *cp++;
- printf(" %s", tok2str(type2str, "Type%d", i));
- i = *cp++ << 8;
- if ((i |= *cp++) != C_IN)
- if (i == C_ANY)
- printf("(c_any)");
- else
- printf("(Class %d)", i);
-
- putchar('?');
- ns_nprint(np, bp, ep);
-}
-
-
-/* print a reply */
-static void
-ns_rprint(register const u_char *cp, register const u_char *bp,
- register const u_char *ep)
-{
- register u_int i;
- u_short typ;
-
- cp = ns_nskip(cp);
-
- if (cp + 10 > ep)
- return;
-
- /* print the type/qtype and class (if it's not IN) */
- typ = *cp++ << 8;
- typ |= *cp++;
- i = *cp++ << 8;
- if ((i |= *cp++) != C_IN)
- if (i == C_ANY)
- printf("(c_any)");
- else
- printf("(Class %d)", i);
-
- /* ignore ttl & len */
- cp += 6;
- printf(" %s", tok2str(type2str, "Type%d", typ));
- switch (typ) {
-
- case T_A:
- printf(" %s", ipaddr_string(cp));
- break;
-
- case T_NS:
- case T_CNAME:
- case T_PTR:
- ns_nprint(cp, bp, ep);
- break;
-
- case T_MX:
- ns_nprint(cp+2, bp, ep);
-#ifndef TCPDUMP_ALIGN
- printf(" %d", *(short *)cp);
-#else
- {
- u_short x = *cp | cp[1] << 8;
- printf(" %d", ntohs(x));
- }
-#endif
- break;
- }
-}
-
-void
-ns_print(register const u_char *bp, int length)
-{
- register const HEADER *np;
- int qdcount, ancount, nscount, arcount;
- const u_char *ep = snapend;
-
- np = (const HEADER *)bp;
- /* get the byte-order right */
- qdcount = ntohs(np->qdcount);
- ancount = ntohs(np->ancount);
- nscount = ntohs(np->nscount);
- arcount = ntohs(np->arcount);
-
- if (np->qr) {
- /* this is a response */
- printf(" %d%s%s%s%s%s",
- ntohs(np->id),
- ns_ops[np->opcode],
- ns_resp[np->rcode],
- np->aa? "*" : "",
- np->ra? "" : "-",
- np->tc? "|" : "");
- if (qdcount != 1)
- printf(" [%dq]", qdcount);
- printf(" %d/%d/%d", ancount, nscount, arcount);
- if (ancount)
- ns_rprint(ns_nskip((const u_char *)(np + 1)) + 4,
- (const u_char *)np, ep);
- }
- else {
- /* this is a request */
- printf(" %d%s%s",
- ntohs(np->id),
- ns_ops[np->opcode],
- np->rd? "+" : "");
-
- /* any weirdness? */
- if (*(((u_short *)np)+1) & htons(0x6ff))
- printf(" [b2&3=0x%x]", ntohs(*(((u_short *)np)+1)));
-
- if (np->opcode == IQUERY) {
- if (qdcount)
- printf(" [%dq]", qdcount);
- if (ancount != 1)
- printf(" [%da]", ancount);
- }
- else {
- if (ancount)
- printf(" [%da]", ancount);
- if (qdcount != 1)
- printf(" [%dq]", qdcount);
- }
- if (nscount)
- printf(" [%dn]", nscount);
- if (arcount)
- printf(" [%dau]", arcount);
-
- ns_qprint((const u_char *)(np + 1), (const u_char *)np, ep);
- }
- printf(" (%d)", length);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-egp.c b/usr.sbin/tcpdump/tcpdump/print-egp.c
deleted file mode 100644
index 876118d..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-egp.c
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- * Copyright (c) 1991, 1992, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Lawrence Berkeley Laboratory,
- * Berkeley, CA. The name of the University 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 MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * Initial contribution from Jeff Honig (jch@MITCHELL.CIT.CORNELL.EDU).
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-egp.c,v 1.14 94/06/20 19:44:38 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-
-#include <netdb.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-struct egp_packet {
- u_char egp_version;
-#define EGP_VERSION 2
- u_char egp_type;
-#define EGPT_ACQUIRE 3
-#define EGPT_REACH 5
-#define EGPT_POLL 2
-#define EGPT_UPDATE 1
-#define EGPT_ERROR 8
- u_char egp_code;
-#define EGPC_REQUEST 0
-#define EGPC_CONFIRM 1
-#define EGPC_REFUSE 2
-#define EGPC_CEASE 3
-#define EGPC_CEASEACK 4
-#define EGPC_HELLO 0
-#define EGPC_HEARDU 1
- u_char egp_status;
-#define EGPS_UNSPEC 0
-#define EGPS_ACTIVE 1
-#define EGPS_PASSIVE 2
-#define EGPS_NORES 3
-#define EGPS_ADMIN 4
-#define EGPS_GODOWN 5
-#define EGPS_PARAM 6
-#define EGPS_PROTO 7
-#define EGPS_INDET 0
-#define EGPS_UP 1
-#define EGPS_DOWN 2
-#define EGPS_UNSOL 0x80
- u_short egp_checksum;
- u_short egp_as;
- u_short egp_sequence;
- union {
- u_short egpu_hello;
- u_char egpu_gws[2];
- u_short egpu_reason;
-#define EGPR_UNSPEC 0
-#define EGPR_BADHEAD 1
-#define EGPR_BADDATA 2
-#define EGPR_NOREACH 3
-#define EGPR_XSPOLL 4
-#define EGPR_NORESP 5
-#define EGPR_UVERSION 6
- } egp_handg;
-#define egp_hello egp_handg.egpu_hello
-#define egp_intgw egp_handg.egpu_gws[0]
-#define egp_extgw egp_handg.egpu_gws[1]
-#define egp_reason egp_handg.egpu_reason
- union {
- u_short egpu_poll;
- u_int32 egpu_sourcenet;
- } egp_pands;
-#define egp_poll egp_pands.egpu_poll
-#define egp_sourcenet egp_pands.egpu_sourcenet
-};
-
-char *egp_acquire_codes[] = {
- "request",
- "confirm",
- "refuse",
- "cease",
- "cease_ack"
-};
-
-char *egp_acquire_status[] = {
- "unspecified",
- "active_mode",
- "passive_mode",
- "insufficient_resources",
- "administratively_prohibited",
- "going_down",
- "parameter_violation",
- "protocol_violation"
-};
-
-char *egp_reach_codes[] = {
- "hello",
- "i-h-u"
-};
-
-char *egp_status_updown[] = {
- "indeterminate",
- "up",
- "down"
-};
-
-char *egp_reasons[] = {
- "unspecified",
- "bad_EGP_header_format",
- "bad_EGP_data_field_format",
- "reachability_info_unavailable",
- "excessive_polling_rate",
- "no_response",
- "unsupported_version"
-};
-
-static void
-egpnrprint(register const struct egp_packet *egp, register int length)
-{
- register const u_char *cp, *ep;
-#define TCHECK(n) if (cp > ep - n) goto trunc
- register u_int32 addr;
- register u_int32 net;
- register int netlen;
- int gateways, distances, networks;
- int t_gateways;
- char *comma;
-
- addr = egp->egp_sourcenet;
- if (IN_CLASSA(addr)) {
- net = addr & IN_CLASSA_NET;
- netlen = 1;
- } else if (IN_CLASSB(addr)) {
- net = addr & IN_CLASSB_NET;
- netlen = 2;
- } else if (IN_CLASSC(addr)) {
- net = addr & IN_CLASSC_NET;
- netlen = 3;
- } else {
- net = 0;
- netlen = 0;
- }
- cp = (u_char *)(egp + 1);
- ep = snapend;
-
- t_gateways = egp->egp_intgw + egp->egp_extgw;
- for (gateways = 0; gateways < t_gateways; ++gateways) {
- /* Pickup host part of gateway address */
- addr = 0;
- TCHECK(4 - netlen);
- switch (netlen) {
-
- case 1:
- addr = *cp++;
- /* fall through */
- case 2:
- addr = (addr << 8) | *cp++;
- /* fall through */
- case 3:
- addr = (addr << 8) | *cp++;
- }
- addr |= net;
- TCHECK(1);
- distances = *cp++;
- printf(" %s %s ",
- gateways < egp->egp_intgw ? "int" : "ext",
- intoa(addr));
-
- comma = "";
- putchar('(');
- while (--distances >= 0) {
- TCHECK(2);
- printf("%sd%d:", comma, (int)*cp++);
- comma = ", ";
- networks = *cp++;
- while (--networks >= 0) {
- /* Pickup network number */
- TCHECK(1);
- addr = (u_int32)*cp++ << 24;
- if (IN_CLASSB(addr)) {
- TCHECK(1);
- addr |= (u_int32)*cp++ << 16;
- } else if (!IN_CLASSA(addr)) {
- TCHECK(2);
- addr |= (u_int32)*cp++ << 16;
- addr |= (u_int32)*cp++ << 8;
- }
- printf(" %s", intoa(addr));
- }
- }
- putchar(')');
- }
- return;
-trunc:
- fputs("[|]", stdout);
-}
-
-void
-egp_print(register const u_char *bp, register int length,
- register const u_char *bp2)
-{
- register const struct egp_packet *egp;
- register const struct ip *ip;
- register int status;
- register int code;
- register int type;
-
- egp = (struct egp_packet *)bp;
- ip = (struct ip *)bp2;
- (void)printf("%s > %s: egp: ",
- ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
-
- if (egp->egp_version != EGP_VERSION) {
- printf("[version %d]", egp->egp_version);
- return;
- }
- printf("as:%d seq:%d", ntohs(egp->egp_as), ntohs(egp->egp_sequence));
-
- type = egp->egp_type;
- code = egp->egp_code;
- status = egp->egp_status;
-
- switch (type) {
- case EGPT_ACQUIRE:
- printf(" acquire");
- switch (code) {
- case EGPC_REQUEST:
- case EGPC_CONFIRM:
- printf(" %s", egp_acquire_codes[code]);
- switch (status) {
- case EGPS_UNSPEC:
- case EGPS_ACTIVE:
- case EGPS_PASSIVE:
- printf(" %s", egp_acquire_status[status]);
- break;
-
- default:
- printf(" [status %d]", status);
- break;
- }
- printf(" hello:%d poll:%d",
- ntohs(egp->egp_hello),
- ntohs(egp->egp_poll));
- break;
-
- case EGPC_REFUSE:
- case EGPC_CEASE:
- case EGPC_CEASEACK:
- printf(" %s", egp_acquire_codes[code]);
- switch (status ) {
- case EGPS_UNSPEC:
- case EGPS_NORES:
- case EGPS_ADMIN:
- case EGPS_GODOWN:
- case EGPS_PARAM:
- case EGPS_PROTO:
- printf(" %s", egp_acquire_status[status]);
- break;
-
- default:
- printf("[status %d]", status);
- break;
- }
- break;
-
- default:
- printf("[code %d]", code);
- break;
- }
- break;
-
- case EGPT_REACH:
- switch (code) {
-
- case EGPC_HELLO:
- case EGPC_HEARDU:
- printf(" %s", egp_reach_codes[code]);
- if (status <= EGPS_DOWN)
- printf(" state:%s", egp_status_updown[status]);
- else
- printf(" [status %d]", status);
- break;
-
- default:
- printf("[reach code %d]", code);
- break;
- }
- break;
-
- case EGPT_POLL:
- printf(" poll");
- if (egp->egp_status <= EGPS_DOWN)
- printf(" state:%s", egp_status_updown[status]);
- else
- printf(" [status %d]", status);
- printf(" net:%s", intoa(egp->egp_sourcenet));
- break;
-
- case EGPT_UPDATE:
- printf(" update");
- if (status & EGPS_UNSOL) {
- status &= ~EGPS_UNSOL;
- printf(" unsolicited");
- }
- if (status <= EGPS_DOWN)
- printf(" state:%s", egp_status_updown[status]);
- else
- printf(" [status %d]", status);
- printf(" %s int %d ext %d",
- intoa(egp->egp_sourcenet),
- egp->egp_intgw,
- egp->egp_extgw);
- if (vflag)
- egpnrprint(egp, length);
- break;
-
- case EGPT_ERROR:
- printf(" error");
- if (status <= EGPS_DOWN)
- printf(" state:%s", egp_status_updown[status]);
- else
- printf(" [status %d]", status);
-
- if (ntohs(egp->egp_reason) <= EGPR_UVERSION)
- printf(" %s", egp_reasons[ntohs(egp->egp_reason)]);
- else
- printf(" [reason %d]", ntohs(egp->egp_reason));
- break;
-
- default:
- printf("[type %d]", type);
- break;
- }
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-ether.c b/usr.sbin/tcpdump/tcpdump/print-ether.c
deleted file mode 100644
index 960cf9d..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ether.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ether.c,v 1.3 1995/03/08 12:52:30 olah Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <stdio.h>
-#include <pcap.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "ethertype.h"
-
-const u_char *packetp;
-const u_char *snapend;
-
-static inline void
-ether_print(register const u_char *bp, int length)
-{
- register const struct ether_header *ep;
-
- ep = (const struct ether_header *)bp;
- if (qflag)
- (void)printf("%s %s %d: ",
- etheraddr_string(ESRC(ep)),
- etheraddr_string(EDST(ep)),
- length);
- else
- (void)printf("%s %s %s %d: ",
- etheraddr_string(ESRC(ep)),
- etheraddr_string(EDST(ep)),
- etherproto_string(ep->ether_type),
- length);
-}
-
-/*
- * This is the top level routine of the printer. 'p' is the points
- * to the ether header of the packet, 'tvp' is the timestamp,
- * 'length' is the length of the packet off the wire, and 'caplen'
- * is the number of bytes actually captured.
- */
-void
-ether_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
-{
- int caplen = h->caplen;
- int length = h->len;
- struct ether_header *ep;
- u_short ether_type;
- extern u_short extracted_ethertype;
-
- ts_print(&h->ts);
-
- if (caplen < sizeof(struct ether_header)) {
- printf("[|ether]");
- goto out;
- }
-
- if (eflag)
- ether_print(p, length);
-
- /*
- * Some printers want to get back at the ethernet 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 -= sizeof(struct ether_header);
- caplen -= sizeof(struct ether_header);
- ep = (struct ether_header *)p;
- p += sizeof(struct ether_header);
-
- ether_type = ntohs(ep->ether_type);
-
- /*
- * Is it (gag) an 802.3 encapsulation?
- */
- extracted_ethertype = 0;
- if (ether_type < ETHERMTU) {
- /* Try to print the LLC-layer header & higher layers */
- if (llc_print(p, length, caplen, ESRC(ep), EDST(ep)) == 0) {
- /* ether_type not known, print raw packet */
- if (!eflag)
- ether_print((u_char *)ep, length);
- if (extracted_ethertype) {
- printf("(LLC %s) ",
- etherproto_string(htons(extracted_ethertype)));
- }
- if (!xflag && !qflag)
- default_print(p, caplen);
- }
- } else if (ether_encap_print(ether_type, p, length, caplen) == 0) {
- /* ether_type not known, print raw packet */
- if (!eflag)
- ether_print((u_char *)ep, length + sizeof(*ep));
- if (!xflag && !qflag)
- default_print(p, caplen);
- }
- if (xflag)
- default_print(p, caplen);
- out:
- putchar('\n');
-}
-
-/*
- * Prints the packet encapsulated in an Ethernet data segment
- * (or an equivalent encapsulation), given the Ethernet type code.
- *
- * Returns non-zero if it can do so, zero if the ethertype is unknown.
- *
- * Stuffs the ether type into a global for the benefit of lower layers
- * that might want to know what it is.
- */
-
-u_short extracted_ethertype;
-
-int
-ether_encap_print(u_short ethertype, const u_char *p, int length, int caplen)
-{
- extracted_ethertype = ethertype;
-
- switch (ethertype) {
-
- case ETHERTYPE_IP:
- ip_print(p, length);
- return (1);
-
- case ETHERTYPE_ARP:
- case ETHERTYPE_REVARP:
- arp_print(p, length, caplen);
- return (1);
-
- case ETHERTYPE_DN:
- decnet_print(p, length, caplen);
- return (1);
-
- case ETHERTYPE_ATALK:
- if (vflag)
- fputs("et1 ", stdout);
- atalk_print(p, length);
- return (1);
-
- case ETHERTYPE_AARP:
- aarp_print(p, length);
- return (1);
-
- case ETHERTYPE_IPX:
- ipx_print(p, length);
- return (1);
-
- case ETHERTYPE_LAT:
- case ETHERTYPE_MOPRC:
- case ETHERTYPE_MOPDL:
- /* default_print for now */
- default:
- return (0);
- }
-}
-
diff --git a/usr.sbin/tcpdump/tcpdump/print-fddi.c b/usr.sbin/tcpdump/tcpdump/print-fddi.c
deleted file mode 100644
index 8052825..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-fddi.c
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (c) 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#)$Header: print-fddi.c,v 1.21 94/06/10 17:01:29 mccanne Exp $ (LBL)";
-#endif
-
-#ifdef FDDI
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <netdb.h>
-#include <pcap.h>
-#include <signal.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "ethertype.h"
-
-#include "fddi.h"
-
-int fddipad = FDDIPAD; /* for proper alignment of header */
-
-/*
- * Some FDDI interfaces use bit-swapped addresses.
- */
-#if defined(ultrix) || defined(__alpha)
-int fddi_bitswap = 0;
-#else
-int fddi_bitswap = 1;
-#endif
-
-/*
- * FDDI support for tcpdump, by Jeffrey Mogul [DECWRL], June 1992
- *
- * Based in part on code by Van Jacobson, which bears this note:
- *
- * NOTE: This is a very preliminary hack for FDDI support.
- * There are all sorts of wired in constants & nothing (yet)
- * to print SMT packets as anything other than hex dumps.
- * Most of the necessary changes are waiting on my redoing
- * the "header" that a kernel fddi driver supplies to bpf: I
- * want it to look like one byte of 'direction' (0 or 1
- * depending on whether the packet was inbound or outbound),
- * two bytes of system/driver dependent data (anything an
- * implementor thinks would be useful to filter on and/or
- * save per-packet, then the real 21-byte FDDI header.
- * Steve McCanne & I have also talked about adding the
- * 'direction' byte to all bpf headers (e.g., in the two
- * bytes of padding on an ethernet header). It's not clear
- * we could do this in a backwards compatible way & we hate
- * the idea of an incompatible bpf change. Discussions are
- * proceeding.
- *
- * Also, to really support FDDI (and better support 802.2
- * over ethernet) we really need to re-think the rather simple
- * minded assumptions about fixed length & fixed format link
- * level headers made in gencode.c. One day...
- *
- * - vj
- */
-
-#define FDDI_HDRLEN (sizeof(struct fddi_header))
-
-static u_char fddi_bit_swap[] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
-};
-
-/*
- * Print FDDI frame-control bits
- */
-static inline void
-print_fddi_fc(u_char fc)
-{
- switch (fc) {
-
- case FDDIFC_VOID: /* Void frame */
- printf("void ");
- break;
-
- case FDDIFC_NRT: /* Nonrestricted token */
- printf("nrt ");
- break;
-
- case FDDIFC_RT: /* Restricted token */
- printf("rt ");
- break;
-
- case FDDIFC_SMT_INFO: /* SMT Info */
- printf("info ");
- break;
-
- case FDDIFC_SMT_NSA: /* SMT Next station adrs */
- printf("nsa ");
- break;
-
- case FDDIFC_MAC_BEACON: /* MAC Beacon frame */
- printf("beacon ");
- break;
-
- case FDDIFC_MAC_CLAIM: /* MAC Claim frame */
- printf("claim ");
- break;
-
- default:
- switch (fc & FDDIFC_CLFF) {
-
- case FDDIFC_MAC:
- printf("mac%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- case FDDIFC_SMT:
- printf("smt%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- case FDDIFC_LLC_ASYNC:
- printf("async%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- case FDDIFC_LLC_SYNC:
- printf("sync%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- case FDDIFC_IMP_ASYNC:
- printf("imp_async%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- case FDDIFC_IMP_SYNC:
- printf("imp_sync%1x ", fc & FDDIFC_ZZZZ);
- break;
-
- default:
- printf("%02x ", fc);
- break;
- }
- }
-}
-
-/* Extract src, dst addresses */
-static inline void
-extract_fddi_addrs(const struct fddi_header *fddip, char *fsrc, char *fdst)
-{
- register int i;
-
- if (fddi_bitswap) {
- /*
- * bit-swap the fddi addresses (isn't the IEEE standards
- * process wonderful!) then convert them to names.
- */
- for (i = 0; i < 6; ++i)
- fdst[i] = fddi_bit_swap[fddip->fddi_dhost[i]];
- for (i = 0; i < 6; ++i)
- fsrc[i] = fddi_bit_swap[fddip->fddi_shost[i]];
- }
- else {
- bcopy(fddip->fddi_dhost, fdst, 6);
- bcopy(fddip->fddi_shost, fsrc, 6);
- }
-}
-
-/*
- * Print the FDDI MAC header
- */
-static inline void
-fddi_print(register const struct fddi_header *fddip, register int length,
- register const u_char *fsrc, register const u_char *fdst)
-{
- char *srcname, *dstname;
-
- srcname = etheraddr_string(fsrc);
- dstname = etheraddr_string(fdst);
-
- if (vflag)
- (void) printf("%02x %s %s %d: ",
- fddip->fddi_fc,
- srcname, dstname,
- length);
- else if (qflag)
- printf("%s %s %d: ", srcname, dstname, length);
- else {
- (void) print_fddi_fc(fddip->fddi_fc);
- (void) printf("%s %s %d: ", srcname, dstname, length);
- }
-}
-
-static inline void
-fddi_smt_print(const u_char *p, int length)
-{
- printf("<SMT printer not yet implemented>");
-}
-
-/*
- * This is the top level routine of the printer. 'sp' is the points
- * to the FDDI header of the packet, 'tvp' is the timestamp,
- * 'length' is the length of the packet off the wire, and 'caplen'
- * is the number of bytes actually captured.
- */
-void
-fddi_if_print(u_char *pcap, const struct pcap_pkthdr *h,
- register const u_char *p)
-{
- int caplen = h->caplen;
- int length = h->len;
- const struct fddi_header *fddip = (struct fddi_header *)p;
- extern u_short extracted_ethertype;
- struct ether_header ehdr;
-
- ts_print(&h->ts);
-
- if (caplen < FDDI_HDRLEN) {
- printf("[|fddi]");
- goto out;
- }
- /*
- * Get the FDDI addresses into a canonical form
- */
- extract_fddi_addrs(fddip, (char*)ESRC(&ehdr), (char*)EDST(&ehdr));
- /*
- * 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.
- */
- snapend = p + caplen;
- /*
- * Actually, the only printer that uses packetp is print-bootp.c,
- * and it assumes that packetp points to an Ethernet header. The
- * right thing to do is to fix print-bootp.c to know which link
- * type is in use when it excavates. XXX
- */
- packetp = (u_char *)&ehdr;
-
- if (eflag)
- fddi_print(fddip, length, ESRC(&ehdr), EDST(&ehdr));
-
- /* Skip over FDDI MAC header */
- length -= FDDI_HDRLEN;
- p += FDDI_HDRLEN;
- caplen -= FDDI_HDRLEN;
-
- /* Frame Control field determines interpretation of packet */
- extracted_ethertype = 0;
- if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_LLC_ASYNC) {
- /* Try to print the LLC-layer header & higher layers */
- if (llc_print(p, length, caplen, ESRC(&ehdr), EDST(&ehdr))
- == 0) {
- /*
- * Some kinds of LLC packet we cannot
- * handle intelligently
- */
- if (!eflag)
- fddi_print(fddip, length,
- ESRC(&ehdr), EDST(&ehdr));
- if (extracted_ethertype) {
- printf("(LLC %s) ",
- etherproto_string(htons(extracted_ethertype)));
- }
- if (!xflag && !qflag)
- default_print(p, caplen);
- }
- } else if ((fddip->fddi_fc & FDDIFC_CLFF) == FDDIFC_SMT)
- fddi_smt_print(p, caplen);
- else {
- /* Some kinds of FDDI packet we cannot handle intelligently */
- if (!eflag)
- fddi_print(fddip, length, ESRC(&ehdr), EDST(&ehdr));
- if (!xflag && !qflag)
- default_print(p, caplen);
- }
- if (xflag)
- default_print(p, caplen);
-out:
- putchar('\n');
-}
-#else
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-void
-fddi_if_print(u_char *pcap, struct pcap_pkthdr *h, register u_char *p)
-{
-
- error("not configured for fddi");
- /* NOTREACHED */
-}
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/print-icmp.c b/usr.sbin/tcpdump/tcpdump/print-icmp.c
deleted file mode 100644
index 6bd9ac4..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-icmp.c
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-icmp.c,v 1.2 1995/03/08 12:52:32 olah Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_icmp.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-void
-icmp_print(register const u_char *bp, register const u_char *bp2)
-{
- register const struct icmp *dp;
- register const struct ip *ip;
- register const char *str;
- register const struct ip *oip;
- register const struct udphdr *ouh;
- register int hlen, dport;
- register const u_char *ep;
- char buf[256];
-
-#define TCHECK(var, l) if ((u_char *)&(var) > ep - l) goto trunc
-
- dp = (struct icmp *)bp;
- ip = (struct ip *)bp2;
- str = buf;
- /* 'ep' points to the end of avaible data. */
- ep = snapend;
-
- (void)printf("%s > %s: ",
- ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
-
- TCHECK(dp->icmp_code, sizeof(dp->icmp_code));
- switch (dp->icmp_type) {
- case ICMP_ECHOREPLY:
- str = "echo reply";
- break;
- case ICMP_UNREACH:
- TCHECK(dp->icmp_ip.ip_dst, sizeof(dp->icmp_ip.ip_dst));
- switch (dp->icmp_code) {
- case ICMP_UNREACH_NET:
- (void)sprintf(buf, "net %s unreachable",
- ipaddr_string(&dp->icmp_ip.ip_dst));
- break;
- case ICMP_UNREACH_HOST:
- (void)sprintf(buf, "host %s unreachable",
- ipaddr_string(&dp->icmp_ip.ip_dst));
- break;
- case ICMP_UNREACH_PROTOCOL:
- TCHECK(dp->icmp_ip.ip_p, sizeof(dp->icmp_ip.ip_p));
- (void)sprintf(buf, "%s protocol %d unreachable",
- ipaddr_string(&dp->icmp_ip.ip_dst),
- dp->icmp_ip.ip_p);
- break;
- case ICMP_UNREACH_PORT:
- TCHECK(dp->icmp_ip.ip_p, sizeof(dp->icmp_ip.ip_p));
- oip = &dp->icmp_ip;
- hlen = oip->ip_hl * 4;
- ouh = (struct udphdr *)(((u_char *)oip) + hlen);
- dport = ntohs(ouh->uh_dport);
- switch (oip->ip_p) {
- case IPPROTO_TCP:
- (void)sprintf(buf,
- "%s tcp port %s unreachable",
- ipaddr_string(&oip->ip_dst),
- tcpport_string(dport));
- break;
- case IPPROTO_UDP:
- (void)sprintf(buf,
- "%s udp port %s unreachable",
- ipaddr_string(&oip->ip_dst),
- udpport_string(dport));
- break;
- default:
- (void)sprintf(buf,
- "%s protocol %d port %d unreachable",
- ipaddr_string(&oip->ip_dst),
- oip->ip_p, dport);
- break;
- }
- break;
- case ICMP_UNREACH_NEEDFRAG:
- (void)sprintf(buf, "%s unreachable - need to frag",
- ipaddr_string(&dp->icmp_ip.ip_dst));
- break;
- case ICMP_UNREACH_SRCFAIL:
- (void)sprintf(buf,
- "%s unreachable - source route failed",
- ipaddr_string(&dp->icmp_ip.ip_dst));
- break;
- }
- break;
- case ICMP_SOURCEQUENCH:
- str = "source quench";
- break;
- case ICMP_REDIRECT:
- TCHECK(dp->icmp_ip.ip_dst, sizeof(dp->icmp_ip.ip_dst));
- switch (dp->icmp_code) {
- case ICMP_REDIRECT_NET:
- (void)sprintf(buf, "redirect %s to net %s",
- ipaddr_string(&dp->icmp_ip.ip_dst),
- ipaddr_string(&dp->icmp_gwaddr));
- break;
- case ICMP_REDIRECT_HOST:
- (void)sprintf(buf, "redirect %s to host %s",
- ipaddr_string(&dp->icmp_ip.ip_dst),
- ipaddr_string(&dp->icmp_gwaddr));
- break;
- case ICMP_REDIRECT_TOSNET:
- (void)sprintf(buf, "redirect-tos %s to net %s",
- ipaddr_string(&dp->icmp_ip.ip_dst),
- ipaddr_string(&dp->icmp_gwaddr));
- break;
- case ICMP_REDIRECT_TOSHOST:
- (void)sprintf(buf, "redirect-tos %s to host %s",
- ipaddr_string(&dp->icmp_ip.ip_dst),
- ipaddr_string(&dp->icmp_gwaddr));
- break;
- }
- break;
- case ICMP_ECHO:
- str = "echo request";
- break;
- case ICMP_ROUTERADVERT:
- (void)sprintf(buf, "router advert, %d rtrs, lifetime %d",
- dp->icmp_num_addrs, ntohs(dp->icmp_lifetime));
- break;
- case ICMP_ROUTERSOLICIT:
- str = "router solicitation";
- break;
- case ICMP_TIMXCEED:
- TCHECK(dp->icmp_ip.ip_dst, sizeof(dp->icmp_ip.ip_dst));
- switch (dp->icmp_code) {
- case ICMP_TIMXCEED_INTRANS:
- str = "time exceeded in-transit";
- break;
- case ICMP_TIMXCEED_REASS:
- str = "ip reassembly time exceeded";
- break;
- }
- break;
- case ICMP_PARAMPROB:
- if (dp->icmp_code)
- (void)sprintf(buf, "parameter problem - code %d",
- dp->icmp_code);
- else {
- TCHECK(dp->icmp_pptr, sizeof(dp->icmp_pptr));
- (void)sprintf(buf, "parameter problem - octet %d",
- dp->icmp_pptr);
- }
- break;
- case ICMP_TSTAMP:
- str = "time stamp request";
- break;
- case ICMP_TSTAMPREPLY:
- str = "time stamp reply";
- break;
- case ICMP_IREQ:
- str = "information request";
- break;
- case ICMP_IREQREPLY:
- str = "information reply";
- break;
- case ICMP_MASKREQ:
- str = "address mask request";
- break;
- case ICMP_MASKREPLY:
- TCHECK(dp->icmp_mask, sizeof(dp->icmp_mask));
- (void)sprintf(buf, "address mask is 0x%08x",
- ntohl(dp->icmp_mask));
- break;
- default:
- (void)sprintf(buf, "type-#%d", dp->icmp_type);
- break;
- }
- (void)printf("icmp: %s", str);
- return;
-trunc:
- fputs("[|icmp]", stdout);
-#undef TCHECK
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-ip.c b/usr.sbin/tcpdump/tcpdump/print-ip.c
deleted file mode 100644
index c058095..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ip.c
+++ /dev/null
@@ -1,473 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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
-/* From: Header: print-ip.c,v 1.28 92/05/25 14:29:02 mccanne Exp $ (LBL) */
-static char rcsid[] =
- "$Id: print-ip.c,v 1.5 1995/06/13 17:39:23 wollman Exp $";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <unistd.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-static void
-igmp_print(register const u_char *bp, register int len,
- register const u_char *bp2)
-{
- register const struct ip *ip;
- register const u_char *ep;
-
- ip = (const struct ip *)bp2;
- ep = (const u_char *)snapend;
- (void)printf("%s > %s: ",
- ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
-
- if (bp + 7 > ep) {
- (void)printf("[|igmp]");
- return;
- }
- switch (bp[0]) {
- case 0x11:
- (void)printf("igmp %s query", bp[1] ? "v2" : "v1");
- if (bp[1] && bp[1] != 100)
- (void)printf(" [intvl %d]", bp[1]);
- if (*(int *)&bp[4])
- (void)printf(" [gaddr %s]", ipaddr_string(&bp[4]));
- if (len != 8)
- (void)printf(" [len %d]", len);
- break;
- case 0x12:
- case 0x16:
- (void)printf("igmp %s report %s",
- (bp[0] & 0xf) == 6 ? "v2" : "v1",
- ipaddr_string(&bp[4]));
- if (len != 8)
- (void)printf(" [len %d]", len);
- if (bp[1])
- (void)printf(" [b1=0x%x]", bp[1]);
- break;
- case 0x17:
- (void)printf("igmp leave %s", ipaddr_string(&bp[4]));
- if (len != 8)
- (void)printf(" [len %d]", len);
- if (bp[1])
- (void)printf(" [b1=0x%x]", bp[1]);
- break;
- case 0x13:
- (void)printf("igmp dvmrp");
- switch(bp[1]) {
- case 1:
- printf(" probe");
- if (len < 8)
- (void)printf(" [len %d]", len);
- if (vflag) {
- if (len > 8)
- (void)printf(" genid 0x%08x",
- ntohl(*(int *)&bp[8]));
- (void)printf(" [nf 0x%02x]", bp[5]);
- }
- if (len > 12) {
- int i;
- for (i = 12; i + 3 < len; i += 4) {
- printf("\n\t%s",
- ipaddr_string(&bp[i]));
- }
- }
- break;
- case 2:
- printf(" report");
- if (vflag)
- (void)printf(" [nf 0x%02x]", bp[5]);
- if (len < 8)
- (void)printf(" [len %d]", len);
- break;
- case 3:
- case 5:
- printf(" %sneighbor query", bp[1] == 5 ? "new " : "");
- if (len < 8)
- (void)printf(" [len %d]", len);
- break;
- case 4:
- case 6:
- printf(" %sneighbor list", bp[1] == 6 ? "new " : "");
- if (len < 8)
- (void)printf(" [len %d]", len);
- break;
- case 7:
- printf(" prune %s from ", ipaddr_string(&bp[12]));
- printf(" %s timer %d", ipaddr_string(&bp[8]),
- ntohl(*(int *)&bp[16]));
- if (len != 20)
- (void)printf(" [len %d]", len);
- break;
- case 8:
- printf(" graft %s from ", ipaddr_string(&bp[12]));
- printf(" %s", ipaddr_string(&bp[8]));
- if (len != 16)
- (void)printf(" [len %d]", len);
- break;
- case 9:
- printf(" graft ack %s from ",
- ipaddr_string(&bp[12]));
- printf(" %s", ipaddr_string(&bp[8]));
-
- if (len != 16)
- (void)printf(" [len %d]", len);
- break;
- default:
- printf("-%d", bp[1]);
- if (len < 8)
- (void)printf(" [len %d]", len);
- break;
- }
-
- if (bp[7] != 3
- || (bp[7] == 3 && (bp[6] > 5 || bp[6] < 4))) {
- printf(" [v%d.%d]", bp[7], bp[6]);
- }
-
- break;
- case 0x14:
- printf("igmp pim %s", ipaddr_string(&bp[4]));
- if (len < 8)
- (void)printf(" [len %d]", len);
- if (bp[1])
- (void)printf(" [b1=0x%x]", bp[1]);
- break;
- case 0x1e:
- case 0x1f:
- (void)printf("igmp mtrace%s %s",
- (bp[0] == 0x1e) ? " response" : "",
- ipaddr_string(&bp[4]));
- if (len < 24)
- (void)printf(" [len %d]", len);
- else if (vflag) {
- (void)printf(" s=%s", ipaddr_string(&bp[8]));
- (void)printf(" d=%s", ipaddr_string(&bp[12]));
- (void)printf(" qid=0x%06x",
- bp[21] << 16 + bp[22] << 8 + bp[23]);
- }
- break;
- default:
- (void)printf("igmp-%d", bp[0]);
- if (bp[1])
- (void)printf(" [b1=0x%x]", bp[1]);
- break;
- }
-}
-
-/*
- * print the recorded route in an IP RR, LSRR or SSRR option.
- */
-static void
-ip_printroute(const char *type, register const u_char *cp, int length)
-{
- int ptr = cp[2] - 1;
- int len;
-
- printf(" %s{", type);
- if ((length + 1) & 3)
- printf(" [bad length %d]", length);
- if (ptr < 3 || ((ptr + 1) & 3) || ptr > length + 1)
- printf(" [bad ptr %d]", cp[2]);
-
- type = "";
- for (len = 3; len < length; len += 4) {
- if (ptr == len)
- type = "#";
-#ifdef TCPDUMP_ALIGN
- {
- struct in_addr addr;
- bcopy((char *)&cp[len], (char *)&addr, sizeof(addr));
- printf("%s%s", type, ipaddr_string(&addr));
- }
-#else
- printf("%s%s", type, ipaddr_string(&cp[len]));
-#endif
- type = " ";
- }
- printf("%s}", ptr == len? "#" : "");
-}
-
-/*
- * print IP options.
- */
-static void
-ip_optprint(register const u_char *cp, int length)
-{
- int len;
-
- for (; length > 0; cp += len, length -= len) {
- int tt = *cp;
-
- len = (tt == IPOPT_NOP || tt == IPOPT_EOL) ? 1 : cp[1];
- if (&cp[1] >= snapend || cp + len > snapend) {
- printf("[|ip]");
- return;
- }
- switch (tt) {
-
- case IPOPT_EOL:
- printf(" EOL");
- if (length > 1)
- printf("-%d", length - 1);
- return;
-
- case IPOPT_NOP:
- printf(" NOP");
- break;
-
- case IPOPT_TS:
- printf(" TS{%d}", len);
- break;
-
- case IPOPT_SECURITY:
- printf(" SECURITY{%d}", len);
- break;
-
- case IPOPT_RR:
- printf(" RR{%d}=", len);
- ip_printroute("RR", cp, len);
- break;
-
- case IPOPT_SSRR:
- ip_printroute("SSRR", cp, len);
- break;
-
- case IPOPT_LSRR:
- ip_printroute("LSRR", cp, len);
- break;
-
- case IPOPT_RA:
- printf(" RA");
- if (len != 4)
- printf("{%d}", len);
- if (cp[2] != 0 || cp[3] != 0)
- printf("[b23=%04x]",cp[2] << 8 + cp[3]);
- break;
-
- default:
- printf(" IPOPT-%d{%d}", cp[0], len);
- break;
- }
- }
-}
-
-/*
- * compute an IP header checksum.
- * don't modifiy the packet.
- */
-static int
-in_cksum(const struct ip *ip)
-{
- register const u_short *sp = (u_short *)ip;
- register u_int32 sum = 0;
- register int count;
-
- /*
- * No need for endian conversions.
- */
- for (count = ip->ip_hl * 2; --count >= 0; )
- sum += *sp++;
- while (sum > 0xffff)
- sum = (sum & 0xffff) + (sum >> 16);
- sum = ~sum & 0xffff;
-
- return (sum);
-}
-
-/*
- * print an IP datagram.
- */
-void
-ip_print(register const u_char *bp, register int length)
-{
- register const struct ip *ip;
- register int hlen;
- register int len;
- register int off;
- register const u_char *cp;
-
- ip = (const struct ip *)bp;
-#ifdef TCPDUMP_ALIGN
- /*
- * The IP header is not word aligned, so copy into abuf.
- * This will never happen with BPF. It does happen raw packet
- * dumps from -r.
- */
- if ((int)ip & (sizeof(long)-1)) {
- static u_char *abuf;
-
- if (abuf == 0)
- abuf = (u_char *)malloc(snaplen);
- bcopy((char *)ip, (char *)abuf, min(length, snaplen));
- snapend += abuf - (u_char *)ip;
- packetp = abuf;
- ip = (struct ip *)abuf;
- }
-#endif
- if ((u_char *)(ip + 1) > snapend) {
- printf("[|ip]");
- return;
- }
- if (length < sizeof (struct ip)) {
- (void)printf("truncated-ip %d", length);
- return;
- }
- hlen = ip->ip_hl * 4;
-
- len = ntohs(ip->ip_len);
- if (length < len)
- (void)printf("truncated-ip - %d bytes missing!",
- len - length);
- len -= hlen;
-
- /*
- * If this is fragment zero, hand it to the next higher
- * level protocol.
- */
- off = ntohs(ip->ip_off);
- if ((off & 0x1fff) == 0) {
- cp = (const u_char *)ip + hlen;
- switch (ip->ip_p) {
-
- case IPPROTO_TCP:
- tcp_print(cp, len, (const u_char *)ip);
- break;
- case IPPROTO_UDP:
- udp_print(cp, len, (const u_char *)ip);
- break;
- case IPPROTO_ICMP:
- icmp_print(cp, (const u_char *)ip);
- break;
- case IPPROTO_ND:
- (void)printf("%s > %s:", ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
- (void)printf(" nd %d", len);
- break;
- case IPPROTO_EGP:
- egp_print(cp, len, (const u_char *)ip);
- break;
-#ifndef IPPROTO_OSPF
-#define IPPROTO_OSPF 89
-#endif
- case IPPROTO_OSPF:
- ospf_print(cp, len, (const u_char *)ip);
- break;
-#ifndef IPPROTO_IGMP
-#define IPPROTO_IGMP 2
-#endif
- case IPPROTO_IGMP:
- igmp_print(cp, len, (const u_char *)ip);
- break;
-#ifndef IPPROTO_ENCAP
-#define IPPROTO_ENCAP 4
-#endif
- case IPPROTO_ENCAP:
- /* 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)");
- return;
- }
- break;
- default:
- (void)printf("%s > %s:", ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
- (void)printf(" ip-proto-%d %d", ip->ip_p, len);
- break;
- }
- }
- /*
- * for fragmented datagrams, print id:size@offset. On all
- * but the last stick a "+". For unfragmented datagrams, note
- * the don't fragment flag.
- */
- if (off & 0x3fff) {
- /*
- * if this isn't the first frag, we're missing the
- * next level protocol header. print the ip addr.
- */
- if (off & 0x1fff)
- (void)printf("%s > %s:", ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
- (void)printf(" (frag %d:%d@%d%s)", ntohs(ip->ip_id), len,
- (off & 0x1fff) * 8,
- (off & IP_MF)? "+" : "");
- } else if (off & IP_DF)
- (void)printf(" (DF)");
-
- if (ip->ip_tos)
- (void)printf(" [tos 0x%x]", (int)ip->ip_tos);
- if (ip->ip_ttl <= 1)
- (void)printf(" [ttl %d]", (int)ip->ip_ttl);
-
- if (vflag) {
- int sum;
- char *sep = "";
-
- printf(" (");
- if (ip->ip_ttl > 1) {
- (void)printf("%sttl %d", sep, (int)ip->ip_ttl);
- sep = ", ";
- }
- if ((off & 0x3fff) == 0) {
- (void)printf("%sid %d", sep, (int)ntohs(ip->ip_id));
- sep = ", ";
- }
- sum = in_cksum(ip);
- if (sum != 0) {
- (void)printf("%sbad cksum %x!", sep,
- ntohs(ip->ip_sum));
- sep = ", ";
- }
- if ((hlen -= sizeof(struct ip)) > 0) {
- (void)printf("%soptlen=%d", sep, hlen);
- ip_optprint((u_char *)(ip + 1), hlen);
- }
- printf(")");
- }
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-ipx.c b/usr.sbin/tcpdump/tcpdump/print-ipx.c
deleted file mode 100644
index 40cfda3..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ipx.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (c) 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- */
-
-/*
- * Format and print Novell IPX packets.
- * Contributed by Brad Parker (brad@fcr.com).
- */
-#ifndef lint
-static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ipx.c,v 1.1 1995/03/08 12:52:34 olah Exp $";
-#endif
-
-#include <sys/param.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "ipx.h"
-#include "extract.h"
-
-
-static const char *ipxaddr_string(u_int32 net, const u_char *node);
-void ipx_decode(const struct ipxHdr *ipx, const u_char *datap, int length);
-void ipx_sap_print(const u_short *ipx, int length);
-void ipx_rip_print(const u_short *ipx, int length);
-
-/*
- * Print IPX datagram packets.
- */
-void
-ipx_print(const u_char *p, int length)
-{
- const struct ipxHdr *ipx = (const struct ipxHdr *)p;
-
- if (length < ipxSize) {
- (void)printf(" truncated-ipx %d", length);
- return;
- }
- (void)printf("%s.%x > ",
- ipxaddr_string(EXTRACT_LONG(ipx->srcNet), ipx->srcNode),
- EXTRACT_SHORT(&ipx->srcSkt));
-
- (void)printf("%s.%x:",
- ipxaddr_string(EXTRACT_LONG(ipx->dstNet), ipx->dstNode),
- EXTRACT_SHORT(&ipx->dstSkt));
-
- if ((u_char *)(ipx + 1) > snapend) {
- printf(" [|ipx]");
- return;
- }
-
- /* take length from ipx header */
- length = EXTRACT_SHORT(&ipx->length);
-
- ipx_decode(ipx, (u_char *)ipx + ipxSize, length - ipxSize);
-}
-
-static const char *
-ipxaddr_string(u_int32 net, const u_char *node)
-{
- static char line[256];
-
- sprintf(line, "%lx.%02x:%02x:%02x:%02x:%02x:%02x",
- net, node[0], node[1], node[2], node[3], node[4], node[5]);
-
- return line;
-}
-
-void
-ipx_decode(const struct ipxHdr *ipx, const u_char *datap, int length)
-{
- switch (EXTRACT_SHORT(&ipx->dstSkt)) {
- case IPX_SKT_NCP:
- (void)printf(" ipx-ncp %d", length);
- break;
- case IPX_SKT_SAP:
- ipx_sap_print((u_short *)datap, length);
- break;
- case IPX_SKT_RIP:
- ipx_rip_print((u_short *)datap, length);
- break;
- case IPX_SKT_NETBIOS:
- (void)printf(" ipx-netbios %d", length);
- break;
- case IPX_SKT_DIAGNOSTICS:
- (void)printf(" ipx-diags %d", length);
- break;
- default:
- (void)printf(" ipx-#%x %d", ipx->dstSkt, length);
- break;
- }
-}
-
-void
-ipx_sap_print(const u_short *ipx, int length)
-{
- int command, i;
-
- if (length < 2) {
- (void)printf(" truncated-sap %d", length);
- return;
- }
-
- command = EXTRACT_SHORT(ipx);
- ipx++;
- length -= 2;
-
- switch (command) {
- case 1:
- case 3:
- if (command == 1)
- (void)printf("ipx-sap-req");
- else
- (void)printf("ipx-sap-nearest-req");
-
- if (length > 0)
- (void)printf(" %x '%.48s'", EXTRACT_SHORT(&ipx[0]),
- (char*)&ipx[1]);
- break;
-
- case 2:
- case 4:
- if (command == 2)
- (void)printf("ipx-sap-resp");
- else
- (void)printf("ipx-sap-nearest-resp");
-
- for (i = 0; i < 8 && length > 0; i++) {
- (void)printf(" %x '%.48s' addr %s",
- EXTRACT_SHORT(&ipx[0]), (char *)&ipx[1],
- ipxaddr_string(EXTRACT_LONG(&ipx[25]),
- (u_char *)&ipx[27]));
- ipx += 32;
- length -= 64;
- }
- break;
- default:
- (void)printf("ipx-sap-?%x", command);
- break;
- }
-}
-
-void
-ipx_rip_print(const u_short *ipx, int length)
-{
- int command, i;
-
- if (length < 2) {
- (void)printf(" truncated-ipx %d", length);
- return;
- }
-
- command = EXTRACT_SHORT(ipx);
- ipx++;
- length -= 2;
-
- switch (command) {
- case 1:
- (void)printf("ipx-rip-req");
- if (length > 0)
- (void)printf(" %lx/%d.%d", EXTRACT_LONG(&ipx[0]),
- EXTRACT_SHORT(&ipx[2]), EXTRACT_SHORT(&ipx[3]));
- break;
- case 2:
- (void)printf("ipx-rip-resp");
- for (i = 0; i < 50 && length > 0; i++) {
- (void)printf(" %lx/%d.%d", EXTRACT_LONG(&ipx[0]),
- EXTRACT_SHORT(&ipx[2]), EXTRACT_SHORT(&ipx[3]));
-
- ipx += 4;
- length -= 8;
- }
- break;
- default:
- (void)printf("ipx-rip-?%x", command);
- }
-}
-
diff --git a/usr.sbin/tcpdump/tcpdump/print-isoclns.c b/usr.sbin/tcpdump/tcpdump/print-isoclns.c
deleted file mode 100644
index 5f86d56..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-isoclns.c
+++ /dev/null
@@ -1,315 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- */
-
-/*
- * Original code by Matt Thomas, Digital Equipment Corporation
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-isoclns.c,v 1.9 94/06/14 20:18:44 leres Exp $ (LBL)";
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "ethertype.h"
-
-#define CLNS 129
-#define ESIS 130
-#define ISIS 131
-#define NULLNS 0
-
-static int osi_cksum(const u_char *, int, const u_char *, u_char *, u_char *);
-static void esis_print(const u_char *, int);
-
-void
-isoclns_print(const u_char *p, int length, int caplen,
- const u_char *esrc, const u_char *edst)
-{
- if (caplen < 1) {
- printf("[|iso-clns] ");
- if (!eflag)
- printf("%s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- return;
- }
-
- switch (*p) {
-
- case CLNS:
- /* esis_print(&p, &length); */
- printf("iso-clns");
- if (!eflag)
- (void)printf(" %s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- break;
-
- case ESIS:
- printf("iso-esis");
- if (!eflag)
- (void)printf(" %s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- esis_print(p, length);
- return;
-
- case ISIS:
- printf("iso-isis");
- if (!eflag)
- (void)printf(" %s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- /* isis_print(&p, &length); */
- (void)printf(" len=%d ", length);
- if (caplen > 1)
- default_print_unaligned(p, caplen);
- break;
-
- case NULLNS:
- printf("iso-nullns");
- if (!eflag)
- (void)printf(" %s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- break;
-
- default:
- printf("iso-clns %02x", p[0]);
- if (!eflag)
- (void)printf(" %s > %s",
- etheraddr_string(esrc),
- etheraddr_string(edst));
- (void)printf(" len=%d ", length);
- if (caplen > 1)
- default_print_unaligned(p, caplen);
- break;
- }
-}
-
-#define ESIS_REDIRECT 6
-#define ESIS_ESH 2
-#define ESIS_ISH 4
-
-struct esis_hdr {
- u_char version;
- u_char reserved;
- u_char type;
- u_char tmo[2];
- u_char cksum[2];
-};
-
-static void
-esis_print(const u_char *p, int length)
-{
- const u_char *ep;
- int li = p[1];
- const struct esis_hdr *eh = (const struct esis_hdr *) &p[2];
- u_char cksum[2];
- u_char off[2];
-
- if (length == 2) {
- if (qflag)
- printf(" bad pkt!");
- else
- printf(" no header at all!");
- return;
- }
- ep = p + li;
- if (li > length) {
- if (qflag)
- printf(" bad pkt!");
- else
- printf(" LI(%d) > PDU size (%d)!", li, length);
- return;
- }
- if (li < sizeof(struct esis_hdr) + 2) {
- if (qflag)
- printf(" bad pkt!");
- else {
- printf(" too short for esis header %d:", li);
- while (--length >= 0)
- printf("%02X", *p++);
- }
- return;
- }
- switch (eh->type & 0x1f) {
-
- case ESIS_REDIRECT:
- printf(" redirect");
- break;
-
- case ESIS_ESH:
- printf(" esh");
- break;
-
- case ESIS_ISH:
- printf(" ish");
- break;
-
- default:
- printf(" type %d", eh->type & 0x1f);
- break;
- }
- off[0] = eh->cksum[0];
- off[1] = eh->cksum[1];
- if (vflag && osi_cksum(p, li, eh->cksum, cksum, off)) {
- printf(" bad cksum (got %02x%02x want %02x%02x)",
- eh->cksum[1], eh->cksum[0], cksum[1], cksum[0]);
- return;
- }
- if (eh->version != 1) {
- printf(" unsupported version %d", eh->version);
- return;
- }
- p += sizeof(*eh) + 2;
- li -= sizeof(*eh) + 2; /* protoid * li */
-
- switch (eh->type & 0x1f) {
- case ESIS_REDIRECT: {
- const u_char *dst, *snpa, *is;
-
- dst = p; p += *p + 1;
- if (p > snapend)
- return;
- printf(" %s", isonsap_string(dst));
- snpa = p; p += *p + 1;
- is = p; p += *p + 1;
- if (p > snapend)
- return;
- if (p > ep) {
- printf(" [bad li]");
- return;
- }
- if (is[0] == 0)
- printf(" > %s", etheraddr_string(&snpa[1]));
- else
- printf(" > %s", isonsap_string(is));
- li = ep - p;
- break;
- }
-#if 0
- case ESIS_ESH:
- printf(" esh");
- break;
-#endif
- case ESIS_ISH: {
- const u_char *is;
-
- is = p; p += *p + 1;
- if (p > ep) {
- printf(" [bad li]");
- return;
- }
- if (p > snapend)
- return;
- printf(" %s", isonsap_string(is));
- li = ep - p;
- break;
- }
-
- default:
- (void)printf(" len=%d", length);
- if (length && p < snapend) {
- length = snapend - p;
- default_print(p, length);
- }
- return;
- }
- if (vflag)
- while (p < ep && li) {
- int op, opli;
- const u_char *q;
-
- if (snapend - p < 2)
- return;
- if (li < 2) {
- printf(" bad opts/li");
- return;
- }
- op = *p++;
- opli = *p++;
- li -= 2;
- if (opli > li) {
- printf(" opt (%d) too long", op);
- return;
- }
- li -= opli;
- q = p;
- p += opli;
- if (snapend < p)
- return;
- if (op == 198 && opli == 2) {
- printf(" tmo=%d", q[0] * 256 + q[1]);
- continue;
- }
- printf (" %d:<", op);
- while (--opli >= 0)
- printf("%02x", *q++);
- printf (">");
- }
-}
-
-static int
-osi_cksum(register const u_char *p, register int len,
- const u_char *toff, u_char *cksum, u_char *off)
-{
- int x, y, f = (len - ((toff - p) + 1));
- long c0 = 0, c1 = 0;
-
- if ((cksum[0] = off[0]) == 0 && (cksum[1] = off[1]) == 0)
- return 0;
-
- off[0] = off[1] = 0;
- while (--len >= 0) {
- c0 += *p++;
- c1 += c0;
- c0 %= 255;
- c1 %= 255;
- }
- x = (c0 * f - c1);
- if (x < 0)
- x = 255 - (-x % 255);
- else
- x %= 255;
- y = -1 * (x + c0);
- if (y < 0)
- y = 255 - (-y % 255);
- else
- y %= 255;
-
- off[0] = x;
- off[1] = y;
-
- return (off[0] != cksum[0] || off[1] != cksum[1]);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-krb.c b/usr.sbin/tcpdump/tcpdump/print-krb.c
deleted file mode 100644
index e547072..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-krb.c
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (c) 1995
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Initial contribution from John Hawkinson (jhawk@mit.edu).
- */
-
-#ifndef lint
-static char rcsid[] =
- "$Id$";
-/*
- "@(#) Header: /afs/sipb/project/tcpdump/src/tcpdump-3.0.2/RCS/print-krb.c,v 1.3 1995/08/16 05:33:27 jhawk Exp ";
-*/
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-const char *c_print(register const u_char *s, register const u_char *ep);
-const u_char *krb4_print_hdr(const u_char *cp);
-void krb4_print(const u_char *cp);
-void krb_print(const u_char *dat, int length);
-
-
-#define AUTH_MSG_KDC_REQUEST 1<<1
-#define AUTH_MSG_KDC_REPLY 2<<1
-#define AUTH_MSG_APPL_REQUEST 3<<1
-#define AUTH_MSG_APPL_REQUEST_MUTUAL 4<<1
-#define AUTH_MSG_ERR_REPLY 5<<1
-#define AUTH_MSG_PRIVATE 6<<1
-#define AUTH_MSG_SAFE 7<<1
-#define AUTH_MSG_APPL_ERR 8<<1
-#define AUTH_MSG_DIE 63<<1
-
-#define KERB_ERR_OK 0
-#define KERB_ERR_NAME_EXP 1
-#define KERB_ERR_SERVICE_EXP 2
-#define KERB_ERR_AUTH_EXP 3
-#define KERB_ERR_PKT_VER 4
-#define KERB_ERR_NAME_MAST_KEY_VER 5
-#define KERB_ERR_SERV_MAST_KEY_VER 6
-#define KERB_ERR_BYTE_ORDER 7
-#define KERB_ERR_PRINCIPAL_UNKNOWN 8
-#define KERB_ERR_PRINCIPAL_NOT_UNIQUE 9
-#define KERB_ERR_NULL_KEY 10
-
-struct krb {
- u_char pvno; /* Protocol Version */
- u_char type; /* Type+B */
-} ;
-
-static char tstr[] = " [|kerberos]";
-
-static struct token type2str[] = {
- { AUTH_MSG_KDC_REQUEST, "KDC_REQUEST" },
- { AUTH_MSG_KDC_REPLY, "KDC_REPLY" },
- { AUTH_MSG_APPL_REQUEST, "APPL_REQUEST" },
- { AUTH_MSG_APPL_REQUEST_MUTUAL, "APPL_REQUEST_MUTUAL" },
- { AUTH_MSG_ERR_REPLY, "ERR_REPLY" },
- { AUTH_MSG_PRIVATE, "PRIVATE" },
- { AUTH_MSG_SAFE, "SAFE" },
- { AUTH_MSG_APPL_ERR, "APPL_ERR" },
- { AUTH_MSG_DIE, "DIE" },
- { 0, NULL }
-};
-
-static struct token kerr2str[] = {
- { KERB_ERR_OK, "OK" },
- { KERB_ERR_NAME_EXP, "NAME_EXP" },
- { KERB_ERR_SERVICE_EXP, "SERVICE_EXP" },
- { KERB_ERR_AUTH_EXP, "AUTH_EXP" },
- { KERB_ERR_PKT_VER, "PKT_VER" },
- { KERB_ERR_NAME_MAST_KEY_VER, "NAME_MAST_KEY_VER" },
- { KERB_ERR_SERV_MAST_KEY_VER, "SERV_MAST_KEY_VER" },
- { KERB_ERR_BYTE_ORDER, "BYTE_ORDER" },
- { KERB_ERR_PRINCIPAL_UNKNOWN, "PRINCIPAL_UNKNOWN" },
- { KERB_ERR_PRINCIPAL_NOT_UNIQUE, "PRINCIPAL_NOT_UNIQUE" },
- { KERB_ERR_NULL_KEY, "NULL_KEY"},
- { 0, NULL}
- };
-
-
-/* little endian (unaligned) to host byte order */
-#define vtohlp(x) ((( ((char*)(x))[0] ) ) | \
- (( ((char*)(x))[1] ) << 8) | \
- (( ((char*)(x))[2] ) << 16) | \
- (( ((char*)(x))[3] ) << 24))
-#define vtohsp(x) ((( ((char*)(x))[0] ) ) | \
- (( ((char*)(x))[1] ) << 8))
-/* network (big endian) (unaligned) to host byte order */
-#define ntohlp(x) ((( ((char*)(x))[3] ) ) | \
- (( ((char*)(x))[2] ) << 8) | \
- (( ((char*)(x))[1] ) << 16) | \
- (( ((char*)(x))[0] ) << 24))
-#define ntohsp(x) ((( ((char*)(x))[1] ) ) | \
- (( ((char*)(x))[0] ) << 8))
-
-
-
-const char *
-c_print(register const u_char *s, register const u_char *ep)
-{
- register u_char c;
- register int flag;
-
- flag = 1;
- while (ep == NULL || s < ep) {
- c = *s++;
- if (c == '\0') {
- flag = 0;
- break;
- }
- if (!isascii(c)) {
- c = toascii(c);
- putchar('M');
- putchar('-');
- }
- if (!isprint(c)) {
- c ^= 0x40; /* DEL to ?, others to alpha */
- putchar('^');
- }
- putchar(c);
- }
- if (flag)
- return NULL;
- return(s);
-}
-
-
-const u_char *
-krb4_print_hdr(const u_char *cp)
-{
- cp+=2;
-
-#define TCHECK if (cp >= snapend) goto trunc
-#define PRINT if ((cp=c_print(cp, snapend))==NULL) goto trunc
-
- TCHECK;
- PRINT;
- TCHECK;
- putchar('.'); PRINT;
- TCHECK;
- putchar('@'); PRINT;
- return(cp);
-
- trunc:
- fputs(tstr, stdout);
- return(NULL);
-
-#undef TCHECK
-#undef PRINT
-}
-
-void krb4_print(const u_char *cp)
-{
- register const struct krb *kp;
- u_char type;
- u_short len;
-
-#define TCHECK if (cp >= snapend) goto trunc
-#define PRINT if ((cp=c_print(cp, snapend))==NULL) goto trunc
-#define ENDIAN (kp->type & 0x01)
-/* ENDIAN is 1 for little, 0 for big */
-
- kp = (struct krb *)cp;
-
- if ((&kp->type) >= snapend) {
- fputs(tstr, stdout);
- return;
- }
-
- type = kp->type & (0xFF << 1);
-
- printf(" %s %s: ", ENDIAN?"le":"be", tok2str(type2str, NULL, type));
-
- switch(type) {
- case AUTH_MSG_KDC_REQUEST:
- if ((cp=krb4_print_hdr(cp)) == NULL)
- return;
- cp+=4; /* ctime */
- TCHECK;
- printf(" %dmin ", *cp++ * 5);
- TCHECK;
- PRINT;
- TCHECK;
- putchar('.'); PRINT;
- break;
- case AUTH_MSG_APPL_REQUEST:
- cp+=2;
- TCHECK;
- printf("v%d ", *cp++);
- TCHECK;
- PRINT;
- TCHECK;
- printf(" (%d)", *cp++);
- TCHECK;
- printf(" (%d)", *cp);
- TCHECK;
- break;
- case AUTH_MSG_KDC_REPLY:
- if ((cp=krb4_print_hdr(cp)) == NULL)
- return;
- cp+=10; /* timestamp + n + exp + kvno */
- TCHECK;
- len=ENDIAN? vtohsp(cp) : ntohsp(cp);
- printf(" (%d)", len);
- TCHECK;
- break;
- case AUTH_MSG_ERR_REPLY:
- if ((cp=krb4_print_hdr(cp)) == NULL)
- return;
- cp+=4; /* timestamp */
- TCHECK;
- printf(" %s ", tok2str(kerr2str, NULL,
- ENDIAN? vtohlp(cp) :
- ntohlp(cp)
- ));
- cp+=4;
- TCHECK;
- PRINT;
- break;
- default:
- fputs("(unknown)", stdout);
- break;
- }
-
- return;
-trunc:
- fputs(tstr, stdout);
-#undef TCHECK
-}
-
-void
-krb_print(const u_char *dat, int length)
-{
- register const struct krb *kp;
-
- kp = (struct krb *)dat;
-
- if (dat >= snapend) {
- fputs(tstr, stdout);
- return;
- }
-
- switch (kp->pvno) {
- case 1:
- case 2:
- case 3:
- printf(" v%d", kp->pvno);
- break;
- case 4:
- printf(" v%d", kp->pvno);
- krb4_print((const u_char*)kp);
- break;
- case 106:
- case 107:
- fputs(" v5", stdout);
- /* Decode ASN.1 here "someday" */
- break;
- }
- return;
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-llc.c b/usr.sbin/tcpdump/tcpdump/print-llc.c
deleted file mode 100644
index cff51b7..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-llc.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- */
-
-/*
- * Code by Matt Thomas, Digital Equipment Corporation
- * with an awful lot of hacking by Jeffrey Mogul, DECWRL
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#)$Header: print-llc.c,v 1.13 94/06/14 20:18:45 leres Exp $";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include <netinet/in.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <netdb.h>
-#include <signal.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "extract.h" /* must come after interface.h */
-
-#include "llc.h"
-
-static struct token cmd2str[] = {
- { LLC_UI, "ui" },
- { LLC_TEST, "test" },
- { LLC_XID, "xid" },
- { LLC_UA, "ua" },
- { LLC_DISC, "disc" },
- { LLC_DM, "dm" },
- { LLC_SABME, "sabme" },
- { LLC_FRMR, "frmr" },
- { 0, NULL }
-};
-
-/*
- * Returns non-zero IFF it succeeds in printing the header
- */
-int
-llc_print(const u_char *p, int length, int caplen,
- const u_char *esrc, const u_char *edst)
-{
- struct llc llc;
- register u_short et;
- register int ret;
-
- if (caplen < 3) {
- (void)printf("[|llc]");
- default_print((u_char *)p, caplen);
- return(0);
- }
-
- /* Watch out for possible alignment problems */
- bcopy((char *)p, (char *)&llc, min(caplen, sizeof(llc)));
-
- if (llc.ssap == LLCSAP_GLOBAL && llc.dsap == LLCSAP_GLOBAL) {
- ipx_print(p, length);
- return (1);
- }
-#ifdef notyet
- else if (p[0] == 0xf0 && p[1] == 0xf0)
- netbios_print(p, length);
-#endif
- if (llc.ssap == LLCSAP_ISONS && llc.dsap == LLCSAP_ISONS
- && llc.llcui == LLC_UI) {
- isoclns_print(p + 3, length - 3, caplen - 3, esrc, edst);
- return (1);
- }
-
- if (llc.ssap == LLCSAP_SNAP && llc.dsap == LLCSAP_SNAP
- && llc.llcui == LLC_UI) {
- if (caplen < sizeof(llc)) {
- (void)printf("[|llc-snap]");
- default_print((u_char *)p, caplen);
- return (0);
- }
- if (vflag)
- (void)printf("snap %s ", protoid_string(llc.llcpi));
-
- caplen -= sizeof(llc);
- length -= sizeof(llc);
- p += sizeof(llc);
-
- /* This is an encapsulated Ethernet packet */
- et = EXTRACT_SHORT(&llc.ethertype[0]);
- ret = ether_encap_print(et, p, length, caplen);
- if (ret)
- return (ret);
- }
-
- if ((llc.ssap & ~LLC_GSAP) == llc.dsap) {
- if (eflag)
- (void)printf("%s ", llcsap_string(llc.dsap));
- else
- (void)printf("%s > %s %s ",
- etheraddr_string(esrc),
- etheraddr_string(edst),
- llcsap_string(llc.dsap));
- } else {
- if (eflag)
- (void)printf("%s > %s ",
- llcsap_string(llc.ssap & ~LLC_GSAP),
- llcsap_string(llc.dsap));
- else
- (void)printf("%s %s > %s %s ",
- etheraddr_string(esrc),
- llcsap_string(llc.ssap & ~LLC_GSAP),
- etheraddr_string(edst),
- llcsap_string(llc.dsap));
- }
-
- if ((llc.llcu & LLC_U_FMT) == LLC_U_FMT) {
- const char *m;
- char f;
- m = tok2str(cmd2str, "%02x", LLC_U_CMD(llc.llcu));
- switch ((llc.ssap & LLC_GSAP) | (llc.llcu & LLC_U_POLL)) {
- case 0: f = 'C'; break;
- case LLC_GSAP: f = 'R'; break;
- case LLC_U_POLL: f = 'P'; break;
- case LLC_GSAP|LLC_U_POLL: f = 'F'; break;
- default: f = '?'; break;
- }
-
- printf("%s/%c", m, f);
-
- p += 3;
- length -= 3;
- caplen -= 3;
-
- if ((llc.llcu & ~LLC_U_POLL) == LLC_XID) {
- if (*p == LLC_XID_FI) {
- printf(": %02x %02x", p[1], p[2]);
- p += 3;
- length -= 3;
- caplen -= 3;
- }
- }
- } else {
- char f;
- llc.llcis = ntohs(llc.llcis);
- switch ((llc.ssap & LLC_GSAP) | (llc.llcu & LLC_U_POLL)) {
- case 0: f = 'C'; break;
- case LLC_GSAP: f = 'R'; break;
- case LLC_U_POLL: f = 'P'; break;
- case LLC_GSAP|LLC_U_POLL: f = 'F'; break;
- default: f = '?'; break;
- }
-
- if ((llc.llcu & LLC_S_FMT) == LLC_S_FMT) {
- static char *llc_s[] = { "rr", "rej", "rnr", "03" };
- (void)printf("%s (r=%d,%c)",
- llc_s[LLC_S_CMD(llc.llcis)],
- LLC_IS_NR(llc.llcis),
- f);
- } else {
- (void)printf("I (s=%d,r=%d,%c)",
- LLC_I_NS(llc.llcis),
- LLC_IS_NR(llc.llcis),
- f);
- }
- p += 4;
- length -= 4;
- caplen -= 4;
- }
- (void)printf(" len=%d", length);
- if (caplen > 0) {
- default_print_unaligned(p, caplen);
- }
- return(1);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-nfs.c b/usr.sbin/tcpdump/tcpdump/print-nfs.c
deleted file mode 100644
index b120674..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-nfs.c
+++ /dev/null
@@ -1,1544 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-nfs.c,v 1.4 1995/08/23 05:18:54 pst Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-
-#ifdef SOLARIS
-#include <tiuser.h>
-#endif
-#include <rpc/rpc.h>
-#include <rpc/pmap_prot.h>
-
-#include <ctype.h>
-#include <stdio.h>
-#include <errno.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "extract.h" /* must come after interface.h */
-
-#include "nfs.h"
-#include "nfsfh.h"
-
-static void nfs_printfh(const u_int32 *, const int);
-static void xid_map_enter(const struct rpc_msg *, const struct ip *);
-static int32 xid_map_find(const struct rpc_msg *, const struct ip *, u_int32 *,
- u_int32 *);
-static void interp_reply(const struct rpc_msg *, u_int32, u_int32, int);
-static const u_int32 *parse_post_op_attr(const u_int32 *, int);
-
-/*
- * Mapping of old NFS Version 2 RPC numbers to generic numbers.
- */
-u_int32 nfsv3_procid[NFS_NPROCS] = {
- NFSPROC_NULL,
- NFSPROC_GETATTR,
- NFSPROC_SETATTR,
- NFSPROC_NOOP,
- NFSPROC_LOOKUP,
- NFSPROC_READLINK,
- NFSPROC_READ,
- NFSPROC_NOOP,
- NFSPROC_WRITE,
- NFSPROC_CREATE,
- NFSPROC_REMOVE,
- NFSPROC_RENAME,
- NFSPROC_LINK,
- NFSPROC_SYMLINK,
- NFSPROC_MKDIR,
- NFSPROC_RMDIR,
- NFSPROC_READDIR,
- NFSPROC_FSSTAT,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP,
- NFSPROC_NOOP
-};
-
-const char *nfsv3_writemodes[NFSV3WRITE_NMODES] = {
- "unstable",
- "datasync",
- "filesync"
-};
-
-static struct token type2str[] = {
- { NFNON, "NON" },
- { NFREG, "REG" },
- { NFDIR, "DIR" },
- { NFBLK, "BLK" },
- { NFCHR, "CHR" },
- { NFLNK, "LNK" },
- { NFFIFO, "FIFO" },
- { 0, NULL }
-};
-
-/*
- * Print out a 64-bit integer. This appears to be different on each system,
- * try to make the best of it. The integer stored as 2 consecutive XDR
- * encoded 32-bit integers, to which a pointer is passed.
- *
- * Assume that a system that has INT64_FORMAT defined, has a 64-bit
- * integer datatype and can print it.
- */
-
-#define UNSIGNED 0
-#define SIGNED 1
-#define HEX 2
-
-int print_int64(const u_int32 *dp, int how)
-{
- static char buf[32];
-#ifdef INT64_FORMAT
- u_int64 res;
-
- res = ((u_int64)ntohl(dp[0]) << 32) | (u_int64)ntohl(dp[1]);
- switch (how) {
- case SIGNED:
- printf(INT64_FORMAT, res);
- break;
- case UNSIGNED:
- printf(U_INT64_FORMAT, res);
- break;
- case HEX:
- printf(HEX_INT64_FORMAT, res);
- break;
- default:
- return (0);
- }
-#else
- /*
- * XXX - throw upper 32 bits away.
- * Could also go for hex: printf("0x%x%x", dp[0], dp[1]);
- */
- if (sign)
- printf("%ld", (int)dp[1]);
- else
- printf("%lu", (unsigned int)dp[1]);
-#endif
- return 1;
-}
-
-static const u_int32 *
-parse_sattr3(const u_int32 *dp, struct nfsv3_sattr *sa3)
-{
- register const u_int32 *ep = (u_int32 *)snapend;
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_modeset = ntohl(*dp++))) {
- if (dp + 1 > ep)
- return (0);
- sa3->sa_mode = ntohl(*dp++);
- }
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_uidset = ntohl(*dp++))) {
- if (dp + 1 > ep)
- return (0);
- sa3->sa_uid = ntohl(*dp++);
- }
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_gidset = ntohl(*dp++))) {
- if (dp + 1 > ep)
- return (0);
- sa3->sa_gid = ntohl(*dp++);
- }
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_sizeset = ntohl(*dp++))) {
- if (dp + 1 > ep)
- return (0);
- sa3->sa_size = ntohl(*dp++);
- }
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_atimetype = ntohl(*dp++)) == NFSV3SATTRTIME_TOCLIENT) {
- if (dp + 2 > ep)
- return (0);
- sa3->sa_atime.nfsv3_sec = ntohl(*dp++);
- sa3->sa_atime.nfsv3_nsec = ntohl(*dp++);
- }
-
- if (dp + 1 > ep)
- return (0);
- if ((sa3->sa_mtimetype = ntohl(*dp++)) == NFSV3SATTRTIME_TOCLIENT) {
- if (dp + 2 > ep)
- return (0);
- sa3->sa_mtime.nfsv3_sec = ntohl(*dp++);
- sa3->sa_mtime.nfsv3_nsec = ntohl(*dp++);
- }
-
- return dp;
-}
-
-void
-print_sattr3(const struct nfsv3_sattr *sa3, int verbose)
-{
- if (sa3->sa_modeset)
- printf(" mode %o", sa3->sa_mode);
- if (sa3->sa_uidset)
- printf(" uid %u", sa3->sa_uid);
- if (sa3->sa_gidset)
- printf(" gid %u", sa3->sa_gid);
- if (verbose > 1) {
- if (sa3->sa_atimetype == NFSV3SATTRTIME_TOCLIENT)
- printf(" atime %u.%06u", sa3->sa_atime.nfsv3_sec,
- sa3->sa_atime.nfsv3_nsec);
- if (sa3->sa_mtimetype == NFSV3SATTRTIME_TOCLIENT)
- printf(" mtime %u.%06u", sa3->sa_mtime.nfsv3_sec,
- sa3->sa_mtime.nfsv3_nsec);
- }
-}
-
-void
-nfsreply_print(register const u_char *bp, int length,
- register const u_char *bp2)
-{
- register const struct rpc_msg *rp;
- register const struct ip *ip;
- u_int32 proc, vers;
-
- rp = (const struct rpc_msg *)bp;
- ip = (const struct ip *)bp2;
-
- if (!nflag)
- (void)printf("%s.nfs > %s.%x: reply %s %d",
- ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst),
- ntohl(rp->rm_xid),
- ntohl(rp->rm_reply.rp_stat) == MSG_ACCEPTED?
- "ok":"ERR",
- length);
- else
- (void)printf("%s.%x > %s.%x: reply %s %d",
- ipaddr_string(&ip->ip_src),
- NFS_PORT,
- ipaddr_string(&ip->ip_dst),
- ntohl(rp->rm_xid),
- ntohl(rp->rm_reply.rp_stat) == MSG_ACCEPTED?
- "ok":"ERR",
- length);
-
- if (xid_map_find(rp, ip, &proc, &vers) >= 0)
- interp_reply(rp, proc, vers, length);
-}
-
-/*
- * Return a pointer to the first file handle in the packet.
- * If the packet was truncated, return 0.
- */
-static const u_int32 *
-parsereq(register const struct rpc_msg *rp, register int length)
-{
- register const u_int32 *dp = (u_int32 *)&rp->rm_call.cb_cred;
- register const u_int32 *ep = (u_int32 *)snapend;
- register u_int len;
-
- if (&dp[2] >= ep)
- return (0);
- /*
- * find the start of the req data (if we captured it)
- */
- len = ntohl(dp[1]);
- if (dp < ep && len < length) {
- dp += (len + (2 * sizeof(u_int32) + 3)) / sizeof(u_int32);
- len = ntohl(dp[1]);
- if ((dp < ep) && (len < length)) {
- dp += (len + (2 * sizeof(u_int32) + 3)) /
- sizeof(u_int32);
- if (dp < ep)
- return (dp);
- }
- }
- return (0);
-}
-
-/*
- * Print out an NFS file handle and return a pointer to following word.
- * If packet was truncated, return 0.
- */
-static const u_int32 *
-parsefh(register const u_int32 *dp, int v3)
-{
- int len;
-
- if (v3) {
- if (dp + 1 > (u_int32 *)snapend)
- return (0);
- len = (int)ntohl(*dp) / 4;
- dp++;
- } else
- len = NFSX_V2FH / 4;
-
- if (dp + len <= (u_int32 *)snapend) {
- nfs_printfh(dp, len);
- return (dp + len);
- }
- return (0);
-}
-
-/*
- * Print out a file name and return pointer to 32-bit word past it.
- * If packet was truncated, return 0.
- */
-static const u_int32 *
-parsefn(register const u_int32 *dp)
-{
- register u_int32 len;
- register const u_char *cp;
-
- /* Bail if we don't have the string length */
- if ((u_char *)dp > snapend - sizeof(*dp))
- return(0);
-
- /* Fetch string length; convert to host order */
- len = *dp++;
- NTOHL(len);
-
- cp = (u_char *)dp;
- /* Update 32-bit pointer (NFS filenames padded to 32-bit boundaries) */
- dp += ((len + 3) & ~3) / sizeof(*dp);
- if ((u_char *)dp > snapend)
- return (0);
- /* XXX seems like we should be checking the length */
- (void) fn_printn(cp, len, NULL);
-
- return (dp);
-}
-
-/*
- * Print out file handle and file name.
- * Return pointer to 32-bit word past file name.
- * If packet was truncated (or there was some other error), return 0.
- */
-static const u_int32 *
-parsefhn(register const u_int32 *dp, int v3)
-{
- dp = parsefh(dp, v3);
- if (dp == 0)
- return (0);
- putchar(' ');
- return (parsefn(dp));
-}
-
-void
-nfsreq_print(register const u_char *bp, int length, register const u_char *bp2)
-{
- register const struct rpc_msg *rp;
- register const struct ip *ip;
- register const u_int32 *dp;
- register const u_char *ep;
- nfstype type;
- int proc, v3;
- struct nfsv3_sattr sa3;
-
-#define TCHECK(p, l) if ((u_char *)(p) > ep - l) break
-
- rp = (const struct rpc_msg *)bp;
- ip = (const struct ip *)bp2;
- ep = snapend;
- if (!nflag)
- (void)printf("%s.%x > %s.nfs: %d",
- ipaddr_string(&ip->ip_src),
- ntohl(rp->rm_xid),
- ipaddr_string(&ip->ip_dst),
- length);
- else
- (void)printf("%s.%x > %s.%x: %d",
- ipaddr_string(&ip->ip_src),
- ntohl(rp->rm_xid),
- ipaddr_string(&ip->ip_dst),
- NFS_PORT,
- length);
-
- xid_map_enter(rp, ip); /* record proc number for later on */
-
- v3 = (ntohl(rp->rm_call.cb_vers) == NFS_VER3);
- proc = ntohl(rp->rm_call.cb_proc);
-
- if (!v3 && proc < NFS_NPROCS)
- proc = nfsv3_procid[proc];
-
- switch (proc) {
- case NFSPROC_NOOP:
- printf(" nop");
- return;
- case NFSPROC_NULL:
- printf(" null");
- return;
-
- case NFSPROC_GETATTR:
- printf(" getattr");
- if ((dp = parsereq(rp, length)) != 0 && parsefh(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_SETATTR:
- printf(" setattr");
- if ((dp = parsereq(rp, length)) != 0 && parsefh(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_LOOKUP:
- printf(" lookup");
- if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_ACCESS:
- printf(" access");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- TCHECK(dp, 4);
- printf(" %04x", ntohl(dp[0]));
- return;
- }
- break;
-
- case NFSPROC_READLINK:
- printf(" readlink");
- if ((dp = parsereq(rp, length)) != 0 && parsefh(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_READ:
- printf(" read");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- if (v3) {
- TCHECK(dp, 3 * sizeof(*dp));
- printf(" %lu bytes @ ", ntohl(dp[2]));
- print_int64(dp, UNSIGNED);
- } else {
- TCHECK(dp, 2 * sizeof(*dp));
- printf(" %lu bytes @ %lu",
- ntohl(dp[1]), ntohl(dp[0]));
- }
- return;
- }
- break;
-
- case NFSPROC_WRITE:
- printf(" write");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- if (v3) {
- TCHECK(dp, 3 * sizeof(*dp));
- printf(" %lu bytes @ ", ntohl(dp[4]));
- print_int64(dp, UNSIGNED);
- if (vflag) {
- dp += 3;
- TCHECK(dp, sizeof(*dp));
- printf(" <%s>",
- nfsv3_writemodes[ntohl(*dp)]);
- }
- } else {
- TCHECK(dp, 4 * sizeof(*dp));
- printf(" %lu (%lu) bytes @ %lu (%lu)",
- ntohl(dp[3]), ntohl(dp[2]),
- ntohl(dp[1]), ntohl(dp[0]));
- }
- return;
- }
- break;
-
- case NFSPROC_CREATE:
- printf(" create");
- if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_MKDIR:
- printf(" mkdir");
- if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_SYMLINK:
- printf(" symlink");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefhn(dp, v3)) != 0) {
- fputs(" -> ", stdout);
- if (v3 && (dp = parse_sattr3(dp, &sa3)) == 0)
- break;
- if (parsefn(dp) == 0)
- break;
- if (v3 && vflag)
- print_sattr3(&sa3, vflag);
- return;
- }
- break;
-
- case NFSPROC_MKNOD:
- printf(" mknod");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefhn(dp, v3)) != 0) {
- if (dp + 1 > (u_int32 *)snapend)
- break;
- type = (nfstype)ntohl(*dp++);
- if ((dp = parse_sattr3(dp, &sa3)) == 0)
- break;
- printf(" %s", tok2str(type2str, "unk-ft %d", type));
- if (vflag && (type == NFCHR || type == NFBLK)) {
- if (dp + 2 > (u_int32 *)snapend)
- break;
- printf(" %u/%u", ntohl(dp[0]), ntohl(dp[1]));
- dp += 2;
- }
- if (vflag)
- print_sattr3(&sa3, vflag);
- return;
- }
- break;
-
- case NFSPROC_REMOVE:
- printf(" remove");
- if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_RMDIR:
- printf(" rmdir");
- if ((dp = parsereq(rp, length)) != 0 && parsefhn(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_RENAME:
- printf(" rename");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefhn(dp, v3)) != 0) {
- fputs(" ->", stdout);
- if (parsefhn(dp, v3) != 0)
- return;
- }
- break;
-
- case NFSPROC_LINK:
- printf(" link");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- fputs(" ->", stdout);
- if (parsefhn(dp, v3) != 0)
- return;
- }
- break;
-
- case NFSPROC_READDIR:
- printf(" readdir");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- if (v3) {
- TCHECK(dp, 20);
- /*
- * We shouldn't really try to interpret the
- * offset cookie here.
- */
- printf(" %lu bytes @ ", ntohl(dp[4]));
- print_int64(dp, SIGNED);
- if (vflag)
- printf(" verf %08lx%08lx", dp[2],
- dp[3]);
- } else {
- TCHECK(dp, 2 * sizeof(*dp));
- /*
- * Print the offset as signed, since -1 is
- * common, but offsets > 2^31 aren't.
- */
- printf(" %lu bytes @ %ld", ntohl(dp[1]),
- ntohl(dp[0]));
- }
- return;
- }
- break;
-
- case NFSPROC_READDIRPLUS:
- printf(" readdirplus");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- TCHECK(dp, 20);
- /*
- * We don't try to interpret the offset
- * cookie here.
- */
- printf(" %lu bytes @ ", ntohl(dp[4]));
- print_int64(dp, SIGNED);
- if (vflag)
- printf(" max %lu verf %08lx%08lx",
- ntohl(dp[5]), dp[2], dp[3]);
- return;
- }
- break;
-
- case NFSPROC_FSSTAT:
- printf(" fsstat");
- if ((dp = parsereq(rp, length)) != 0 && parsefh(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_FSINFO:
- printf(" fsinfo");
- break;
-
- case NFSPROC_PATHCONF:
- printf(" pathconf");
- break;
-
- case NFSPROC_COMMIT:
- printf(" commit");
- if ((dp = parsereq(rp, length)) != 0 &&
- (dp = parsefh(dp, v3)) != 0) {
- printf(" %lu bytes @ ", ntohl(dp[2]));
- print_int64(dp, UNSIGNED);
- return;
- }
- break;
-
- default:
- printf(" proc-%lu", ntohl(rp->rm_call.cb_proc));
- return;
- }
- fputs(" [|nfs]", stdout);
-}
-
-/*
- * Print out an NFS file handle.
- * We assume packet was not truncated before the end of the
- * file handle pointed to by dp.
- *
- * Note: new version (using portable file-handle parser) doesn't produce
- * generation number. It probably could be made to do that, with some
- * additional hacking on the parser code.
- */
-static void
-nfs_printfh(register const u_int32 *dp, const int len)
-{
- my_fsid fsid;
- ino_t ino;
- char *sfsname = NULL;
-
- Parse_fh((caddr_t*)dp, len, &fsid, &ino, NULL, &sfsname, 0);
-
- if (sfsname) {
- /* file system ID is ASCII, not numeric, for this server OS */
- static char temp[NFSX_V3FHMAX+1];
-
- /* Make sure string is null-terminated */
- strncpy(temp, sfsname, NFSX_V3FHMAX);
- /* Remove trailing spaces */
- sfsname = strchr(temp, ' ');
- if (sfsname)
- *sfsname = 0;
-
- (void)printf(" fh %s/%ld", temp, ino);
- }
- else {
- (void)printf(" fh %d,%d/%ld",
- fsid.fsid_dev.Major, fsid.fsid_dev.Minor,
- ino);
- }
-}
-
-/*
- * Maintain a small cache of recent client.XID.server/proc pairs, to allow
- * us to match up replies with requests and thus to know how to parse
- * the reply.
- */
-
-struct xid_map_entry {
- u_int32 xid; /* transaction ID (net order) */
- struct in_addr client; /* client IP address (net order) */
- struct in_addr server; /* server IP address (net order) */
- u_int32 proc; /* call proc number (host order) */
- u_int32 vers; /* program version (host order) */
-};
-
-/*
- * Map entries are kept in an array that we manage as a ring;
- * new entries are always added at the tail of the ring. Initially,
- * all the entries are zero and hence don't match anything.
- */
-
-#define XIDMAPSIZE 64
-
-struct xid_map_entry xid_map[XIDMAPSIZE];
-
-int xid_map_next = 0;
-int xid_map_hint = 0;
-
-static void
-xid_map_enter(const struct rpc_msg *rp, const struct ip *ip)
-{
- struct xid_map_entry *xmep;
-
- xmep = &xid_map[xid_map_next];
-
- if (++xid_map_next >= XIDMAPSIZE)
- xid_map_next = 0;
-
- xmep->xid = rp->rm_xid;
- xmep->client = ip->ip_src;
- xmep->server = ip->ip_dst;
- xmep->proc = ntohl(rp->rm_call.cb_proc);
- xmep->vers = ntohl(rp->rm_call.cb_vers);
-}
-
-/* Returns NFSPROC_xxx or -1 on failure */
-static int
-xid_map_find(const struct rpc_msg *rp, const struct ip *ip, u_int32 *proc,
- u_int32 *vers)
-{
- int i;
- struct xid_map_entry *xmep;
- u_int32 xid = rp->rm_xid;
- u_int32 clip = ip->ip_dst.s_addr;
- u_int32 sip = ip->ip_src.s_addr;
-
- /* Start searching from where we last left off */
- i = xid_map_hint;
- do {
- xmep = &xid_map[i];
- if (xmep->xid == xid && xmep->client.s_addr == clip &&
- xmep->server.s_addr == sip) {
- /* match */
- xid_map_hint = i;
- *proc = xmep->proc;
- *vers = xmep->vers;
- return 0;
- }
- if (++i >= XIDMAPSIZE)
- i = 0;
- } while (i != xid_map_hint);
-
- /* search failed */
- return(-1);
-}
-
-/*
- * Routines for parsing reply packets
- */
-
-/*
- * Return a pointer to the beginning of the actual results.
- * If the packet was truncated, return 0.
- */
-static const u_int32 *
-parserep(register const struct rpc_msg *rp, register int length)
-{
- register const u_int32 *dp;
- register const u_int32 *ep = (const u_int32 *)snapend;
- int len;
- enum accept_stat astat;
-
- /*
- * Portability note:
- * Here we find the address of the ar_verf credentials.
- * Originally, this calculation was
- * dp = (u_int32 *)&rp->rm_reply.rp_acpt.ar_verf
- * On the wire, the rp_acpt field starts immediately after
- * the (32 bit) rp_stat field. However, rp_acpt (which is a
- * "struct accepted_reply") contains a "struct opaque_auth",
- * whose internal representation contains a pointer, so on a
- * 64-bit machine the compiler inserts 32 bits of padding
- * before rp->rm_reply.rp_acpt.ar_verf. So, we cannot use
- * the internal representation to parse the on-the-wire
- * representation. Instead, we skip past the rp_stat field,
- * which is an "enum" and so occupies one 32-bit word.
- */
- dp = ((const u_int32 *)&rp->rm_reply) + 1;
- if (&dp[1] >= ep)
- return(0);
- len = ntohl(dp[1]);
- if (len >= length)
- return(0);
- /*
- * skip past the ar_verf credentials.
- */
- dp += (len + (2*sizeof(u_int32) + 3)) / sizeof(u_int32);
- if (dp >= ep)
- return(0);
-
- /*
- * now we can check the ar_stat field
- */
- astat = ntohl(*(enum accept_stat *)dp);
- switch (astat) {
-
- case SUCCESS:
- break;
-
- case PROG_UNAVAIL:
- printf(" PROG_UNAVAIL");
- return(0);
-
- case PROG_MISMATCH:
- printf(" PROG_MISMATCH");
- return(0);
-
- case PROC_UNAVAIL:
- printf(" PROC_UNAVAIL");
- return(0);
-
- case GARBAGE_ARGS:
- printf(" GARBAGE_ARGS");
- return(0);
-
- case SYSTEM_ERR:
- printf(" SYSTEM_ERR");
- return(0);
-
- default:
- printf(" ar_stat %d", astat);
- return(0);
- }
- /* successful return */
- if ((sizeof(astat) + ((char *)dp)) < (char *)ep)
- return((u_int32 *) (sizeof(astat) + ((char *)dp)));
-
- return (0);
-}
-
-#define T2CHECK(p, l) if ((u_char *)(p) > ((u_char *)snapend) - l) return(0)
-
-/*
- * Not all systems have strerror().
- */
-static char *
-strerr(int errno)
-{
-
- return (strerror(errno));
-}
-
-static const u_int32 *
-parsestatus(const u_int32 *dp, int *er)
-{
- int errno;
- T2CHECK(dp, 4);
-
- errno = ntohl(dp[0]);
- if (er)
- *er = errno;
- if (errno != 0 && !qflag) {
- char *errmsg;
-
- errmsg = strerr(errno);
- if (errmsg)
- printf(" ERROR: '%s'", errmsg);
- else
- printf(" ERROR: %d", errno);
- }
- return (dp + 1);
-}
-
-static const u_int32 *
-parsefattr(const u_int32 *dp, int verbose, int v3)
-{
- const struct nfs_fattr *fap;
-
- T2CHECK(dp, 5 * sizeof(*dp));
-
- fap = (const struct nfs_fattr *)dp;
- if (verbose) {
- printf(" %s %o ids %d/%d",
- tok2str(type2str, "unk-ft %d ", ntohl(fap->fa_type)),
- ntohl(fap->fa_mode), ntohl(fap->fa_uid),
- ntohl(fap->fa_gid));
- if (v3) {
- T2CHECK(dp, 7 * sizeof(*dp));
- printf(" sz ");
- print_int64((u_int32 *)&fap->fa3_size, UNSIGNED);
- putchar(' ');
- }
- else {
- T2CHECK(dp, 6 * sizeof(*dp));
- printf(" sz %d ", ntohl(fap->fa2_size));
- }
- }
- /* print lots more stuff */
- if (verbose > 1) {
- if (v3) {
- T2CHECK(dp, 64);
- printf("nlink %d rdev %d/%d ",
- ntohl(fap->fa_nlink),
- ntohl(fap->fa3_rdev.specdata1),
- ntohl(fap->fa3_rdev.specdata2));
- printf("fsid ");
- print_int64((u_int32 *)&fap->fa2_fsid, HEX);
- printf(" nodeid ");
- print_int64((u_int32 *)&fap->fa2_fileid, HEX);
- printf(" a/m/ctime %u.%06u ",
- ntohl(fap->fa3_atime.nfsv3_sec),
- ntohl(fap->fa3_atime.nfsv3_nsec));
- printf("%u.%06u ",
- ntohl(fap->fa3_mtime.nfsv3_sec),
- ntohl(fap->fa3_mtime.nfsv3_nsec));
- printf("%u.%06u ",
- ntohl(fap->fa3_ctime.nfsv3_sec),
- ntohl(fap->fa3_ctime.nfsv3_nsec));
- } else {
- T2CHECK(dp, 48);
- printf("nlink %d rdev %x fsid %x nodeid %x a/m/ctime ",
- ntohl(fap->fa_nlink), ntohl(fap->fa2_rdev),
- ntohl(fap->fa2_fsid), ntohl(fap->fa2_fileid));
- printf("%u.%06u ",
- ntohl(fap->fa2_atime.nfsv2_sec),
- ntohl(fap->fa2_atime.nfsv2_usec));
- printf("%u.%06u ",
- ntohl(fap->fa2_mtime.nfsv2_sec),
- ntohl(fap->fa2_mtime.nfsv2_usec));
- printf("%u.%06u ",
- ntohl(fap->fa2_ctime.nfsv2_sec),
- ntohl(fap->fa2_ctime.nfsv2_usec));
- }
- }
- return ((const u_int32 *)((unsigned char *)dp +
- (v3 ? NFSX_V3FATTR : NFSX_V2FATTR)));
-}
-
-static int
-parseattrstat(const u_int32 *dp, int verbose, int v3)
-{
- int er;
-
- dp = parsestatus(dp, &er);
- if (dp == NULL || er)
- return (0);
-
- return ((long)parsefattr(dp, verbose, v3));
-}
-
-static int
-parsediropres(const u_int32 *dp)
-{
- int er;
-
- if (!(dp = parsestatus(dp, &er)) || er)
- return (0);
-
- dp = parsefh(dp, 0);
- if (dp == NULL)
- return (0);
-
- return (parsefattr(dp, vflag, 0) != NULL);
-}
-
-static int
-parselinkres(const u_int32 *dp, int v3)
-{
- int er;
-
- dp = parsestatus(dp, &er);
- if (dp == NULL || er)
- return(0);
- if (v3 && !(dp = parse_post_op_attr(dp, vflag)))
- return (0);
- putchar(' ');
- return (parsefn(dp) != NULL);
-}
-
-static int
-parsestatfs(const u_int32 *dp, int v3)
-{
- const struct nfs_statfs *sfsp;
- int er;
-
- dp = parsestatus(dp, &er);
- if (dp == NULL || (!v3 && er))
- return(0);
-
- if (qflag)
- return(1);
-
- if (v3) {
- if (vflag)
- printf(" POST:");
- if (!(dp = parse_post_op_attr(dp, vflag)))
- return (0);
- }
-
- T2CHECK(dp, (v3 ? NFSX_V3STATFS : NFSX_V2STATFS));
-
- sfsp = (const struct nfs_statfs *)dp;
-
- if (v3) {
- printf(" tbytes ");
- print_int64((u_int32 *)&sfsp->sf_tbytes, UNSIGNED);
- printf(" fbytes ");
- print_int64((u_int32 *)&sfsp->sf_fbytes, UNSIGNED);
- printf(" abytes ");
- print_int64((u_int32 *)&sfsp->sf_abytes, UNSIGNED);
- if (vflag) {
- printf(" tfiles ");
- print_int64((u_int32 *)&sfsp->sf_tfiles, UNSIGNED);
- printf(" ffiles ");
- print_int64((u_int32 *)&sfsp->sf_ffiles, UNSIGNED);
- printf(" afiles ");
- print_int64((u_int32 *)&sfsp->sf_afiles, UNSIGNED);
- printf(" invar %lu", ntohl(sfsp->sf_invarsec));
- }
- } else {
- printf(" tsize %d bsize %d blocks %d bfree %d bavail %d",
- ntohl(sfsp->sf_tsize), ntohl(sfsp->sf_bsize),
- ntohl(sfsp->sf_blocks), ntohl(sfsp->sf_bfree),
- ntohl(sfsp->sf_bavail));
- }
-
- return (1);
-}
-
-static int
-parserddires(const u_int32 *dp)
-{
- int er;
-
- dp = parsestatus(dp, &er);
- if (dp == 0 || er)
- return (0);
- if (qflag)
- return (1);
-
- T2CHECK(dp, 12);
- printf(" offset %x size %d ", ntohl(dp[0]), ntohl(dp[1]));
- if (dp[2] != 0)
- printf("eof");
-
- return (1);
-}
-
-static const u_int32 *
-parse_wcc_attr(const u_int32 *dp)
-{
- printf(" sz ");
- print_int64(dp, UNSIGNED);
- printf(" mtime %u.%06u ctime %u.%06u", ntohl(dp[2]), ntohl(dp[3]),
- ntohl(dp[4]), ntohl(dp[5]));
- return (dp + 6);
-}
-
-/*
- * Pre operation attributes. Print only if vflag > 1.
- */
-static const u_int32 *
-parse_pre_op_attr(const u_int32 *dp, int verbose)
-{
- T2CHECK(dp, 4);
- if (!ntohl(dp[0]))
- return (dp + 1);
- dp++;
- T2CHECK(dp, 24);
- if (verbose > 1) {
- return parse_wcc_attr(dp);
- } else {
- /* If not verbose enough, just skip over wcc_attr */
- return (dp + 6);
- }
-}
-
-/*
- * Post operation attributes are printed if vflag >= 1
- */
-static const u_int32 *
-parse_post_op_attr(const u_int32 *dp, int verbose)
-{
- T2CHECK(dp, 4);
- if (!ntohl(dp[0]))
- return (dp + 1);
- dp++;
- if (verbose) {
- return parsefattr(dp, verbose, 1);
- } else
- return (dp + (NFSX_V3FATTR / sizeof (u_int32)));
-}
-
-static const u_int32 *
-parse_wcc_data(const u_int32 *dp, int verbose)
-{
- if (verbose > 1)
- printf(" PRE:");
- if (!(dp = parse_pre_op_attr(dp, verbose)))
- return (0);
-
- if (verbose)
- printf(" POST:");
- return parse_post_op_attr(dp, verbose);
-}
-
-static const u_int32 *
-parsecreateopres(const u_int32 *dp, int verbose)
-{
- int er;
-
- if (!(dp = parsestatus(dp, &er)))
- return (0);
- if (er)
- dp = parse_wcc_data(dp, verbose);
- else {
- T2CHECK(dp, 4);
- if (!ntohl(dp[0]))
- return (dp + 1);
- dp++;
- if (!(dp = parsefh(dp, 1)))
- return (0);
- if (verbose) {
- if (!(dp = parse_post_op_attr(dp, verbose)))
- return (0);
- if (vflag > 1) {
- printf("dir attr:");
- dp = parse_wcc_data(dp, verbose);
- }
- }
- }
- return (dp);
-}
-
-static int
-parsewccres(const u_int32 *dp, int verbose)
-{
- int er;
-
- if (!(dp = parsestatus(dp, &er)))
- return (0);
- return parse_wcc_data(dp, verbose) != 0;
-}
-
-static const u_int32 *
-parsev3rddirres(const u_int32 *dp, int verbose)
-{
- int er;
-
- if (!(dp = parsestatus(dp, &er)))
- return (0);
- if (vflag)
- printf(" POST:");
- if (!(dp = parse_post_op_attr(dp, verbose)))
- return (0);
- if (er)
- return dp;
- if (vflag) {
- T2CHECK(dp, 8);
- printf(" verf %08lx%08lx", dp[0], dp[1]);
- dp += 2;
- }
- return dp;
-}
-
-static int
-parsefsinfo(const u_int32 *dp)
-{
- struct nfsv3_fsinfo *sfp;
- int er;
-
- if (!(dp = parsestatus(dp, &er)))
- return (0);
- if (vflag)
- printf(" POST:");
- if (!(dp = parse_post_op_attr(dp, vflag)))
- return (0);
- if (er)
- return (1);
-
- T2CHECK(dp, sizeof (struct nfsv3_fsinfo));
-
- sfp = (struct nfsv3_fsinfo *)dp;
- printf(" rtmax %lu rtpref %lu wtmax %lu wtpref %lu dtpref %lu",
- ntohl(sfp->fs_rtmax), ntohl(sfp->fs_rtpref),
- ntohl(sfp->fs_wtmax), ntohl(sfp->fs_wtpref),
- ntohl(sfp->fs_dtpref));
- if (vflag) {
- printf(" rtmult %lu wtmult %lu maxfsz ",
- ntohl(sfp->fs_rtmult), ntohl(sfp->fs_wtmult));
- print_int64((u_int32 *)&sfp->fs_maxfilesize, UNSIGNED);
- printf(" delta %u.%06u ", ntohl(sfp->fs_timedelta.nfsv3_sec),
- ntohl(sfp->fs_timedelta.nfsv3_nsec));
- }
- return (1);
-}
-
-static int
-parsepathconf(const u_int32 *dp)
-{
- int er;
- struct nfsv3_pathconf *spp;
-
- if (!(dp = parsestatus(dp, &er)))
- return (0);
- if (vflag)
- printf(" POST:");
- if (!(dp = parse_post_op_attr(dp, vflag)))
- return (0);
- if (er)
- return (1);
-
- T2CHECK(dp, sizeof (struct nfsv3_pathconf));
-
- spp = (struct nfsv3_pathconf *)dp;
-
- printf(" linkmax %lu namemax %lu %s %s %s %s",
- ntohl(spp->pc_linkmax),
- ntohl(spp->pc_namemax),
- ntohl(spp->pc_notrunc) ? "notrunc" : "",
- ntohl(spp->pc_chownrestricted) ? "chownres" : "",
- ntohl(spp->pc_caseinsensitive) ? "igncase" : "",
- ntohl(spp->pc_casepreserving) ? "keepcase" : "");
- return (0);
-}
-
-static void
-interp_reply(const struct rpc_msg *rp, u_int32 proc, u_int32 vers, int length)
-{
- register const u_int32 *dp;
- register int v3;
- register const u_char *ep = snapend;
- int er;
-
- v3 = (vers == NFS_VER3);
-
- if (!v3 && proc < NFS_NPROCS)
- proc = nfsv3_procid[proc];
-
- switch (proc) {
-
- case NFSPROC_NOOP:
- printf(" nop");
- return;
-
- case NFSPROC_NULL:
- printf(" null");
- return;
-
- case NFSPROC_GETATTR:
- printf(" getattr");
- dp = parserep(rp, length);
- if (dp != 0 && parseattrstat(dp, !qflag, v3) != 0)
- return;
- break;
-
- case NFSPROC_SETATTR:
- printf(" setattr");
- if (!(dp = parserep(rp, length)))
- return;
- if (v3) {
- if (parsewccres(dp, vflag))
- return;
- } else {
- if (parseattrstat(dp, !qflag, 0) != 0)
- return;
- }
- break;
-
- case NFSPROC_LOOKUP:
- printf(" lookup");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (er) {
- if (vflag > 1) {
- printf(" post dattr:");
- dp = parse_post_op_attr(dp, vflag);
- }
- } else {
- if (!(dp = parsefh(dp, v3)))
- break;
- if ((dp = parse_post_op_attr(dp, vflag)) &&
- vflag > 1) {
- printf(" post dattr:");
- dp = parse_post_op_attr(dp, vflag);
- }
- }
- if (dp)
- return;
- } else {
- if (parsediropres(dp) != 0)
- return;
- }
- break;
-
- case NFSPROC_ACCESS:
- printf(" access");
- dp = parserep(rp, length);
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (vflag)
- printf(" attr:");
- if (!(dp = parse_post_op_attr(dp, vflag)))
- break;
- if (!er)
- printf(" c %04x", ntohl(dp[0]));
- return;
-
- case NFSPROC_READLINK:
- printf(" readlink");
- dp = parserep(rp, length);
- if (dp != 0 && parselinkres(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_READ:
- printf(" read");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (!(dp = parse_post_op_attr(dp, vflag)))
- break;
- if (er)
- return;
- if (vflag) {
- TCHECK(dp, 8);
- printf("%lu bytes", ntohl(dp[0]));
- if (ntohl(dp[1]))
- printf(" EOF");
- }
- return;
- } else {
- if (parseattrstat(dp, vflag, 0) != 0)
- return;
- }
- break;
-
- case NFSPROC_WRITE:
- printf(" write");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (!(dp = parse_wcc_data(dp, vflag)))
- break;
- if (er)
- return;
- if (vflag) {
- TCHECK(dp, 4);
- printf("%lu bytes", ntohl(dp[0]));
- if (vflag > 1) {
- TCHECK(dp, 4);
- printf(" <%s>",
- nfsv3_writemodes[ntohl(dp[1])]);
- }
- return;
- }
- } else {
- if (parseattrstat(dp, vflag, v3) != 0)
- return;
- }
- break;
-
- case NFSPROC_CREATE:
- printf(" create");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsecreateopres(dp, vflag) != 0)
- return;
- } else {
- if (parsediropres(dp) != 0)
- return;
- }
- break;
-
- case NFSPROC_MKDIR:
- printf(" mkdir");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsecreateopres(dp, vflag) != 0)
- return;
- } else {
- if (parsediropres(dp) != 0)
- return;
- }
- break;
-
- case NFSPROC_SYMLINK:
- printf(" symlink");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsecreateopres(dp, vflag) != 0)
- return;
- } else {
- if (parsestatus(dp, &er) != 0)
- return;
- }
- break;
-
- case NFSPROC_MKNOD:
- printf(" mknod");
- if (!(dp = parserep(rp, length)))
- break;
- if (parsecreateopres(dp, vflag) != 0)
- return;
- break;
-
- case NFSPROC_REMOVE:
- printf(" remove");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsewccres(dp, vflag))
- return;
- } else {
- if (parsestatus(dp, &er) != 0)
- return;
- }
- break;
-
- case NFSPROC_RMDIR:
- printf(" rmdir");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsewccres(dp, vflag))
- return;
- } else {
- if (parsestatus(dp, &er) != 0)
- return;
- }
- break;
-
- case NFSPROC_RENAME:
- printf(" rename");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (vflag) {
- printf(" from:");
- if (!(dp = parse_wcc_data(dp, vflag)))
- break;
- printf(" to:");
- if (!(dp = parse_wcc_data(dp, vflag)))
- break;
- }
- return;
- } else {
- if (parsestatus(dp, &er) != 0)
- return;
- }
- break;
-
- case NFSPROC_LINK:
- printf(" link");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (!(dp = parsestatus(dp, &er)))
- break;
- if (vflag) {
- printf(" file POST:");
- if (!(dp = parse_post_op_attr(dp, vflag)))
- break;
- printf(" dir:");
- if (!(dp = parse_wcc_data(dp, vflag)))
- break;
- return;
- }
- } else {
- if (parsestatus(dp, &er) != 0)
- return;
- }
- break;
-
- case NFSPROC_READDIR:
- printf(" readdir");
- if (!(dp = parserep(rp, length)))
- break;
- if (v3) {
- if (parsev3rddirres(dp, vflag))
- return;
- } else {
- if (parserddires(dp) != 0)
- return;
- }
- break;
-
- case NFSPROC_READDIRPLUS:
- printf(" readdirplus");
- if (!(dp = parserep(rp, length)))
- break;
- if (parsev3rddirres(dp, vflag))
- return;
- break;
-
- case NFSPROC_FSSTAT:
- printf(" fsstat");
- dp = parserep(rp, length);
- if (dp != 0 && parsestatfs(dp, v3) != 0)
- return;
- break;
-
- case NFSPROC_FSINFO:
- printf(" fsinfo");
- dp = parserep(rp, length);
- if (dp != 0 && parsefsinfo(dp) != 0)
- return;
- break;
-
- case NFSPROC_PATHCONF:
- printf(" pathconf");
- dp = parserep(rp, length);
- if (dp != 0 && parsepathconf(dp) != 0)
- return;
- break;
-
- case NFSPROC_COMMIT:
- printf(" commit");
- dp = parserep(rp, length);
- if (dp != 0 && parsewccres(dp, vflag) != 0)
- return;
- break;
-
- default:
- printf(" proc-%lu", proc);
- return;
- }
- fputs(" [|nfs]", stdout);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-ntp.c b/usr.sbin/tcpdump/tcpdump/print-ntp.c
deleted file mode 100644
index c4fadf1..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ntp.c
+++ /dev/null
@@ -1,285 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Format and print ntp packets.
- * By Jeffrey Mogul/DECWRL
- * loosely based on print-bootp.c
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-ntp.c,v 1.14 94/06/14 20:18:46 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#undef MODEMASK /* Solaris sucks */
-#include "ntp.h"
-
-static void p_sfix(const struct s_fixedpt *);
-static void p_ntp_time(const struct l_fixedpt *);
-static void p_ntp_delta(const struct l_fixedpt *, const struct l_fixedpt *);
-
-/*
- * Print ntp requests
- */
-void
-ntp_print(register const u_char *cp, int length)
-{
- register const struct ntpdata *bp;
- register const u_char *ep;
- int mode, version, leapind;
- static char rclock[5];
-
-#define TCHECK(var, l) if ((u_char *)&(var) > ep - l) goto trunc
-
- bp = (struct ntpdata *)cp;
- /* Note funny sized packets */
- if (length != sizeof(struct ntpdata))
- (void)printf(" [len=%d]", length);
-
- /* 'ep' points to the end of avaible data. */
- ep = snapend;
-
- TCHECK(bp->status, sizeof(bp->status));
-
- version = (bp->status & VERSIONMASK) >> 3;
- printf(" v%d", version);
-
- leapind = bp->status & LEAPMASK;
- switch (leapind) {
-
- case NO_WARNING:
- break;
-
- case PLUS_SEC:
- fputs(" +1s", stdout);
- break;
-
- case MINUS_SEC:
- fputs(" -1s", stdout);
- break;
- }
-
- mode = bp->status & MODEMASK;
- switch (mode) {
-
- case MODE_UNSPEC: /* unspecified */
- fputs(" unspec", stdout);
- break;
-
- case MODE_SYM_ACT: /* symmetric active */
- fputs(" sym_act", stdout);
- break;
-
- case MODE_SYM_PAS: /* symmetric passive */
- fputs(" sym_pas", stdout);
- break;
-
- case MODE_CLIENT: /* client */
- fputs(" client", stdout);
- break;
-
- case MODE_SERVER: /* server */
- fputs(" server", stdout);
- break;
-
- case MODE_BROADCAST: /* broadcast */
- fputs(" bcast", stdout);
- break;
-
- case MODE_RES1: /* reserved */
- fputs(" res1", stdout);
- break;
-
- case MODE_RES2: /* reserved */
- fputs(" res2", stdout);
- break;
-
- }
-
- TCHECK(bp->stratum, sizeof(bp->stratum));
- printf(" strat %d", bp->stratum);
-
- TCHECK(bp->ppoll, sizeof(bp->ppoll));
- printf(" poll %d", bp->ppoll);
-
- /* Can't TCHECK bp->precision bitfield so bp->distance + 0 instead */
- TCHECK(bp->distance, 0);
- printf(" prec %d", bp->precision);
-
- if (!vflag)
- return;
-
- TCHECK(bp->distance, sizeof(bp->distance));
- fputs(" dist ", stdout);
- p_sfix(&bp->distance);
-
- TCHECK(bp->dispersion, sizeof(bp->dispersion));
- fputs(" disp ", stdout);
- p_sfix(&bp->dispersion);
-
- TCHECK(bp->refid, sizeof(bp->refid));
- fputs(" ref ", stdout);
- /* Interpretation depends on stratum */
- switch (bp->stratum) {
-
- case UNSPECIFIED:
- case PRIM_REF:
- strncpy(rclock, (char *)&(bp->refid), 4);
- rclock[4] = '\0';
- fputs(rclock, stdout);
- break;
-
- case INFO_QUERY:
- printf("%s INFO_QUERY", ipaddr_string(&(bp->refid)));
- /* this doesn't have more content */
- return;
-
- case INFO_REPLY:
- printf("%s INFO_REPLY", ipaddr_string(&(bp->refid)));
- /* this is too complex to be worth printing */
- return;
-
- default:
- printf("%s", ipaddr_string(&(bp->refid)));
- break;
- }
-
- TCHECK(bp->reftime, sizeof(bp->reftime));
- putchar('@');
- p_ntp_time(&(bp->reftime));
-
- TCHECK(bp->org, sizeof(bp->org));
- fputs(" orig ", stdout);
- p_ntp_time(&(bp->org));
-
- TCHECK(bp->rec, sizeof(bp->rec));
- fputs(" rec ", stdout);
- p_ntp_delta(&(bp->org), &(bp->rec));
-
- TCHECK(bp->xmt, sizeof(bp->xmt));
- fputs(" xmt ", stdout);
- p_ntp_delta(&(bp->org), &(bp->xmt));
-
- return;
-
-trunc:
- fputs(" [|ntp]", stdout);
-#undef TCHECK
-}
-
-static void
-p_sfix(register const struct s_fixedpt *sfp)
-{
- register int i;
- register int f;
- register float ff;
-
- i = ntohs(sfp->int_part);
- f = ntohs(sfp->fraction);
- ff = f / 65536.0; /* shift radix point by 16 bits */
- f = ff * 1000000.0; /* Treat fraction as parts per million */
- printf("%d.%06d", i, f);
-}
-
-#define FMAXINT (4294967296.0) /* floating point rep. of MAXINT */
-
-static void
-p_ntp_time(register const struct l_fixedpt *lfp)
-{
- register int32 i;
- register u_int32 uf;
- register u_int32 f;
- register float ff;
-
- i = ntohl(lfp->int_part);
- uf = ntohl(lfp->fraction);
- ff = uf;
- if (ff < 0.0) /* some compilers are buggy */
- ff += FMAXINT;
- ff = ff / FMAXINT; /* shift radix point by 32 bits */
- f = ff * 1000000000.0; /* treat fraction as parts per billion */
- printf("%lu.%09d", i, f);
-}
-
-/* Prints time difference between *lfp and *olfp */
-static void
-p_ntp_delta(register const struct l_fixedpt *olfp,
- register const struct l_fixedpt *lfp)
-{
- register int32 i;
- register u_int32 uf;
- register u_int32 ouf;
- register u_int32 f;
- register float ff;
- int signbit;
-
- i = ntohl(lfp->int_part) - ntohl(olfp->int_part);
-
- uf = ntohl(lfp->fraction);
- ouf = ntohl(olfp->fraction);
-
- if (i > 0) { /* new is definitely greater than old */
- signbit = 0;
- f = uf - ouf;
- if (ouf > uf) /* must borrow from high-order bits */
- i -= 1;
- } else if (i < 0) { /* new is definitely less than old */
- signbit = 1;
- f = ouf - uf;
- if (uf > ouf) /* must carry into the high-order bits */
- i += 1;
- i = -i;
- } else { /* int_part is zero */
- if (uf > ouf) {
- signbit = 0;
- f = uf - ouf;
- } else {
- signbit = 1;
- f = ouf - uf;
- }
- }
-
- ff = f;
- if (ff < 0.0) /* some compilers are buggy */
- ff += FMAXINT;
- ff = ff / FMAXINT; /* shift radix point by 32 bits */
- f = ff * 1000000000.0; /* treat fraction as parts per billion */
- if (signbit)
- putchar('-');
- else
- putchar('+');
- printf("%d.%09d", i, f);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-null.c b/usr.sbin/tcpdump/tcpdump/print-null.c
deleted file mode 100644
index 8e7f3b7..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-null.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#)$Header: print-null.c,v 1.14 94/06/10 17:01:35 mccanne Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "pcap.h"
-
-#define NULL_HDRLEN 4
-
-static void
-null_print(const u_char *p, const struct ip *ip, int length)
-{
- u_int family;
-
- bcopy(p, &family, sizeof(family));
-
- if (nflag) {
- /* XXX just dump the header */
- return;
- }
- switch (family) {
-
- case AF_INET:
- printf("ip: ");
- break;
-
- case AF_NS:
- printf("ns: ");
- break;
-
- default:
- printf("AF %d: ", family);
- break;
- }
-}
-
-void
-null_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
-{
- int length = h->len;
- int caplen = h->caplen;
- const struct ip *ip;
-
- ts_print(&h->ts);
-
- /*
- * 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 -= NULL_HDRLEN;
-
- ip = (struct ip *)(p + NULL_HDRLEN);
-
- if (eflag)
- null_print(p, ip, length);
-
- ip_print((const u_char *)ip, length);
-
- if (xflag)
- default_print((const u_char *)ip, caplen - NULL_HDRLEN);
- putchar('\n');
-}
-
diff --git a/usr.sbin/tcpdump/tcpdump/print-ospf.c b/usr.sbin/tcpdump/tcpdump/print-ospf.c
deleted file mode 100644
index 4cae135..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ospf.c
+++ /dev/null
@@ -1,578 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * OSPF support contributed by Jeffrey Honig (jch@mitchell.cit.cornell.edu)
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-ospf.c,v 1.12 94/06/14 20:18:46 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-
-#include <errno.h>
-#include <ctype.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-#include "ospf.h"
-
-#ifndef __GNUC__
-#define inline
-#endif
-
-struct bits {
- u_int32 bit;
- const char *str;
-};
-
-static const struct bits ospf_option_bits[] = {
- { OSPF_OPTION_T, "T" },
- { OSPF_OPTION_E, "E" },
- { OSPF_OPTION_MC, "MC" },
- { 0, NULL }
-};
-
-static const struct bits ospf_rla_flag_bits[] = {
- { RLA_FLAG_B, "B" },
- { RLA_FLAG_E, "E" },
- { RLA_FLAG_W1, "W1" },
- { RLA_FLAG_W2, "W2" },
- { 0, NULL }
-};
-
-static const char *ospf_types[OSPF_TYPE_MAX] = {
- (char *) 0,
- "hello",
- "dd",
- "ls_req",
- "ls_upd",
- "ls_ack"
-};
-
-static inline void
-ospf_print_seqage(register u_int32 seq, register time_t us)
-{
- register time_t sec = us % 60;
- register time_t mins = (us / 60) % 60;
- register time_t hour = us/3600;
-
- printf(" S %X age ",
- seq);
- if (hour) {
- printf("%d:%02d:%02d",
- hour,
- mins,
- sec);
- } else if (mins) {
- printf("%d:%02d",
- mins,
- sec);
- } else {
- printf("%d",
- sec);
- }
-}
-
-
-static inline void
-ospf_print_bits(register const struct bits *bp, register u_char options)
-{
- char sep = ' ';
-
- do {
- if (options & bp->bit) {
- printf("%c%s",
- sep,
- bp->str);
- sep = '/';
- }
- } while ((++bp)->bit) ;
-}
-
-
-#define LS_PRINT(lsp, type) switch (type) { \
- case LS_TYPE_ROUTER: \
- printf(" rtr %s ", ipaddr_string(&lsp->ls_router)); break; \
- case LS_TYPE_NETWORK: \
- printf(" net dr %s if %s", ipaddr_string(&lsp->ls_router), ipaddr_string(&lsp->ls_stateid)); break; \
- case LS_TYPE_SUM_IP: \
- printf(" sum %s abr %s", ipaddr_string(&lsp->ls_stateid), ipaddr_string(&lsp->ls_router)); break; \
- case LS_TYPE_SUM_ABR: \
- printf(" abr %s rtr %s", ipaddr_string(&lsp->ls_router), ipaddr_string(&lsp->ls_stateid)); break; \
- case LS_TYPE_ASE: \
- printf(" ase %s asbr %s", ipaddr_string(&lsp->ls_stateid), ipaddr_string(&lsp->ls_router)); break; \
- case LS_TYPE_GROUP: \
- printf(" group %s rtr %s", ipaddr_string(&lsp->ls_stateid), ipaddr_string(&lsp->ls_router)); break; \
- }
-
-static int
-ospf_print_lshdr(register const struct lsa_hdr *lshp, const caddr_t end)
-{
- if ((caddr_t) (lshp + 1) > end) {
- return 1;
- }
-
- printf(" {"); /* } (ctags) */
-
- if (!lshp->ls_type || lshp->ls_type >= LS_TYPE_MAX) {
- printf(" ??LS type %d?? }", /* { (ctags) */
- lshp->ls_type);
- return 1;
- }
-
- ospf_print_bits(ospf_option_bits, lshp->ls_options);
- ospf_print_seqage(ntohl(lshp->ls_seq),
- ntohs(lshp->ls_age));
-
- LS_PRINT(lshp, lshp->ls_type);
-
- return 0;
-}
-
-
-/*
- * Print a single link state advertisement. If truncated return 1, else 0.
- */
-
-static int
-ospf_print_lsa(register const struct lsa *lsap, const caddr_t end)
-{
- register const char *ls_end;
- const struct rlalink *rlp;
- const struct tos_metric *tosp;
- const struct in_addr *ap;
- const struct aslametric *almp;
- const struct mcla *mcp;
- const u_int32 *lp;
- int j, k;
-
- if (ospf_print_lshdr(&lsap->ls_hdr, end)) {
- return 1;
- }
-
- ls_end = (caddr_t) lsap + ntohs(lsap->ls_hdr.ls_length);
-
- if (ls_end > end) {
- printf(" }"); /* { (ctags) */
- return 1;
- }
-
- switch (lsap->ls_hdr.ls_type) {
- case LS_TYPE_ROUTER:
- ospf_print_bits(ospf_rla_flag_bits, lsap->lsa_un.un_rla.rla_flags);
-
- j = ntohs(lsap->lsa_un.un_rla.rla_count);
- rlp = lsap->lsa_un.un_rla.rla_link;
- while (j--) {
- struct rlalink *rln = (struct rlalink *) ((caddr_t) (rlp + 1) + ((rlp->link_toscount) * sizeof (struct tos_metric)));
-
- if ((caddr_t) rln > ls_end) {
- break;
- }
- printf(" {"); /* } (ctags) */
-
- switch (rlp->link_type) {
- case RLA_TYPE_VIRTUAL:
- printf(" virt");
- /* Fall through */
-
- case RLA_TYPE_ROUTER:
- printf(" nbrid %s if %s",
- ipaddr_string(&rlp->link_id),
- ipaddr_string(&rlp->link_data));
- break;
-
- case RLA_TYPE_TRANSIT:
- printf(" dr %s if %s",
- ipaddr_string(&rlp->link_id),
- ipaddr_string(&rlp->link_data));
- break;
-
- case RLA_TYPE_STUB:
- printf(" net %s mask %s",
- ipaddr_string(&rlp->link_id),
- ipaddr_string(&rlp->link_data));
- break;
-
- default:
- printf(" ??RouterLinksType %d?? }", /* { (ctags) */
- rlp->link_type);
- return 0;
- }
- printf(" tos 0 metric %d",
- ntohs(rlp->link_tos0metric));
- tosp = (struct tos_metric *) ((sizeof rlp->link_tos0metric) + (caddr_t) rlp);
- for (k = 0; k < rlp->link_toscount; k++, tosp++) {
- printf(" tos %d metric %d",
- ntohs(tosp->tos_type),
- ntohs(tosp->tos_metric));
- }
- printf(" }"); /* { (ctags) */
- rlp = rln;
- }
- break;
-
- case LS_TYPE_NETWORK:
- printf(" mask %s rtrs",
- ipaddr_string(&lsap->lsa_un.un_nla.nla_mask));
- for (ap = lsap->lsa_un.un_nla.nla_router;
- (caddr_t) (ap + 1) <= ls_end;
- ap++) {
- printf(" %s",
- ipaddr_string(ap));
- }
- break;
-
- case LS_TYPE_SUM_IP:
- printf(" mask %s",
- ipaddr_string(&lsap->lsa_un.un_sla.sla_mask));
- /* Fall through */
-
- case LS_TYPE_SUM_ABR:
-
- for (lp = lsap->lsa_un.un_sla.sla_tosmetric;
- (caddr_t) (lp + 1) <= ls_end;
- lp++) {
- u_int32 ul = ntohl(*lp);
-
- printf(" tos %d metric %d",
- (ul & SLA_MASK_TOS) >> SLA_SHIFT_TOS,
- ul & SLA_MASK_METRIC);
- }
- break;
-
- case LS_TYPE_ASE:
- printf(" mask %s",
- ipaddr_string(&lsap->lsa_un.un_asla.asla_mask));
-
- for (almp = lsap->lsa_un.un_asla.asla_metric;
- (caddr_t) (almp + 1) <= ls_end;
- almp++) {
- u_int32 ul = ntohl(almp->asla_tosmetric);
-
- printf(" type %d tos %d metric %d",
- (ul & ASLA_FLAG_EXTERNAL) ? 2 : 1,
- (ul & ASLA_MASK_TOS) >> ASLA_SHIFT_TOS,
- (ul & ASLA_MASK_METRIC));
- if (almp->asla_forward.s_addr) {
- printf(" forward %s",
- ipaddr_string(&almp->asla_forward));
- }
- if (almp->asla_tag.s_addr) {
- printf(" tag %s",
- ipaddr_string(&almp->asla_tag));
- }
- }
- break;
-
- case LS_TYPE_GROUP:
- /* Multicast extensions as of 23 July 1991 */
- for (mcp = lsap->lsa_un.un_mcla;
- (caddr_t) (mcp + 1) <= ls_end;
- mcp++) {
- switch (ntohl(mcp->mcla_vtype)) {
- case MCLA_VERTEX_ROUTER:
- printf(" rtr rtrid %s",
- ipaddr_string(&mcp->mcla_vid));
- break;
-
- case MCLA_VERTEX_NETWORK:
- printf(" net dr %s",
- ipaddr_string(&mcp->mcla_vid));
- break;
-
- default:
- printf(" ??VertexType %d??",
- ntohl(mcp->mcla_vtype));
- break;
- }
- }
- }
-
- printf(" }"); /* { (ctags) */
- return 0;
-}
-
-
-void
-ospf_print(register const u_char *bp, register int length,
- register const u_char *bp2)
-{
- register const struct ospfhdr *op;
- register const struct ip *ip;
- register const caddr_t end = (caddr_t)snapend;
- register const struct lsa *lsap;
- register const struct lsa_hdr *lshp;
- char sep;
- int i, j;
- const struct in_addr *ap;
- const struct lsr *lsrp;
-
- op = (struct ospfhdr *)bp;
- ip = (struct ip *)bp2;
- /* Print the source and destination address */
- (void) printf("%s > %s:",
- ipaddr_string(&ip->ip_src),
- ipaddr_string(&ip->ip_dst));
-
- if ((caddr_t) (&op->ospf_len + 1) > end) {
- goto trunc_test;
- }
-
- /* If the type is valid translate it, or just print the type */
- /* value. If it's not valid, say so and return */
- if (op->ospf_type || op->ospf_type < OSPF_TYPE_MAX) {
- printf(" OSPFv%d-%s %d:",
- op->ospf_version,
- ospf_types[op->ospf_type],
- length);
- } else {
- printf(" ospf-v%d-??type %d?? %d:",
- op->ospf_version,
- op->ospf_type,
- length);
- return;
- }
-
- if (length != ntohs(op->ospf_len)) {
- printf(" ??len %d??",
- ntohs(op->ospf_len));
- goto trunc_test;
- }
-
- if ((caddr_t) (&op->ospf_routerid + 1) > end) {
- goto trunc_test;
- }
-
- /* Print the routerid if it is not the same as the source */
- if (ip->ip_src.s_addr != op->ospf_routerid.s_addr) {
- printf(" rtrid %s",
- ipaddr_string(&op->ospf_routerid));
- }
-
- if ((caddr_t) (&op->ospf_areaid + 1) > end) {
- goto trunc_test;
- }
-
- if (op->ospf_areaid.s_addr) {
- printf(" area %s",
- ipaddr_string(&op->ospf_areaid));
- } else {
- printf(" backbone");
- }
-
- if ((caddr_t) (op->ospf_authdata + OSPF_AUTH_SIZE) > end) {
- goto trunc_test;
- }
-
- if (vflag) {
- /* Print authentication data (should we really do this?) */
- switch (ntohs(op->ospf_authtype)) {
- case OSPF_AUTH_NONE:
- break;
-
- case OSPF_AUTH_SIMPLE:
- printf(" auth ");
- j = 0;
- for (i = 0; i < sizeof (op->ospf_authdata); i++) {
- if (!isprint(op->ospf_authdata[i])) {
- j = 1;
- break;
- }
- }
- if (j) {
- /* Print the auth-data as a string of octets */
- printf("%s.%s",
- ipaddr_string((struct in_addr *) op->ospf_authdata),
- ipaddr_string((struct in_addr *) &op->ospf_authdata[sizeof (struct in_addr)]));
- } else {
- /* Print the auth-data as a text string */
- printf("'%.8s'",
- op->ospf_authdata);
- }
- break;
-
- default:
- printf(" ??authtype-%d??",
- ntohs(op->ospf_authtype));
- return;
- }
- }
-
-
- /* Do rest according to version. */
- switch (op->ospf_version) {
- case 2:
- /* ospf version 2 */
- switch (op->ospf_type) {
- case OSPF_TYPE_UMD: /* Rob Coltun's special monitoring packets; do nothing */
- break;
-
- case OSPF_TYPE_HELLO:
- if ((caddr_t) (&op->ospf_hello.hello_deadint + 1) > end) {
- break;
- }
- if (vflag) {
- ospf_print_bits(ospf_option_bits, op->ospf_hello.hello_options);
- printf(" mask %s int %d pri %d dead %d",
- ipaddr_string(&op->ospf_hello.hello_mask),
- ntohs(op->ospf_hello.hello_helloint),
- op->ospf_hello.hello_priority,
- ntohl(op->ospf_hello.hello_deadint));
- }
-
- if ((caddr_t) (&op->ospf_hello.hello_dr + 1) > end) {
- break;
- }
- if (op->ospf_hello.hello_dr.s_addr) {
- printf(" dr %s",
- ipaddr_string(&op->ospf_hello.hello_dr));
- }
-
- if ((caddr_t) (&op->ospf_hello.hello_bdr + 1) > end) {
- break;
- }
- if (op->ospf_hello.hello_bdr.s_addr) {
- printf(" bdr %s",
- ipaddr_string(&op->ospf_hello.hello_bdr));
- }
-
- if (vflag) {
- if ((caddr_t) (op->ospf_hello.hello_neighbor + 1) > end) {
- break;
- }
- printf(" nbrs");
- for (ap = op->ospf_hello.hello_neighbor;
- (caddr_t) (ap + 1) <= end;
- ap++) {
- printf(" %s",
- ipaddr_string(ap));
- }
- }
- break; /* HELLO */
-
- case OSPF_TYPE_DB:
- if ((caddr_t) (&op->ospf_db.db_seq + 1) > end) {
- break;
- }
- ospf_print_bits(ospf_option_bits, op->ospf_db.db_options);
- sep = ' ';
- if (op->ospf_db.db_flags & OSPF_DB_INIT) {
- printf("%cI",
- sep);
- sep = '/';
- }
- if (op->ospf_db.db_flags & OSPF_DB_MORE) {
- printf("%cM",
- sep);
- sep = '/';
- }
- if (op->ospf_db.db_flags & OSPF_DB_MASTER) {
- printf("%cMS",
- sep);
- sep = '/';
- }
- printf(" S %X",
- ntohl(op->ospf_db.db_seq));
-
- if (vflag) {
- /* Print all the LS adv's */
- lshp = op->ospf_db.db_lshdr;
-
- while (!ospf_print_lshdr(lshp, end)) {
- printf(" }"); /* { (ctags) */
- lshp++;
- }
- }
- break;
-
- case OSPF_TYPE_LSR:
- if (vflag) {
- for (lsrp = op->ospf_lsr; (caddr_t) (lsrp+1) <= end; lsrp++) {
- int32 type;
-
- if ((caddr_t) (lsrp + 1) > end) {
- break;
- }
-
- printf(" {"); /* } (ctags) */
- if (!(type = lsrp->ls_type) || type >= LS_TYPE_MAX) {
- printf(" ??LinkStateType %d }", /* { (ctags) */
- type);
- printf(" }"); /* { (ctags) */
- break;
- }
-
- LS_PRINT(lsrp, type);
- printf(" }"); /* { (ctags) */
- }
- }
- break;
-
- case OSPF_TYPE_LSU:
- if (vflag) {
- lsap = op->ospf_lsu.lsu_lsa;
- i = ntohl(op->ospf_lsu.lsu_count);
-
- while (i-- &&
- !ospf_print_lsa(lsap, end)) {
- lsap = (struct lsa *) ((caddr_t) lsap + ntohs(lsap->ls_hdr.ls_length));
- }
- }
- break;
-
-
- case OSPF_TYPE_LSA:
- if (vflag) {
- lshp = op->ospf_lsa.lsa_lshdr;
-
- while (!ospf_print_lshdr(lshp, end)) {
- printf(" }"); /* { (ctags) */
- lshp++;
- }
- break;
- }
- } /* end switch on v2 packet type */
- break;
-
- default:
- printf(" ospf [version %d]",
- op->ospf_version);
- break;
- } /* end switch on version */
-
- trunc_test:
- if ((snapend - bp) < length) {
- printf(" [|]");
- }
-
- return; /* from ospf_print */
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-ppp.c b/usr.sbin/tcpdump/tcpdump/print-ppp.c
deleted file mode 100644
index 3a23cc4..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-ppp.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-ppp.c,v 1.2 1995/03/08 12:52:40 olah Exp $ (LBL)";
-#endif
-
-#ifdef PPP
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <netdb.h>
-#include <pcap.h>
-#include <signal.h>
-#include <stdio.h>
-
-#include <netinet/if_ether.h>
-#include "ethertype.h"
-
-#include <net/ppp_defs.h>
-#include "interface.h"
-#include "addrtoname.h"
-
-struct protonames {
- u_short protocol;
- char *name;
-};
-
-static struct protonames protonames[] = {
- /*
- * Protocol field values.
- */
- PPP_IP, "IP", /* Internet Protocol */
- PPP_XNS, "XNS", /* Xerox NS */
- PPP_IPX, "IPX", /* IPX Datagram (RFC1552) */
- PPP_VJC_COMP, "VJC_UNCOMP", /* VJ compressed TCP */
- PPP_VJC_UNCOMP, "VJC_UNCOMP", /* VJ uncompressed TCP */
- PPP_COMP, "COMP", /* compressed packet */
- PPP_IPCP, "IPCP", /* IP Control Protocol */
- PPP_IPXCP, "IPXCP", /* IPX Control Protocol (RFC1552) */
- PPP_CCP, "CCP", /* Compression Control Protocol */
- PPP_LCP, "LCP", /* Link Control Protocol */
- PPP_PAP, "PAP", /* Password Authentication Protocol */
- PPP_LQR, "LQR", /* Link Quality Report protocol */
- PPP_CHAP, "CHAP", /* Cryptographic Handshake Auth. Proto*/
-};
-
-void
-ppp_hdlc_print(const u_char *p, int length)
-{
- int proto = PPP_PROTOCOL(p);
- int i;
-
- printf("%4d %02x ", length, PPP_CONTROL(p));
-
- for (i = (sizeof(protonames) / sizeof(protonames[0])) - 1; i >= 0; --i){
- if (proto == protonames[i].protocol) {
- printf("%s: ", protonames[i].name);
- break;
- }
- }
- if (i < 0)
- printf("%04x: ", proto);
-}
-
-void
-ppp_if_print(u_char *user, const struct pcap_pkthdr *h,
- register const u_char *p)
-{
- register int length = h->len;
- register int caplen = h->caplen;
-
- ts_print(&h->ts);
-
- if (caplen < PPP_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;
-
- if (eflag)
- ppp_hdlc_print(p, length);
-
- length -= PPP_HDRLEN;
-
- switch(PPP_PROTOCOL(p)) {
- case PPP_IP:
- case ETHERTYPE_IP:
- ip_print((const u_char *)(p + PPP_HDRLEN), length);
- break;
- case PPP_IPX:
- case ETHERTYPE_IPX:
- ipx_print((const u_char *)(p + PPP_HDRLEN), length);
- break;
-
- default:
- if(!eflag)
- ppp_hdlc_print(p, length);
- if(!xflag)
- default_print((const u_char *)(p + PPP_HDRLEN),
- caplen - PPP_HDRLEN);
- }
-
- if (xflag)
- default_print((const u_char *)(p + PPP_HDRLEN),
- caplen - PPP_HDRLEN);
-out:
- putchar('\n');
-}
-#else
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-void
-ppp_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
-{
- error("not configured for ppp");
- /* NOTREACHED */
-}
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/print-rip.c b/usr.sbin/tcpdump/tcpdump/print-rip.c
deleted file mode 100644
index 319d95d..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-rip.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1989, 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-rip.c,v 1.4 1995/03/08 12:52:40 olah Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-
-#include <protocols/routed.h>
-
-#include <errno.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-static void
-rip_entry_print(register const struct netinfo *ni)
-{
- if (ni->rip_dst.sa_family != AF_INET) {
- register int i;
-
- printf(" [family %d:", ni->rip_dst.sa_family);
- for (i = 0; i < 14; i += 2)
- printf(" %02x%02x", (u_char)ni->rip_dst.sa_data[i],
- (u_char)ni->rip_dst.sa_data[i+1]);
- printf("]");
- } else {
- register struct sockaddr_in *sin =
- (struct sockaddr_in *)&ni->rip_dst;
- printf(" %s", ipaddr_string(&sin->sin_addr));
- if (sin->sin_port)
- printf(" [port %d]", sin->sin_port);
- }
- printf("(%d)", ntohl(ni->rip_metric));
-}
-
-void
-rip_print(const u_char *dat, int length)
-{
- register const struct rip *rp = (struct rip *)dat;
- register const struct netinfo *ni;
- register int amt = snapend - dat;
- register int i = min(length, amt) -
- (sizeof(struct rip) - sizeof(struct netinfo));
- int j;
- int trunc;
-
- if (i < 0)
- return;
-
- switch (rp->rip_cmd) {
-
- case RIPCMD_REQUEST:
- printf(" rip-req %d", length);
- break;
- case RIPCMD_RESPONSE:
- j = length / sizeof(*ni);
- if (j * sizeof(*ni) != length - 4)
- printf(" rip-resp %d[%d]:", j, length);
- else
- printf(" rip-resp %d:", j);
- trunc = ((i / sizeof(*ni)) * sizeof(*ni) != i);
- for (ni = rp->rip_nets; (i -= sizeof(*ni)) >= 0; ++ni)
- rip_entry_print(ni);
- if (trunc)
- printf("[|rip]");
- break;
- case RIPCMD_TRACEON:
- printf(" rip-traceon %d: \"%s\"", length, rp->rip_tracefile);
- break;
- case RIPCMD_TRACEOFF:
- printf(" rip-traceoff %d", length);
- break;
- case RIPCMD_POLL:
- printf(" rip-poll %d", length);
- break;
- case RIPCMD_POLLENTRY:
- printf(" rip-pollentry %d", length);
- break;
- default:
- printf(" rip-%d ?? %d", rp->rip_cmd, length);
- break;
- }
- if (rp->rip_vers != RIPVERSION)
- printf(" [vers %d]", rp->rip_vers);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-sl.c b/usr.sbin/tcpdump/tcpdump/print-sl.c
deleted file mode 100644
index 3c2b8ea..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-sl.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (c) 1989, 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#)$Header: print-sl.c,v 1.28 94/06/10 17:01:38 mccanne Exp $ (LBL)";
-#endif
-
-#ifdef CSLIP
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/timeb.h>
-#include <sys/file.h>
-#include <sys/ioctl.h>
-#include <sys/mbuf.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/if_ether.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <net/slcompress.h>
-#include <net/slip.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <netdb.h>
-#include <pcap.h>
-#include <signal.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-static int lastlen[2][256];
-static int lastconn = 255;
-
-static void sliplink_print(const u_char *, const struct ip *, int);
-static void compressed_sl_print(const u_char *, const struct ip *, int, int);
-
-void
-sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
-{
- register int caplen = h->caplen;
- register 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);
-
- if (eflag)
- sliplink_print(p, ip, length);
-
- 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 int length)
-{
- int dir;
- int hlen;
-
- dir = p[SLX_DIR];
- putchar(dir == SLIPDIR_IN ? 'I' : 'O');
- putchar(' ');
-
- if (nflag) {
- /* XXX just dump the header */
- int i;
-
- for (i = 0; i < 15; ++i)
- printf("%02x.", p[SLX_CHDR + i]);
- printf("%02x: ", p[SLX_CHDR + 15]);
- return;
- }
- switch (p[SLX_CHDR] & 0xf0) {
-
- case TYPE_IP:
- printf("ip %d: ", length + SLIP_HDRLEN);
- break;
-
- case TYPE_UNCOMPRESSED_TCP:
- /*
- * The connection id is stode in the IP protcol field.
- */
- lastconn = ip->ip_p;
- hlen = ip->ip_hl;
- hlen += ((struct tcphdr *)&((int *)ip)[hlen])->th_off;
- lastlen[dir][lastconn] = length - (hlen << 2);
- printf("utcp %d: ", lastconn);
- break;
-
- default:
- if (p[SLX_CHDR] & TYPE_COMPRESSED_TCP) {
- compressed_sl_print(&p[SLX_CHDR], ip,
- length, dir);
- printf(": ");
- } else
- printf("slip-%d!: ", p[SLX_CHDR]);
- }
-}
-
-static const u_char *
-print_sl_change(const char *str, register const u_char *cp)
-{
- register u_int i;
-
- if ((i = *cp++) == 0) {
- i = (cp[0] << 8) | cp[1];
- cp += 2;
- }
- printf(" %s%d", str, i);
- return (cp);
-}
-
-static const u_char *
-print_sl_winchange(register const u_char *cp)
-{
- register short i;
-
- if ((i = *cp++) == 0) {
- i = (cp[0] << 8) | cp[1];
- cp += 2;
- }
- if (i >= 0)
- printf(" W+%d", i);
- else
- printf(" W%d", i);
- return (cp);
-}
-
-static void
-compressed_sl_print(const u_char *chdr, const struct ip *ip,
- int length, int dir)
-{
- register const u_char *cp = chdr;
- register u_int flags;
- int hlen;
-
- flags = *cp++;
- if (flags & NEW_C) {
- lastconn = *cp++;
- printf("ctcp %d", lastconn);
- } else
- printf("ctcp *");
-
- /* skip tcp checksum */
- cp += 2;
-
- switch (flags & SPECIALS_MASK) {
- case SPECIAL_I:
- printf(" *SA+%d", lastlen[dir][lastconn]);
- break;
-
- case SPECIAL_D:
- printf(" *S+%d", lastlen[dir][lastconn]);
- break;
-
- default:
- if (flags & NEW_U)
- cp = print_sl_change("U=", cp);
- if (flags & NEW_W)
- cp = print_sl_winchange(cp);
- if (flags & NEW_A)
- cp = print_sl_change("A+", cp);
- if (flags & NEW_S)
- cp = print_sl_change("S+", cp);
- break;
- }
- if (flags & NEW_I)
- cp = print_sl_change("I+", cp);
-
- /*
- * 'hlen' is the length of the uncompressed TCP/IP header (in words).
- * 'cp - chdr' is the length of the compressed header.
- * 'length - hlen' is the amount of data in the packet.
- */
- hlen = ip->ip_hl;
- hlen += ((struct tcphdr *)&((int32 *)ip)[hlen])->th_off;
- lastlen[dir][lastconn] = length - (hlen << 2);
- printf(" %d (%d)", lastlen[dir][lastconn], cp - chdr);
-}
-#else
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-void
-sl_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p)
-{
-
- error("not configured for slip");
- /* NOTREACHED */
-}
-#endif
diff --git a/usr.sbin/tcpdump/tcpdump/print-snmp.c b/usr.sbin/tcpdump/tcpdump/print-snmp.c
deleted file mode 100644
index 0a6cb58..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-snmp.c
+++ /dev/null
@@ -1,1032 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * John Robert LoVerso. All rights reserved.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by John Robert LoVerso.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- *
- * This implementation has been influenced by the CMU SNMP release,
- * by Steve Waldbusser. However, this shares no code with that system.
- * Additional ASN.1 insight gained from Marshall T. Rose's _The_Open_Book_.
- * Earlier forms of this implementation were derived and/or inspired by an
- * awk script originally written by C. Philip Wood of LANL (but later
- * heavily modified by John Robert LoVerso). The copyright notice for
- * that work is preserved below, even though it may not rightly apply
- * to this file.
- *
- * This started out as a very simple program, but the incremental decoding
- * (into the BE structure) complicated things.
- *
- # Los Alamos National Laboratory
- #
- # Copyright, 1990. The Regents of the University of California.
- # This software was produced under a U.S. Government contract
- # (W-7405-ENG-36) by Los Alamos National Laboratory, which is
- # operated by the University of California for the U.S. Department
- # of Energy. The U.S. Government is licensed to use, reproduce,
- # and distribute this software. Permission is granted to the
- # public to copy and use this software without charge, provided
- # that this Notice and any statement of authorship are reproduced
- # on all copies. Neither the Government nor the University makes
- # any warranty, express or implied, or assumes any liability or
- # responsibility for the use of this software.
- # @(#)snmp.awk.x 1.1 (LANL) 1/15/90
- */
-#ifndef lint
-static char rcsid[] =
- "@(#) $Id: print-snmp.c,v 3.10 91/01/17 01:18:13 loverso Exp Locker: loverso $ (jlv)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include <stdio.h>
-#include <ctype.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-/*
- * Universal ASN.1 types
- * (we only care about the tag values for those allowed in the Internet SMI)
- */
-char *Universal[] = {
- "U-0",
- "Boolean",
- "Integer",
-#define INTEGER 2
- "Bitstring",
- "String",
-#define STRING 4
- "Null",
-#define ASN_NULL 5
- "ObjID",
-#define OBJECTID 6
- "ObjectDes",
- "U-8","U-9","U-10","U-11", /* 8-11 */
- "U-12","U-13","U-14","U-15", /* 12-15 */
- "Sequence",
-#define SEQUENCE 16
- "Set"
-};
-
-/*
- * Application-wide ASN.1 types from the Internet SMI and their tags
- */
-char *Application[] = {
- "IpAddress",
-#define IPADDR 0
- "Counter",
-#define COUNTER 1
- "Gauge",
-#define GAUGE 2
- "TimeTicks",
-#define TIMETICKS 3
- "Opaque"
-};
-
-/*
- * Context-specific ASN.1 types for the SNMP PDUs and their tags
- */
-char *Context[] = {
- "GetRequest",
-#define GETREQ 0
- "GetNextRequest",
-#define GETNEXTREQ 1
- "GetResponse",
-#define GETRESP 2
- "SetRequest",
-#define SETREQ 3
- "Trap"
-#define TRAP 4
-};
-
-/*
- * Private ASN.1 types
- * The Internet SMI does not specify any
- */
-char *Private[] = {
- "P-0"
-};
-
-/*
- * error-status values for any SNMP PDU
- */
-char *ErrorStatus[] = {
- "noError",
- "tooBig",
- "noSuchName",
- "badValue",
- "readOnly",
- "genErr"
-};
-#define DECODE_ErrorStatus(e) \
- ( e >= 0 && e <= sizeof(ErrorStatus)/sizeof(ErrorStatus[0]) \
- ? ErrorStatus[e] : (sprintf(errbuf, "err=%d", e), errbuf))
-
-/*
- * generic-trap values in the SNMP Trap-PDU
- */
-char *GenericTrap[] = {
- "coldStart",
- "warmStart",
- "linkDown",
- "linkUp",
- "authenticationFailure",
- "egpNeighborLoss",
- "enterpriseSpecific"
-#define GT_ENTERPRISE 7
-};
-#define DECODE_GenericTrap(t) \
- ( t >= 0 && t <= sizeof(GenericTrap)/sizeof(GenericTrap[0]) \
- ? GenericTrap[t] : (sprintf(buf, "gt=%d", t), buf))
-
-/*
- * ASN.1 type class table
- * Ties together the preceding Universal, Application, Context, and Private
- * type definitions.
- */
-#define defineCLASS(x) { "x", x, sizeof(x)/sizeof(x[0]) } /* not ANSI-C */
-struct {
- char *name;
- char **Id;
- int numIDs;
-} Class[] = {
- defineCLASS(Universal),
-#define UNIVERSAL 0
- defineCLASS(Application),
-#define APPLICATION 1
- defineCLASS(Context),
-#define CONTEXT 2
- defineCLASS(Private),
-#define PRIVATE 3
-};
-
-/*
- * defined forms for ASN.1 types
- */
-char *Form[] = {
- "Primitive",
-#define PRIMITIVE 0
- "Constructed",
-#define CONSTRUCTED 1
-};
-
-/*
- * A structure for the OID tree for the compiled-in MIB.
- * This is stored as a general-order tree.
- */
-struct obj {
- char *desc; /* name of object */
- u_char oid; /* sub-id following parent */
- u_char type; /* object type (unused) */
- struct obj *child, *next; /* child and next sibling pointers */
-} *objp = NULL;
-
-/*
- * Include the compiled in SNMP MIB. "mib.h" is produced by feeding
- * RFC-1156 format files into "makemib". "mib.h" MUST define at least
- * a value for `mibroot'.
- *
- * In particular, this is gross, as this is including initialized structures,
- * and by right shouldn't be an "include" file.
- */
-#include "mib.h"
-
-/*
- * This defines a list of OIDs which will be abbreviated on output.
- * Currently, this includes the prefixes for the Internet MIB, the
- * private enterprises tree, and the experimental tree.
- */
-struct obj_abrev {
- char *prefix; /* prefix for this abrev */
- struct obj *node; /* pointer into object table */
- char *oid; /* ASN.1 encoded OID */
-} obj_abrev_list[] = {
-#ifndef NO_ABREV_MIB
- /* .iso.org.dod.internet.mgmt.mib */
- { "", &_mib_obj, "\53\6\1\2\1" },
-#endif
-#ifndef NO_ABREV_ENTER
- /* .iso.org.dod.internet.private.enterprises */
- { "E:", &_enterprises_obj, "\53\6\1\4\1" },
-#endif
-#ifndef NO_ABREV_EXPERI
- /* .iso.org.dod.internet.experimental */
- { "X:", &_experimental_obj, "\53\6\1\3" },
-#endif
- { 0,0,0 }
-};
-
-/*
- * This is used in the OID print routine to walk down the object tree
- * rooted at `mibroot'.
- */
-#define OBJ_PRINT(o, suppressdot) \
-{ \
- if (objp) { \
- do { \
- if ((o) == objp->oid) \
- break; \
- } while ((objp = objp->next) != NULL); \
- } \
- if (objp) { \
- printf(suppressdot?"%s":".%s", objp->desc); \
- objp = objp->child; \
- } else \
- printf(suppressdot?"%u":".%u", (o)); \
-}
-
-/*
- * This is the definition for the Any-Data-Type storage used purely for
- * temporary internal representation while decoding an ASN.1 data stream.
- */
-struct be {
- u_long asnlen;
- union {
- caddr_t raw;
- long integer;
- u_long uns;
- const u_char *str;
- } data;
- u_char form, class, id; /* tag info */
- u_char type;
-#define BE_ANY 255
-#define BE_NONE 0
-#define BE_NULL 1
-#define BE_OCTET 2
-#define BE_OID 3
-#define BE_INT 4
-#define BE_UNS 5
-#define BE_STR 6
-#define BE_SEQ 7
-#define BE_INETADDR 8
-#define BE_PDU 9
-};
-
-/*
- * Defaults for SNMP PDU components
- */
-#define DEF_COMMUNITY "public"
-#define DEF_VERSION 0
-
-/*
- * constants for ASN.1 decoding
- */
-#define OIDMUX 40
-#define ASNLEN_INETADDR 4
-#define ASN_SHIFT7 7
-#define ASN_SHIFT8 8
-#define ASN_BIT8 0x80
-#define ASN_LONGLEN 0x80
-
-#define ASN_ID_BITS 0x1f
-#define ASN_FORM_BITS 0x20
-#define ASN_FORM_SHIFT 5
-#define ASN_CLASS_BITS 0xc0
-#define ASN_CLASS_SHIFT 6
-
-#define ASN_ID_EXT 0x1f /* extension ID in tag field */
-
-/*
- * truncated==1 means the packet was complete, but we don't have all of
- * it to decode.
- */
-static int truncated;
-#define ifNotTruncated if (truncated) fputs("[|snmp]", stdout); else
-
-/*
- * This decodes the next ASN.1 object in the stream pointed to by "p"
- * (and of real-length "len") and stores the intermediate data in the
- * provided BE object.
- *
- * This returns -l if it fails (i.e., the ASN.1 stream is not valid).
- * O/w, this returns the number of bytes parsed from "p".
- */
-static int
-asn1_parse(register const u_char *p, int len, struct be *elem)
-{
- u_char form, class, id;
- int i, hdr;
-
- elem->asnlen = 0;
- elem->type = BE_ANY;
- if (len < 1) {
- ifNotTruncated puts("[nothing to parse], stdout");
- return -1;
- }
-
- /*
- * it would be nice to use a bit field, but you can't depend on them.
- * +---+---+---+---+---+---+---+---+
- * + class |frm| id |
- * +---+---+---+---+---+---+---+---+
- * 7 6 5 4 3 2 1 0
- */
- id = *p & ASN_ID_BITS; /* lower 5 bits, range 00-1f */
-#ifdef notdef
- form = (*p & 0xe0) >> 5; /* move upper 3 bits to lower 3 */
- class = form >> 1; /* bits 7&6 -> bits 1&0, range 0-3 */
- form &= 0x1; /* bit 5 -> bit 0, range 0-1 */
-#else
- form = (*p & ASN_FORM_BITS) >> ASN_FORM_SHIFT;
- class = (*p & ASN_CLASS_BITS) >> ASN_CLASS_SHIFT;
-#endif
- elem->form = form;
- elem->class = class;
- elem->id = id;
- if (vflag)
- printf("|%.2x", *p);
- p++; len--; hdr = 1;
- /* extended tag field */
- if (id == ASN_ID_EXT) {
- for (id = 0; *p & ASN_BIT8 && len > 0; len--, hdr++, p++) {
- if (vflag)
- printf("|%.2x", *p);
- id += *p & ~ASN_BIT8;
- }
- if (len == 0 && *p & ASN_BIT8) {
- ifNotTruncated fputs("[Xtagfield?]", stdout);
- return -1;
- }
- }
- if (len < 1) {
- ifNotTruncated fputs("[no asnlen]", stdout);
- return -1;
- }
- elem->asnlen = *p;
- if (vflag)
- printf("|%.2x", *p);
- p++; len--; hdr++;
- if (elem->asnlen & ASN_BIT8) {
- int noct = elem->asnlen % ASN_BIT8;
- elem->asnlen = 0;
- if (len < noct) {
- ifNotTruncated printf("[asnlen? %d<%d]", len, noct);
- return -1;
- }
- for (; noct-- > 0; len--, hdr++) {
- if (vflag)
- printf("|%.2x", *p);
- elem->asnlen = (elem->asnlen << ASN_SHIFT8) | *p++;
- }
- }
- if (len < elem->asnlen) {
- if (!truncated) {
- printf("[len%d<asnlen%u]", len, elem->asnlen);
- return -1;
- }
- /* maybe should check at least 4? */
- elem->asnlen = len;
- }
- if (form >= sizeof(Form)/sizeof(Form[0])) {
- ifNotTruncated printf("[form?%d]", form);
- return -1;
- }
- if (class >= sizeof(Class)/sizeof(Class[0])) {
- ifNotTruncated printf("[class?%c/%d]", *Form[form], class);
- return -1;
- }
- if (id >= Class[class].numIDs) {
- ifNotTruncated printf("[id?%c/%s/%d]", *Form[form],
- Class[class].name, id);
- return -1;
- }
-
- switch (form) {
- case PRIMITIVE:
- switch (class) {
- case UNIVERSAL:
- switch (id) {
- case STRING:
- elem->type = BE_STR;
- elem->data.str = p;
- break;
-
- case INTEGER: {
- register long data;
- elem->type = BE_INT;
- data = 0;
-
- if (*p & ASN_BIT8) /* negative */
- data = -1;
- for (i = elem->asnlen; i-- > 0; p++)
- data = (data << ASN_SHIFT8) | *p;
- elem->data.integer = data;
- break;
- }
-
- case OBJECTID:
- elem->type = BE_OID;
- elem->data.raw = (caddr_t)p;
- break;
-
- case ASN_NULL:
- elem->type = BE_NULL;
- elem->data.raw = NULL;
- break;
-
- default:
- elem->type = BE_OCTET;
- elem->data.raw = (caddr_t)p;
- printf("[P/U/%s]",
- Class[class].Id[id]);
- break;
- }
- break;
-
- case APPLICATION:
- switch (id) {
- case IPADDR:
- elem->type = BE_INETADDR;
- elem->data.raw = (caddr_t)p;
- break;
-
- case COUNTER:
- case GAUGE:
- case TIMETICKS: {
- register u_long data;
- elem->type = BE_UNS;
- data = 0;
- for (i = elem->asnlen; i-- > 0; p++)
- data = (data << 8) + *p;
- elem->data.uns = data;
- break;
- }
-
- default:
- elem->type = BE_OCTET;
- elem->data.raw = (caddr_t)p;
- printf("[P/A/%s]",
- Class[class].Id[id]);
- break;
- }
- break;
-
- default:
- elem->type = BE_OCTET;
- elem->data.raw = (caddr_t)p;
- printf("[P/%s/%s]",
- Class[class].name, Class[class].Id[id]);
- break;
- }
- break;
-
- case CONSTRUCTED:
- switch (class) {
- case UNIVERSAL:
- switch (id) {
- case SEQUENCE:
- elem->type = BE_SEQ;
- elem->data.raw = (caddr_t)p;
- break;
-
- default:
- elem->type = BE_OCTET;
- elem->data.raw = (caddr_t)p;
- printf("C/U/%s", Class[class].Id[id]);
- break;
- }
- break;
-
- case CONTEXT:
- elem->type = BE_PDU;
- elem->data.raw = (caddr_t)p;
- break;
-
- default:
- elem->type = BE_OCTET;
- elem->data.raw = (caddr_t)p;
- printf("C/%s/%s",
- Class[class].name, Class[class].Id[id]);
- break;
- }
- break;
- }
- p += elem->asnlen;
- len -= elem->asnlen;
- return elem->asnlen + hdr;
-}
-
-/*
- * Display the ASN.1 object represented by the BE object.
- * This used to be an integral part of asn1_parse() before the intermediate
- * BE form was added.
- */
-static void
-asn1_print(struct be *elem)
-{
- u_char *p = (u_char *)elem->data.raw;
- u_long asnlen = elem->asnlen;
- int i;
-
- switch (elem->type) {
-
- case BE_OCTET:
- for (i = asnlen; i-- > 0; p++);
- printf("_%.2x", *p);
- break;
-
- case BE_NULL:
- break;
-
- case BE_OID: {
- int o = 0, first = -1, i = asnlen;
-
- if (!nflag && asnlen > 2) {
- struct obj_abrev *a = &obj_abrev_list[0];
- for (; a->node; a++) {
- if (!bcmp(a->oid, (char *)p, strlen(a->oid))) {
- objp = a->node->child;
- i -= strlen(a->oid);
- p += strlen(a->oid);
- fputs(a->prefix, stdout);
- first = 1;
- break;
- }
- }
- }
- for (; i-- > 0; p++) {
- o = (o << ASN_SHIFT7) + (*p & ~ASN_BIT8);
- if (*p & ASN_LONGLEN)
- continue;
-
- /*
- * first subitem encodes two items with 1st*OIDMUX+2nd
- */
- if (first < 0) {
- if (!nflag)
- objp = mibroot;
- first = 0;
- OBJ_PRINT(o/OIDMUX, first);
- o %= OIDMUX;
- }
- OBJ_PRINT(o, first);
- if (--first < 0)
- first = 0;
- o = 0;
- }
- break;
- }
-
- case BE_INT:
- printf("%ld", elem->data.integer);
- break;
-
- case BE_UNS:
- printf("%ld", elem->data.uns);
- break;
-
- case BE_STR: {
- register int printable = 1, first = 1;
- const u_char *p = elem->data.str;
- for (i = asnlen; printable && i-- > 0; p++)
- printable = isprint(*p) || isspace(*p);
- p = elem->data.str;
- if (printable)
- (void)fn_print(p, p + asnlen);
- else
- for (i = asnlen; i-- > 0; p++) {
- printf(first ? "%.2x" : "_%.2x", *p);
- first = 0;
- }
- break;
- }
-
- case BE_SEQ:
- printf("Seq(%d)", elem->asnlen);
- break;
-
- case BE_INETADDR: {
- char sep;
- if (asnlen != ASNLEN_INETADDR)
- printf("[inetaddr len!=%d]", ASNLEN_INETADDR);
- sep='[';
- for (i = asnlen; i-- > 0; p++) {
- printf("%c%u", sep, *p);
- sep='.';
- }
- putchar(']');
- break;
- }
-
- case BE_PDU:
- printf("%s(%d)",
- Class[CONTEXT].Id[elem->id], elem->asnlen);
- break;
-
- case BE_ANY:
- fputs("[BE_ANY!?]", stdout);
- break;
-
- default:
- fputs("[be!?]", stdout);
- break;
- }
-}
-
-#ifdef notdef
-/*
- * This is a brute force ASN.1 printer: recurses to dump an entire structure.
- * This will work for any ASN.1 stream, not just an SNMP PDU.
- *
- * By adding newlines and spaces at the correct places, this would print in
- * Rose-Normal-Form.
- *
- * This is not currently used.
- */
-static void
-asn1_decode(u_char *p, int length)
-{
- struct be elem;
- int i = 0;
-
- while (i >= 0 && length > 0) {
- i = asn1_parse(p, length, &elem);
- if (i >= 0) {
- fputs(" ", stdout);
- asn1_print(&elem);
- if (elem.type == BE_SEQ || elem.type == BE_PDU) {
- fputs(" {", stdout);
- asn1_decode(elem.data.raw, elem.asnlen);
- fputs(" }", stdout);
- }
- length -= i;
- p += i;
- }
- }
-}
-#endif
-
-/*
- * General SNMP header
- * SEQUENCE {
- * version INTEGER {version-1(0)},
- * community OCTET STRING,
- * data ANY -- PDUs
- * }
- * PDUs for all but Trap: (see rfc1157 from page 15 on)
- * SEQUENCE {
- * request-id INTEGER,
- * error-status INTEGER,
- * error-index INTEGER,
- * varbindlist SEQUENCE OF
- * SEQUENCE {
- * name ObjectName,
- * value ObjectValue
- * }
- * }
- * PDU for Trap:
- * SEQUENCE {
- * enterprise OBJECT IDENTIFIER,
- * agent-addr NetworkAddress,
- * generic-trap INTEGER,
- * specific-trap INTEGER,
- * time-stamp TimeTicks,
- * varbindlist SEQUENCE OF
- * SEQUENCE {
- * name ObjectName,
- * value ObjectValue
- * }
- * }
- */
-
-/*
- * Decode SNMP varBind
- */
-static void
-varbind_print(u_char pduid, const u_char *np, int length, int error)
-{
- struct be elem;
- int count = 0, ind;
-
- /* Sequence of varBind */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_SEQ) {
- fputs("[!SEQ of varbind]", stdout);
- asn1_print(&elem);
- return;
- }
- if (count < length)
- printf("[%d extra after SEQ of varbind]", length - count);
- /* descend */
- length = elem.asnlen;
- np = (u_char *)elem.data.raw;
-
- for (ind = 1; length > 0; ind++) {
- const u_char *vbend;
- int vblength;
-
- if (!error || ind == error)
- fputs(" ", stdout);
-
- /* Sequence */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_SEQ) {
- fputs("[!varbind]", stdout);
- asn1_print(&elem);
- return;
- }
- vbend = np + count;
- vblength = length - count;
- /* descend */
- length = elem.asnlen;
- np = (u_char *)elem.data.raw;
-
- /* objName (OID) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_OID) {
- fputs("[objName!=OID]", stdout);
- asn1_print(&elem);
- return;
- }
- if (!error || ind == error)
- asn1_print(&elem);
- length -= count;
- np += count;
-
- if (pduid != GETREQ && pduid != GETNEXTREQ && !error)
- fputs("=", stdout);
-
- /* objVal (ANY) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (pduid == GETREQ || pduid == GETNEXTREQ) {
- if (elem.type != BE_NULL) {
- fputs("[objVal!=NULL]", stdout);
- asn1_print(&elem);
- }
- } else
- if (error && ind == error && elem.type != BE_NULL)
- fputs("[err objVal!=NULL]", stdout);
- if (!error || ind == error)
- asn1_print(&elem);
-
- length = vblength;
- np = vbend;
- }
-}
-
-/*
- * Decode SNMP PDUs: GetRequest, GetNextRequest, GetResponse, and SetRequest
- */
-static void
-snmppdu_print(u_char pduid, const u_char *np, int length)
-{
- struct be elem;
- int count = 0, error;
-
- /* reqId (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[reqId!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- /* ignore the reqId */
- length -= count;
- np += count;
-
- /* errorStatus (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[errorStatus!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- error = 0;
- if ((pduid == GETREQ || pduid == GETNEXTREQ)
- && elem.data.integer != 0) {
- char errbuf[10];
- printf("[errorStatus(%s)!=0]",
- DECODE_ErrorStatus(elem.data.integer));
- } else if (elem.data.integer != 0) {
- char errbuf[10];
- printf(" %s", DECODE_ErrorStatus(elem.data.integer));
- error = elem.data.integer;
- }
- length -= count;
- np += count;
-
- /* errorIndex (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[errorIndex!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- if ((pduid == GETREQ || pduid == GETNEXTREQ)
- && elem.data.integer != 0)
- printf("[errorIndex(%d)!=0]", elem.data.integer);
- else if (elem.data.integer != 0) {
- if (!error)
- printf("[errorIndex(%d) w/o errorStatus]",
- elem.data.integer);
- else {
- printf("@%d", elem.data.integer);
- error = elem.data.integer;
- }
- } else if (error) {
- fputs("[errorIndex==0]", stdout);
- error = 0;
- }
- length -= count;
- np += count;
-
- varbind_print(pduid, np, length, error);
- return;
-}
-
-/*
- * Decode SNMP Trap PDU
- */
-static void
-trap_print(const u_char *np, int length)
-{
- struct be elem;
- int count = 0, generic;
-
- putchar(' ');
-
- /* enterprise (oid) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_OID) {
- fputs("[enterprise!=OID]", stdout);
- asn1_print(&elem);
- return;
- }
- asn1_print(&elem);
- length -= count;
- np += count;
-
- putchar(' ');
-
- /* agent-addr (inetaddr) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INETADDR) {
- fputs("[agent-addr!=INETADDR]", stdout);
- asn1_print(&elem);
- return;
- }
- asn1_print(&elem);
- length -= count;
- np += count;
-
- /* generic-trap (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[generic-trap!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- generic = elem.data.integer;
- {
- char buf[10];
- printf(" %s", DECODE_GenericTrap(generic));
- }
- length -= count;
- np += count;
-
- /* specific-trap (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[specific-trap!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- if (generic != GT_ENTERPRISE) {
- if (elem.data.integer != 0)
- printf("[specific-trap(%d)!=0]", elem.data.integer);
- } else
- printf(" s=%d", elem.data.integer);
- length -= count;
- np += count;
-
- putchar(' ');
-
- /* time-stamp (TimeTicks) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_UNS) { /* XXX */
- fputs("[time-stamp!=TIMETICKS]", stdout);
- asn1_print(&elem);
- return;
- }
- asn1_print(&elem);
- length -= count;
- np += count;
-
- varbind_print (TRAP, np, length, 0);
- return;
-}
-
-/*
- * Decode SNMP header and pass on to PDU printing routines
- */
-void
-snmp_print(const u_char *np, int length)
-{
- struct be elem, pdu;
- int count = 0;
-
- truncated = 0;
-
- /* truncated packet? */
- if (np + length > snapend) {
- truncated = 1;
- length = snapend - np;
- }
-
- putchar(' ');
-
- /* initial Sequence */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_SEQ) {
- fputs("[!init SEQ]", stdout);
- asn1_print(&elem);
- return;
- }
- if (count < length)
- printf("[%d extra after iSEQ]", length - count);
- /* descend */
- length = elem.asnlen;
- np = (u_char *)elem.data.raw;
- /* Version (Integer) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_INT) {
- fputs("[version!=INT]", stdout);
- asn1_print(&elem);
- return;
- }
- /* only handle version==0 */
- if (elem.data.integer != DEF_VERSION) {
- printf("[version(%d)!=0]", elem.data.integer);
- return;
- }
- length -= count;
- np += count;
-
- /* Community (String) */
- if ((count = asn1_parse(np, length, &elem)) < 0)
- return;
- if (elem.type != BE_STR) {
- fputs("[comm!=STR]", stdout);
- asn1_print(&elem);
- return;
- }
- /* default community */
- if (strncmp((char *)elem.data.str, DEF_COMMUNITY,
- sizeof(DEF_COMMUNITY) - 1))
- /* ! "public" */
- printf("C=%.*s ", (int)elem.asnlen, elem.data.str);
- length -= count;
- np += count;
-
- /* PDU (Context) */
- if ((count = asn1_parse(np, length, &pdu)) < 0)
- return;
- if (pdu.type != BE_PDU) {
- fputs("[no PDU]", stdout);
- return;
- }
- if (count < length)
- printf("[%d extra after PDU]", length - count);
- asn1_print(&pdu);
- /* descend into PDU */
- length = pdu.asnlen;
- np = (u_char *)pdu.data.raw;
-
- switch (pdu.id) {
- case TRAP:
- trap_print(np, length);
- break;
- case GETREQ:
- case GETNEXTREQ:
- case GETRESP:
- case SETREQ:
- snmppdu_print(pdu.id, np, length);
- break;
- }
- return;
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-sunrpc.c b/usr.sbin/tcpdump/tcpdump/print-sunrpc.c
deleted file mode 100644
index 938d4b0..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-sunrpc.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: print-sunrpc.c,v 1.12 94/06/14 20:18:48 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <net/if.h>
-
-#include <netinet/in.h>
-#include <netinet/if_ether.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-
-#ifdef SOLARIS
-#include <tiuser.h>
-#endif
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-#include <rpc/auth.h>
-#include <rpc/auth_unix.h>
-#include <rpc/svc.h>
-#include <rpc/rpc_msg.h>
-#include <rpc/pmap_prot.h>
-
-#include <ctype.h>
-#include <errno.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "extract.h" /* must come after interface.h */
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-static void bswap(u_int32 *, u_int);
-#endif
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-/*
- * Byte swap an array of n 32-bit words.
- * Assume input is word-aligned.
- * Check that buffer is bounded by "snapend".
- */
-static void
-bswap(register u_int32 *bp, register u_int n)
-{
- register int nwords = ((char *)snapend - (char *)bp) / sizeof(*bp);
-
- if (nwords > n)
- nwords = n;
- for (; --nwords >= 0; ++bp)
- *bp = ntohl(*bp);
-}
-#endif
-
-static struct token proc2str[] = {
- { PMAPPROC_NULL, "null" },
- { PMAPPROC_SET, "set" },
- { PMAPPROC_UNSET, "unset" },
- { PMAPPROC_GETPORT, "getport" },
- { PMAPPROC_DUMP, "dump" },
- { PMAPPROC_CALLIT, "call" },
- { 0, NULL }
-};
-
-void
-sunrpcrequest_print(register const u_char *bp, register int length,
- register const u_char *bp2)
-{
- register const struct rpc_msg *rp;
- register const struct ip *ip;
-
- rp = (struct rpc_msg *)bp;
- ip = (struct ip *)bp2;
-
- if (!nflag)
- (void)printf("%s.%x > %s.sunrpc: %d",
- ipaddr_string(&ip->ip_src),
- ntohl(rp->rm_xid),
- ipaddr_string(&ip->ip_dst),
- length);
- else
- (void)printf("%s.%x > %s.%x: %d",
- ipaddr_string(&ip->ip_src),
- ntohl(rp->rm_xid),
- ipaddr_string(&ip->ip_dst),
- PMAPPORT,
- length);
- printf(" %s", tok2str(proc2str, " proc #%d",
- ntohl(rp->rm_call.cb_proc)));
-}
-
diff --git a/usr.sbin/tcpdump/tcpdump/print-tcp.c b/usr.sbin/tcpdump/tcpdump/print-tcp.c
deleted file mode 100644
index 7d5d65c..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-tcp.c
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/print-tcp.c,v 1.3 1995/03/08 13:13:01 olah Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/tcp.h>
-#include <netinet/tcpip.h>
-
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <unistd.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-#ifndef TCPOPT_WSCALE
-#define TCPOPT_WSCALE 3 /* window scale factor (rfc1072) */
-#endif
-#ifndef TCPOPT_SACKOK
-#define TCPOPT_SACKOK 4 /* selective ack ok (rfc1072) */
-#endif
-#ifndef TCPOPT_SACK
-#define TCPOPT_SACK 5 /* selective ack (rfc1072) */
-#endif
-#ifndef TCPOPT_ECHO
-#define TCPOPT_ECHO 6 /* echo (rfc1072) */
-#endif
-#ifndef TCPOPT_ECHOREPLY
-#define TCPOPT_ECHOREPLY 7 /* echo (rfc1072) */
-#endif
-#ifndef TCPOPT_TIMESTAMP
-#define TCPOPT_TIMESTAMP 8 /* timestamps (rfc1323) */
-#endif
-#ifndef TCPOPT_CC
-#define TCPOPT_CC 11 /* connection count (rfc1644) */
-#endif
-#ifndef TCPOPT_CCNEW
-#define TCPOPT_CCNEW 12 /* connection count new (rfc1644) */
-#endif
-#ifndef TCPOPT_CCECHO
-#define TCPOPT_CCECHO 13 /* connection count echo (rfc1644) */
-#endif
-
-struct opt_table {
- int len; /* option length, zero if unknown */
- const char *nam; /* option name */
-};
-
-static struct opt_table tcp_opts[] = {
- { 1, "eol" },
- { 1, "nop" },
- { 4, "mss" },
- { 3, "wscale" },
- { 2, "sackOK" },
- { 0, "sack" }, /* XXX sack: don't know how long */
- { 6, "echo" },
- { 6, "echoreply" },
- {10, "timestamp" },
- { 0, "opt-%d:" },
- { 0, "opt-%d:" },
- { 6, "cc" },
- { 6, "ccnew" },
- { 6, "ccecho" },
- { 0, "opt-%d:" }, /* last entry must be an unknown option */
-};
-#define MAXTCPOPT (sizeof(tcp_opts)/sizeof(tcp_opts[0])-1)
-
-struct tha {
- struct in_addr src;
- struct in_addr dst;
- u_int port;
-};
-
-struct tcp_seq_hash {
- struct tcp_seq_hash *nxt;
- struct tha addr;
- tcp_seq seq;
- tcp_seq ack;
-};
-
-#define TSEQ_HASHSIZE 919
-
-static struct tcp_seq_hash tcp_seq_hash[TSEQ_HASHSIZE];
-
-
-void
-tcp_print(register const u_char *bp, register int length,
- register const u_char *bp2)
-{
- register const struct tcphdr *tp;
- register const struct ip *ip;
- register u_char flags;
- register int hlen;
- u_short sport, dport, win, urp;
- u_int32 seq, ack;
-
- tp = (struct tcphdr *)bp;
- ip = (struct ip *)bp2;
- if ((const u_char *)(tp + 1) > snapend) {
- printf("[|tcp]");
- return;
- }
- if (length < sizeof(struct tcphdr)) {
- (void)printf("truncated-tcp %d", length);
- return;
- }
-
- sport = ntohs(tp->th_sport);
- dport = ntohs(tp->th_dport);
- seq = ntohl(tp->th_seq);
- ack = ntohl(tp->th_ack);
- win = ntohs(tp->th_win);
- urp = ntohs(tp->th_urp);
-
- (void)printf("%s.%s > %s.%s: ",
- ipaddr_string(&ip->ip_src), tcpport_string(sport),
- ipaddr_string(&ip->ip_dst), tcpport_string(dport));
-
- if (qflag) {
- (void)printf("tcp %d", length - tp->th_off * 4);
- return;
- }
- if ((flags = tp->th_flags) & (TH_SYN|TH_FIN|TH_RST|TH_PUSH)) {
- if (flags & TH_SYN)
- putchar('S');
- if (flags & TH_FIN)
- putchar('F');
- if (flags & TH_RST)
- putchar('R');
- if (flags & TH_PUSH)
- putchar('P');
- } else
- putchar('.');
-
- if (!Sflag && (flags & TH_ACK)) {
- register struct tcp_seq_hash *th;
- register int rev;
- struct tha tha;
- /*
- * Find (or record) the initial sequence numbers for
- * this conversation. (we pick an arbitrary
- * collating order so there's only one entry for
- * both directions).
- */
- if (sport < dport ||
- (sport == dport &&
- ip->ip_src.s_addr < ip->ip_dst.s_addr)) {
- tha.src = ip->ip_src, tha.dst = ip->ip_dst;
- tha.port = sport << 16 | dport;
- rev = 0;
- } else {
- tha.src = ip->ip_dst, tha.dst = ip->ip_src;
- tha.port = dport << 16 | sport;
- rev = 1;
- }
-
- for (th = &tcp_seq_hash[tha.port % TSEQ_HASHSIZE];
- th->nxt; th = th->nxt)
- if (!bcmp((char *)&tha, (char *)&th->addr,
- sizeof(th->addr)))
- break;
-
- if (!th->nxt || flags & TH_SYN) {
- /* didn't find it or new conversation */
- if (!th->nxt)
- th->nxt = (struct tcp_seq_hash *)
- calloc(1, sizeof (*th));
- th->addr = tha;
- if (rev)
- th->ack = seq, th->seq = ack - 1;
- else
- th->seq = seq, th->ack = ack - 1;
- } else {
- if (rev)
- seq -= th->ack, ack -= th->seq;
- else
- seq -= th->seq, ack -= th->ack;
- }
- }
- hlen = tp->th_off * 4;
- length -= hlen;
- if (length > 0 || flags & (TH_SYN | TH_FIN | TH_RST))
- (void)printf(" %u:%u(%d)", seq, seq + length, length);
- if (flags & TH_ACK)
- (void)printf(" ack %u", ack);
-
- (void)printf(" win %d", win);
-
- if (flags & TH_URG)
- (void)printf(" urg %d", urp);
- /*
- * Handle any options.
- */
- if ((hlen -= sizeof(struct tcphdr)) > 0) {
- register const u_char *cp = (const u_char *)tp + sizeof(*tp);
- int i;
- char ch = '<';
- char lch = '>';
-
- putchar(' ');
- /* adjust length if necessary */
- if (cp + hlen > snapend) {
- hlen = snapend - cp;
- lch = '|';
- }
- while (hlen > 0) {
- register struct opt_table *opt;
-
- putchar(ch);
- ch = ',';
-
- opt = *cp < MAXTCPOPT ?
- &tcp_opts[*cp] : &tcp_opts[MAXTCPOPT];
- (void)printf(opt->nam, *cp);
-
- /* eol and nop have no length */
- if (opt->len == 1) {
- hlen--, cp++;
- continue;
- }
- /* quit if options are truncated */
- if ((hlen == 1) ||
- (opt->len != 0 && hlen < opt->len) ||
- (opt->len == 0 && hlen < *(cp + 1))) {
- lch = '|';
- break;
- }
- /* check if optlen in segment is what we assume */
- if (opt->len != 0 && *(cp + 1) != opt->len) {
- register int l = *(cp + 1);
-
- (void)printf("[len %d]", l);
- hlen -= l;
- cp += l;
- continue;
- }
-
- /* print the option body */
- switch (*cp) {
- case TCPOPT_MAXSEG:
- (void)printf(" %d", cp[2] << 8 | cp[3]);
- break;
- case TCPOPT_WSCALE:
- (void)printf(" %d", cp[2]);
- break;
- case TCPOPT_SACKOK:
- break;
- case TCPOPT_ECHO:
- case TCPOPT_ECHOREPLY:
- case TCPOPT_CC:
- case TCPOPT_CCNEW:
- case TCPOPT_CCECHO:
- (void)printf(" %lu",
- cp[2] << 24 | cp[3] << 16 |
- cp[4] << 8 | cp[5]);
- break;
- case TCPOPT_TIMESTAMP:
- (void)printf(" %lu %lu",
- cp[2] << 24 | cp[3] << 16 |
- cp[4] << 8 | cp[5],
- cp[6] << 24 | cp[7] << 16 |
- cp[8] << 8 | cp[9]);
- break;
- default:
- hlen -= *++cp;
- for (i = *cp++ - 2; i > 0; --i)
- (void)printf("%02x", *cp++);
- break;
- }
- /* adjust length */
- hlen -= opt->len;
- cp += opt->len;
- }
- putchar(lch);
- }
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-tftp.c b/usr.sbin/tcpdump/tcpdump/print-tftp.c
deleted file mode 100644
index 8771cbf..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-tftp.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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.
- *
- * Format and print trivial file transfer protocol packets.
- */
-
-#ifndef lint
-static char rcsid[] =
- "@(#) $Header: print-tftp.c,v 1.20 94/06/14 20:18:49 leres Exp $ (LBL)";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-
-#include <netinet/in.h>
-
-#include <arpa/tftp.h>
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-/* op code to string mapping */
-static struct token op2str[] = {
- { RRQ, "RRQ" }, /* read request */
- { WRQ, "WRQ" }, /* write request */
- { DATA, "DATA" }, /* data packet */
- { ACK, "ACK" }, /* acknowledgement */
- { ERROR, "ERROR" }, /* error code */
- { 0, NULL }
-};
-
-/* error code to string mapping */
-static struct token err2str[] = {
- { EUNDEF, "EUNDEF" }, /* not defined */
- { ENOTFOUND, "ENOTFOUND" }, /* file not found */
- { EACCESS, "EACCESS" }, /* access violation */
- { ENOSPACE, "ENOSPACE" }, /* disk full or allocation exceeded */
- { EBADOP, "EBADOP" }, /* illegal TFTP operation */
- { EBADID, "EBADID" }, /* unknown transfer ID */
- { EEXISTS, "EEXISTS" }, /* file already exists */
- { ENOUSER, "ENOUSER" }, /* no such user */
- { 0, NULL }
-};
-
-/*
- * Print trivial file transfer program requests
- */
-void
-tftp_print(register const u_char *bp, int length)
-{
- register const struct tftphdr *tp;
- register const char *cp;
- register const u_char *ep, *p;
- register int opcode;
-#define TCHECK(var, l) if ((u_char *)&(var) > ep - l) goto trunc
- static char tstr[] = " [|tftp]";
-
- tp = (const struct tftphdr *)bp;
- /* 'ep' points to the end of avaible data. */
- ep = snapend;
-
- /* Print length */
- printf(" %d", length);
-
- /* Print tftp request type */
- TCHECK(tp->th_opcode, sizeof(tp->th_opcode));
- opcode = ntohs(tp->th_opcode);
- cp = tok2str(op2str, "tftp-#%d", opcode);
- printf(" %s", cp);
- /* Bail if bogus opcode */
- if (*cp == 't')
- return;
-
- switch (opcode) {
-
- case RRQ:
- case WRQ:
- putchar(' ');
- /*
- * XXX Not all arpa/tftp.h's specify th_stuff as any
- * array; use address of th_block instead
- */
-#ifdef notdef
- p = (u_char *)tp->th_stuff;
-#else
- p = (u_char *)&tp->th_block;
-#endif
- if (fn_print(p, ep)) {
- fputs(&tstr[1], stdout);
- return;
- }
- break;
-
- case DATA:
- TCHECK(tp->th_block, sizeof(tp->th_block));
- printf(" block %d", ntohs(tp->th_block));
- break;
-
- case ACK:
- break;
-
- case ERROR:
- /* Print error code string */
- TCHECK(tp->th_code, sizeof(tp->th_code));
- printf(" %s ", tok2str(err2str, "tftp-err-#%d",
- ntohs(tp->th_code)));
- /* Print error message string */
- if (fn_print((const u_char *)tp->th_data, ep)) {
- fputs(&tstr[1], stdout);
- return;
- }
- break;
-
- default:
- /* We shouldn't get here */
- printf("(unknown #%d)", opcode);
- break;
- }
- return;
-trunc:
- fputs(tstr, stdout);
-#undef TCHECK
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-udp.c b/usr.sbin/tcpdump/tcpdump/print-udp.c
deleted file mode 100644
index d6c597c..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-udp.c
+++ /dev/null
@@ -1,271 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "$Id: print-udp.c,v 1.4 1995/08/29 19:48:11 wollman Exp $";
-#endif
-
-#include <sys/param.h>
-#include <sys/time.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-#include <netinet/in_systm.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/udp.h>
-#include <netinet/udp_var.h>
-
-#undef NOERROR /* Solaris sucks */
-#include <arpa/nameser.h>
-#include <arpa/tftp.h>
-
-#ifdef SOLARIS
-#include <tiuser.h>
-#endif
-#include <rpc/types.h>
-#include <rpc/xdr.h>
-#include <rpc/auth.h>
-#include <rpc/auth_unix.h>
-#include <rpc/svc.h>
-#include <rpc/rpc_msg.h>
-
-#include <errno.h>
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-#include "appletalk.h"
-
-#include "nfs.h"
-#include "bootp.h"
-
-extern int packettype;
-
-static void
-vat_print(const void *hdr, int len, register const struct udphdr *up)
-{
- /* vat/vt audio */
- u_int ts = *(u_short *)hdr;
- if ((ts & 0xf060) != 0) {
- /* probably vt */
- (void)printf(" udp/vt %d %d / %d",
- ntohs(up->uh_ulen) - sizeof(*up),
- ts & 0x3ff, ts >> 10);
- } else {
- /* probably vat */
- u_int i0 = ((u_int *)hdr)[0];
- u_int i1 = ((u_int *)hdr)[1];
- printf(" udp/vat %d c%d %u%s",
- ntohs(up->uh_ulen) - sizeof(*up) - 8,
- i0 & 0xffff,
- i1, i0 & 0x800000? "*" : "");
- /* audio format */
- if (i0 & 0x1f0000)
- printf(" f%d", (i0 >> 16) & 0x1f);
- if (i0 & 0x3f000000)
- printf(" s%d", (i0 >> 24) & 0x3f);
- }
-}
-
-static void
-rtp_print(const void *hdr, int len, register const struct udphdr *up)
-{
- /* rtp v1 video */
- u_int *ip = (u_int *)hdr;
- u_int i0 = ((u_int *)hdr)[0];
- u_int i1 = ((u_int *)hdr)[1];
- u_int hasopt = i0 & 0x800000;
- u_int contype = (i0 >> 16) & 0x3f;
- printf(" udp/rtp %d c%d %s%s %d",
- ntohs(up->uh_ulen) - sizeof(*up) - 8,
- contype,
- hasopt? "+" : "",
- i0 & 0x400000? "*" : "",
- i0 & 0xffff);
- if (contype == 31) {
- ip += 2;
- len >>= 2;
- len -= 2;
- if (hasopt) {
- u_int i2, optlen;
- do {
- i2 = ip[0];
- optlen = (i2 >> 16) & 0xff;
- if (optlen == 0 || optlen > len) {
- printf(" !opt");
- return;
- }
- ip += optlen;
- } while ((int)i2 >= 0);
- }
- printf(" 0x%04x", ip[0] >> 16);
- }
- if (vflag)
- printf(" %u", i1);
-}
-
-/* XXX probably should use getservbyname() and cache answers */
-#define TFTP_PORT 69 /*XXX*/
-#define KERBEROS_PORT 80 /*XXX*/
-#define SUNRPC_PORT 111 /*XXX*/
-#define SNMP_PORT 161 /*XXX*/
-#define NTP_PORT 123 /*XXX*/
-#define SNMPTRAP_PORT 162 /*XXX*/
-#define RIP_PORT 520 /*XXX*/
-#define KERBEROS_SEC_PORT 750 /*XXX*/
-#define RSVP_ENCAP_PORT 3455 /*XXX*/
-
-void
-udp_print(register const u_char *bp, int length, register const u_char *bp2)
-{
- register const struct udphdr *up;
- register const struct ip *ip;
- register const u_char *cp;
- u_short sport, dport, ulen;
-
- up = (struct udphdr *)bp;
- ip = (struct ip *)bp2;
- cp = (u_char *)(up + 1);
- if (cp > snapend) {
- printf("[|udp]");
- return;
- }
- if (length < sizeof(struct udphdr)) {
- (void)printf(" truncated-udp %d", length);
- return;
- }
- length -= sizeof(struct udphdr);
-
- sport = ntohs(up->uh_sport);
- dport = ntohs(up->uh_dport);
- ulen = ntohs(up->uh_ulen);
- if (packettype) {
- register struct rpc_msg *rp;
- enum msg_type direction;
-
- switch (packettype) {
- case 1:
- (void)printf("%s.%s > %s.%s:",
- ipaddr_string(&ip->ip_src),
- udpport_string(sport),
- ipaddr_string(&ip->ip_dst),
- udpport_string(dport));
- vat_print((void *)(up + 1), length, up);
- break;
- case 2:
- (void)printf("%s.%s > %s.%s:",
- ipaddr_string(&ip->ip_src),
- udpport_string(sport),
- ipaddr_string(&ip->ip_dst),
- udpport_string(dport));
- wb_print((void *)(up + 1), length);
- break;
- case 3:
- rp = (struct rpc_msg *)(up + 1);
- direction = (enum msg_type)ntohl(rp->rm_direction);
- if (direction == CALL)
- sunrpcrequest_print((u_char *)rp, length,
- (u_char *)ip);
- else
- nfsreply_print((u_char *)rp, length,
- (u_char *)ip); /*XXX*/
- break;
- case 4:
- (void)printf("%s.%s > %s.%s:",
- ipaddr_string(&ip->ip_src),
- udpport_string(sport),
- ipaddr_string(&ip->ip_dst),
- udpport_string(dport));
- rtp_print((void *)(up + 1), length, up);
- break;
- }
- return;
- }
-
- if (! qflag) {
- register struct rpc_msg *rp;
- enum msg_type direction;
-
- rp = (struct rpc_msg *)(up + 1);
- direction = (enum msg_type)ntohl(rp->rm_direction);
- if (dport == NFS_PORT && direction == CALL) {
- nfsreq_print((u_char *)rp, length, (u_char *)ip);
- return;
- }
- else if (sport == NFS_PORT && direction == REPLY) {
- nfsreply_print((u_char *)rp, length, (u_char *)ip);
- return;
- }
-#ifdef notdef
- else if (dport == SUNRPC_PORT && direction == CALL) {
- sunrpcrequest_print((u_char *)rp, length, (u_char *)ip);
- return;
- }
-#endif
- else if (((struct LAP *)cp)->type == lapDDP &&
- (atalk_port(sport) || atalk_port(dport))) {
- if (vflag)
- fputs("kip ", stdout);
- atalk_print(cp, length);
- return;
- }
- }
- (void)printf("%s.%s > %s.%s:",
- ipaddr_string(&ip->ip_src), udpport_string(sport),
- ipaddr_string(&ip->ip_dst), udpport_string(dport));
-
- if (!qflag) {
-#define ISPORT(p) (dport == (p) || sport == (p))
- if (ISPORT(NAMESERVER_PORT))
- ns_print((const u_char *)(up + 1), length);
- else if (ISPORT(TFTP_PORT))
- tftp_print((const u_char *)(up + 1), length);
- else if (ISPORT(IPPORT_BOOTPC) || ISPORT(IPPORT_BOOTPS))
- bootp_print((const u_char *)(up + 1), length,
- sport, dport);
- else if (dport == RIP_PORT)
- rip_print((const u_char *)(up + 1), length);
- else if (ISPORT(SNMP_PORT) || ISPORT(SNMPTRAP_PORT))
- snmp_print((const u_char *)(up + 1), length);
- else if (ISPORT(NTP_PORT))
- ntp_print((const u_char *)(up + 1), length);
- else if (ISPORT(KERBEROS_PORT) || ISPORT(KERBEROS_SEC_PORT))
- krb_print((const void *)(up + 1), length);
-#if 0
- else if (ISPORT(RSVP_ENCAP_PORT))
- rsvpUDP_print((const u_char *)(up + 1), length);
-#endif
- else if (dport == 3456)
- vat_print((const void *)(up + 1), length, up);
- /*
- * Kludge in test for whiteboard packets.
- */
- else if (dport == 4567)
- wb_print((const void *)(up + 1), length);
- else
- (void)printf(" udp %d", ulen - sizeof(*up));
-#undef ISPORT
- } else
- (void)printf(" udp %d", ulen - sizeof(*up));
-}
diff --git a/usr.sbin/tcpdump/tcpdump/print-wb.c b/usr.sbin/tcpdump/tcpdump/print-wb.c
deleted file mode 100644
index a9322dd..0000000
--- a/usr.sbin/tcpdump/tcpdump/print-wb.c
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (c) 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: print-wb.c,v 1.14 94/06/14 20:18:50 leres Exp $ (LBL)";
-#endif
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <netinet/in.h>
-
-#include <stdio.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-/* XXX need to add byte-swapping macros! */
-
-/*
- * Largest packet size. Everything should fit within this space.
- * For instance, multiline objects are sent piecewise.
- */
-#define MAXFRAMESIZE 1024
-
-/*
- * Multiple drawing ops can be sent in one packet. Each one starts on a
- * an even multiple of DOP_ALIGN bytes, which must be a power of two.
- */
-#define DOP_ALIGN 4
-#define DOP_ROUNDUP(x) ((((int)(x)) + (DOP_ALIGN - 1)) & ~(DOP_ALIGN - 1))
-#define DOP_NEXT(d)\
- ((struct dophdr*)((u_char *)(d) + \
- DOP_ROUNDUP(ntohs((d)->dh_len) + sizeof(*(d)))))
-
-/*
- * Format of the whiteboard packet header.
- * The transport level header.
- */
-struct pkt_hdr {
- u_int32 ph_src; /* site id of source */
- u_int32 ph_ts; /* time stamp (for skew computation) */
- u_short ph_version; /* version number */
- u_char ph_type; /* message type */
- u_char ph_flags; /* message flags */
-};
-
-/* Packet types */
-#define PT_DRAWOP 0 /* drawing operation */
-#define PT_ID 1 /* announcement packet */
-#define PT_RREQ 2 /* repair request */
-#define PT_RREP 3 /* repair reply */
-#define PT_KILL 4 /* terminate participation */
-#define PT_PREQ 5 /* page vector request */
-#define PT_PREP 7 /* page vector reply */
-
-/* flags */
-#define PF_USER 0x01 /* hint that packet has interactive data */
-#define PF_VIS 0x02 /* only visible ops wanted */
-
-struct PageID {
- u_int32 p_sid; /* session id of initiator */
- u_int32 p_uid; /* page number */
-};
-
-struct dophdr {
- u_int32 dh_ts; /* sender's timestamp */
- u_short dh_len; /* body length */
- u_char dh_flags;
- u_char dh_type; /* body type */
- /* body follows */
-};
-/*
- * Drawing op sub-types.
- */
-#define DT_RECT 2
-#define DT_LINE 3
-#define DT_ML 4
-#define DT_DEL 5
-#define DT_XFORM 6
-#define DT_ELL 7
-#define DT_CHAR 8
-#define DT_STR 9
-#define DT_NOP 10
-#define DT_PSCODE 11
-#define DT_PSCOMP 12
-#define DT_REF 13
-#define DT_SKIP 14
-#define DT_HOLE 15
-#define DT_MAXTYPE 15
-
-/*
- * A drawing operation.
- */
-struct pkt_dop {
- struct PageID pd_page; /* page that operations apply to */
- u_int32 pd_sseq; /* start sequence number */
- u_int32 pd_eseq; /* end sequence number */
- /* drawing ops follow */
-};
-
-/*
- * A repair request.
- */
-struct pkt_rreq {
- u_int32 pr_id; /* source id of drawops to be repaired */
- struct PageID pr_page; /* page of drawops */
- u_int32 pr_sseq; /* start seqno */
- u_int32 pr_eseq; /* end seqno*/
-};
-
-/*
- * A repair reply.
- */
-struct pkt_rrep {
- u_int32 pr_id; /* original site id of ops */
- struct pkt_dop pr_dop;
- /* drawing ops follow */
-};
-
-struct id_off {
- u_int32 id;
- u_int32 off;
-};
-
-struct pgstate {
- u_int32 slot;
- struct PageID page;
- u_short nid;
- u_short rsvd;
- /* seqptr's */
-};
-
-/*
- * An announcement packet.
- */
-struct pkt_id {
- u_int32 pi_mslot;
- struct PageID pi_mpage; /* current page */
- struct pgstate pi_ps;
- /* seqptr's */
- /* null-terminated site name */
-};
-
-struct pkt_preq {
- struct PageID pp_page;
- u_int32 pp_low;
- u_int32 pp_high;
-};
-
-struct pkt_prep {
- u_int32 pp_n; /* size of pageid array */
- /* pgstate's follow */
-};
-
-static int
-wb_id(const struct pkt_id *id, int len)
-{
- int i;
- const char *cp;
- const struct id_off *io;
- char c;
- int nid;
-
- len -= sizeof(*id);
- if (len < 0) {
- printf(" truncated-wb-id!");
- return (0);
- }
- if ((u_char *)(id + 1) > snapend)
- return (-1);
- nid = ntohs(id->pi_ps.nid);
- len -= sizeof(*io) * nid;
- if (len < 0) {
- printf(" truncated-wb-id!");
- return (0);
- }
- io = (struct id_off *)(id + 1);
- cp = (char *)(io + nid);
- if ((u_char *)cp + len > snapend)
- return (-1);
-
- printf(" wb-id: %d/%s:%d (max %d/%s:%d) ",
- ntohl(id->pi_ps.slot),
- ipaddr_string(&id->pi_ps.page.p_sid),
- ntohl(id->pi_ps.page.p_uid),
- ntohl(id->pi_mslot),
- ipaddr_string(&id->pi_mpage.p_sid),
- ntohl(id->pi_mpage.p_uid));
-
- if (cp[len - 1] != '\0')
- printf("(unterm!) ");
-
- fn_print((u_char *)cp, (u_char *)cp + len);
-
- c = '<';
- for (i = 0; i < nid; ++io, ++i) {
- printf("%c%s:%d", c, ipaddr_string(&io->id), ntohl(io->off));
- c = ',';
- }
- printf(">");
- return (0);
-}
-
-static int
-wb_rreq(const struct pkt_rreq *rreq, int len)
-{
- if (len < sizeof(*rreq)) {
- printf(" truncated-wb-rreq!");
- return (0);
- }
- if ((u_char *)(rreq + 1) > snapend)
- return (-1);
-
- printf(" wb-rreq: please repair %s %s:%ld<%ld:%ld>",
- ipaddr_string(&rreq->pr_id),
- ipaddr_string(&rreq->pr_page.p_sid), ntohl(rreq->pr_page.p_uid),
- ntohl(rreq->pr_sseq), ntohl(rreq->pr_eseq));
- return (0);
-}
-
-static int
-wb_preq(const struct pkt_preq *preq, int len)
-{
- if (len < sizeof(*preq)) {
- printf(" truncated-wb-preq!");
- return (0);
- }
- if ((u_char *)(preq + 1) > snapend)
- return (-1);
-
- printf(" wb-preq: need %d/%s:%ld",
- ntohl(preq->pp_low),
- ipaddr_string(&preq->pp_page.p_sid),
- ntohl(preq->pp_page.p_uid));
- return (0);
-}
-
-static int
-wb_prep(const struct pkt_prep *prep, int len)
-{
- int n;
- const struct pgstate* ps;
- const u_char* ep = snapend;
-
- if (len < sizeof(*prep)) {
- printf(" truncated-wb-prep!");
- return (0);
- }
- printf(" wb-prep:");
- n = ntohl(prep->pp_n);
- ps = (const struct pgstate*)(prep + 1);
- while (--n >= 0 && (u_char*)ps < ep) {
- const struct id_off *io, *ie;
- char c = '<';
-
- printf(" %lu/%s:%lu", ntohl(ps->slot),
- ipaddr_string(&ps->page.p_sid),
- ntohl(ps->page.p_uid));
- io = (struct id_off*)(ps + 1);
- for (ie = io + ps->nid; io < ie && (u_char*)io < ep; ++io) {
- printf("%c%s:%lu", c, ipaddr_string(&io->id),
- ntohl(io->off));
- c = ',';
- }
- printf(">");
- ps = (struct pgstate*)io;
- }
- return ((u_char*)ps <= ep? 0 : -1);
-}
-
-
-char *dopstr[] = {
- "dop-0!",
- "dop-1!",
- "RECT",
- "LINE",
- "ML",
- "DEL",
- "XFORM",
- "ELL",
- "CHAR",
- "STR",
- "NOP",
- "PSCODE",
- "PSCOMP",
- "REF",
- "SKIP",
- "HOLE",
-};
-
-static int
-wb_dops(const struct dophdr *dh, u_int32 ss, u_int32 es)
-{
- printf(" <");
- for ( ; ss <= es; ++ss) {
- register int t = dh->dh_type;
-
- if (t > DT_MAXTYPE)
- printf(" dop-%d!", t);
- else {
- printf(" %s", dopstr[t]);
- if (t == DT_SKIP || t == DT_HOLE) {
- int ts = ntohl(dh->dh_ts);
- printf("%d", ts - ss + 1);
- if (ss > ts || ts > es) {
- printf("[|]");
- if (ts < ss)
- return (0);
- }
- ss = ts;
- }
- }
- dh = DOP_NEXT(dh);
- if ((u_char*)dh >= snapend) {
- printf("[|wb]");
- break;
- }
- }
- printf(" >");
- return (0);
-}
-
-static int
-wb_rrep(const struct pkt_rrep *rrep, int len)
-{
- const struct pkt_dop *dop = &rrep->pr_dop;
-
- len -= sizeof(*rrep);
- if (len < 0) {
- printf(" truncated-wb-rrep!");
- return (0);
- }
- if ((u_char *)(rrep + 1) > snapend)
- return (-1);
-
- printf(" wb-rrep: for %s %s:%d<%ld:%ld>",
- ipaddr_string(&rrep->pr_id),
- ipaddr_string(&dop->pd_page.p_sid), ntohl(dop->pd_page.p_uid),
- ntohl(dop->pd_sseq), ntohl(dop->pd_eseq));
-
- return (wb_dops((const struct dophdr*)(dop + 1),
- ntohl(dop->pd_sseq), ntohl(dop->pd_eseq)));
-}
-
-static int
-wb_drawop(const struct pkt_dop *dop, int len)
-{
- len -= sizeof(*dop);
- if (len < 0) {
- printf(" truncated-wb-dop!");
- return (0);
- }
- if ((u_char *)(dop + 1) > snapend)
- return (-1);
-
- printf(" wb-dop: %s:%d<%ld:%ld>",
- ipaddr_string(&dop->pd_page.p_sid), ntohl(dop->pd_page.p_uid),
- ntohl(dop->pd_sseq), ntohl(dop->pd_eseq));
-
- return (wb_dops((const struct dophdr*)(dop + 1),
- ntohl(dop->pd_sseq), ntohl(dop->pd_eseq)));
-}
-
-/*
- * Print whiteboard multicast packets.
- */
-void
-wb_print(register const void *hdr, register int len)
-{
- register const struct pkt_hdr* ph;
-
- ph = (const struct pkt_hdr*)hdr;
- len -= sizeof(*ph);
- if (len < 0) {
- printf(" truncated-wb!");
- return;
- }
- if ((u_char *)(ph + 1) > snapend) {
- trunc:
- printf("[|wb]");
- return;
- }
- if (ph->ph_flags)
- printf("*");
- switch (ph->ph_type) {
-
- case PT_KILL:
- printf(" wb-kill");
- break;
-
- case PT_ID:
- if (wb_id((struct pkt_id *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- case PT_RREQ:
- if (wb_rreq((struct pkt_rreq *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- case PT_RREP:
- if (wb_rrep((struct pkt_rrep *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- case PT_DRAWOP:
- if (wb_drawop((struct pkt_dop *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- case PT_PREQ:
- if (wb_preq((struct pkt_preq *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- case PT_PREP:
- if (wb_prep((struct pkt_prep *)(ph + 1), len) < 0)
- goto trunc;
- break;
-
- default:
- printf(" wb-%d!", ph->ph_type);
- return;
- }
-}
diff --git a/usr.sbin/tcpdump/tcpdump/tcpdump.1 b/usr.sbin/tcpdump/tcpdump/tcpdump.1
deleted file mode 100644
index bef8eb2..0000000
--- a/usr.sbin/tcpdump/tcpdump/tcpdump.1
+++ /dev/null
@@ -1,1179 +0,0 @@
-.\" @(#) $Id: tcpdump.1,v 1.4 1995/09/22 17:24:51 wollman Exp $ (LBL)
-.\"
-.\" Copyright (c) 1987, 1988, 1989, 1990, 1991, 1992, 1994
-.\" The Regents of the University of California. All rights reserved.
-.\" 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 the University of California,
-.\" Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
-.\" the University nor the names of its contributors may 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.
-.\"
-.TH TCPDUMP 1 "22 Sept 1995"
-.SH NAME
-tcpdump \- dump traffic on a network
-.SH SYNOPSIS
-.na
-.B tcpdump
-[
-.B \-deflnNOpqStvx
-] [
-.B \-c
-.I count
-] [
-.B \-F
-.I file
-] [
-.B \-T
-.I type
-]
-.br
-.ti +8
-[
-.B \-i
-.I interface
-] [
-.B \-r
-.I file
-]
-[
-.B \-s
-.I snaplen
-]
-.br
-.ti +8
-[
-.B \-w
-.I file
-]
-.I expression
-.br
-.ad
-.SH DESCRIPTION
-.LP
-\fITcpdump\fP prints out the headers of packets on a network interface
-that match the boolean \fIexpression\fP.
-.B Under SunOS:
-You must be root to invoke \fItcpdump\fP or it must be installed
-setuid to root.
-.B Under Ultrix:
-Any user can invoke \fItcpdump\fP once the super-user has enabled
-promiscuous-mode operation using
-.IR pfconfig (8).
-.B Under BSD:
-Access is controlled by the permissions on
-.I /dev/bpf0,
-etc.
-.SH OPTIONS
-.TP
-.B \-c
-Exit after receiving \fIcount\fP packets.
-.TP
-.B \-d
-Dump the compiled packet-matching code to standard output and stop.
-.TP
-.B \-e
-Print the link-level header on each dump line.
-.TP
-.B \-f
-Print `foreign' internet addresses numerically rather than symbolically
-(this option is intended to get around serious brain damage in
-Sun's yp server \(em usually it hangs forever translating non-local
-internet numbers).
-.TP
-.B \-F
-Use \fIfile\fP as input for the filter expression.
-An additional expression given on the command line is ignored.
-.TP
-.B \-i
-Listen on \fIinterface\fP.
-If unspecified, \fItcpdump\fP searches the system interface list for the
-lowest numbered, configured up interface (excluding loopback).
-Ties are broken by choosing the earliest match.
-.TP
-.B \-l
-Make stdout line buffered. Useful if you want to see the data
-while capturing it. E.g.,
-.br
-``tcpdump\ \ \-l\ \ |\ \ tee dat'' or
-``tcpdump\ \ \-l \ \ > dat\ \ &\ \ tail\ \ \-f\ \ dat''.
-.TP
-.B \-n
-Don't convert addresses (i.e., host addresses, port numbers, etc.) to names.
-.TP
-.B \-N
-Don't print domain name qualification of host names. E.g.,
-if you give this flag then \fItcpdump\fP will print ``nic''
-instead of ``nic.ddn.mil''.
-.TP
-.B \-O
-Do not run the packet-matching code optimizer. This is useful only
-if you suspect a bug in the optimizer.
-.TP
-.B \-p
-\fIDon't\fP put the interface
-into promiscuous mode. Note that the interface might be in promiscuous
-for some other reason; hence, `-p' cannot be used as an abbreviation for
-`ether host {localhost} or broadcast'.
-.TP
-.B \-q
-Quick (quiet?) output. Print less protocol information so output
-lines are shorter.
-.TP
-.B \-r
-Read packets from \fIfile\fR (which was created with the -w option).
-Standard input is used if \fIfile\fR is ``-''.
-.TP
-.B \-s
-Snarf \fIsnaplen\fP bytes of data from each packet rather than the
-default of 68 (with NIT, the minimum is actually 96).
-68 bytes is adequate for IP, ICMP, TCP
-and UDP but may truncate protocol information from name server and NFS
-packets (see below). Packets truncated because of a limited snapshot
-are indicated in the output with ``[|\fIproto\fP]'', where \fIproto\fP
-is the name of the protocol level at which the truncation has occurred.
-Note that taking larger snapshots both increases
-the amount of time it takes to process packets and, effectively,
-decreases the amount of packet buffering. This may cause packets to be
-lost. You should limit \fIsnaplen\fP to the smallest number that will
-capture the protocol information you're interested in.
-.TP
-.B \-S
-Print absolute, rather than relative, TCP sequence numbers.
-.TP
-.B \-t
-\fIDon't\fP print a timestamp on each dump line.
-.TP
-.B \-tt
-Print an unformatted timestamp on each dump line.
-.TP
-.B \-T
-Print unrecognized UDP packets as if they were type
-.IR type .
-Valid types are `vat', `wb', `rpc', and `rtp'.
-.TP
-.B \-v
-(Slightly more) verbose output. For example, the time to live
-and type of service information in an IP packet is printed.
-.TP
-.B \-vv
-Even more verbose output. For example, additional fields are
-printed from NFS reply packets.
-.TP
-.B \-w
-Write the raw packets to \fIfile\fR rather than parsing and printing
-them out. They can later be printed with the \-r option.
-Standard output is used if \fIfile\fR is ``-''.
-.TP
-.B \-x
-Print each packet (minus its link level header) in hex.
-The smaller of the entire packet or
-.I snaplen
-bytes will be printed.
-.IP "\fI expression\fP"
-.RS
-selects which packets will be dumped. If no \fIexpression\fP
-is given, all packets on the net will be dumped. Otherwise,
-only packets for which \fIexpression\fP is `true' will be dumped.
-.LP
-The \fIexpression\fP consists of one or more
-.I primitives.
-Primitives usually consist of an
-.I id
-(name or number) preceded by one or more qualifiers. There are three
-different kinds of qualifier:
-.IP \fItype\fP
-qualifiers say what kind of thing the id name or number refers to.
-Possible types are
-.BR host ,
-.B net
-and
-.BR port .
-E.g., `host foo', `net 128.3', `port 20'. If there is no type
-qualifier,
-.B host
-is assumed.
-.IP \fIdir\fP
-qualifiers specify a particular tranfer direction to and/or from
-.I id.
-Possible directions are
-.BR src ,
-.BR dst ,
-.B "src or dst"
-and
-.B "src and"
-.BR dst .
-E.g., `src foo', `dst net 128.3', `src or dst port ftp-data'. If
-there is no dir qualifier,
-.B "src or dst"
-is assumed.
-.IP \fIproto\fP
-qualifiers restrict the match to a particular protocol. Possible
-protos are:
-.BR ether ,
-.BR fddi ,
-.BR ip ,
-.BR arp ,
-.BR rarp ,
-.BR decnet ,
-.BR lat ,
-.BR moprc ,
-.BR mopdl ,
-.B tcp
-and
-.BR udp .
-E.g., `ether src foo', `arp net 128.3', `tcp port 21'. If there is
-no proto qualifier, all protocols consistent with the type are
-assumed. E.g., `src foo' means `(ip or arp or rarp) src foo'
-(except the latter is not legal syntax), `net bar' means `(ip or
-arp or rarp) net bar' and `port 53' means `(tcp or udp) port 53'.
-.LP
-[`fddi' is actually an alias for `ether'; the parser treats them
-identically as meaning ``the data link level used on the specified
-network interface.'' FDDI headers contain Ethernet-like source
-and destination addresses, and often contain Ethernet-like packet
-types, so you can filter on these FDDI fields just as with the
-analogous Ethernet fields. FDDI headers also contain other fields,
-but you cannot name them explicitly in a filter expression.]
-.LP
-In addition to the above, there are some special `primitive' keywords
-that don't follow the pattern:
-.BR gateway ,
-.BR broadcast ,
-.BR less ,
-.B greater
-and arithmetic expressions. All of these are described below.
-.LP
-More complex filter expressions are built up by using the words
-.BR and ,
-.B or
-and
-.B not
-to combine primitives. E.g., `host foo and not port ftp and not port ftp-data'.
-To save typing, identical qualifier lists can be omitted. E.g.,
-`tcp dst port ftp or ftp-data or domain' is exactly the same as
-`tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain'.
-.LP
-Allowable primitives are:
-.IP "\fBdst host \fIhost\fR"
-True if the IP destination field of the packet is \fIhost\fP,
-which may be either an address or a name.
-.IP "\fBsrc host \fIhost\fR"
-True if the IP source field of the packet is \fIhost\fP.
-.IP "\fBhost \fIhost\fP
-True if either the IP source or destination of the packet is \fIhost\fP.
-Any of the above host expressions can be prepended with the keywords,
-\fBip\fP, \fBarp\fP, or \fBrarp\fP as in:
-.in +.5i
-.nf
-\fBip host \fIhost\fR
-.fi
-.in -.5i
-which is equivalent to:
-.in +.5i
-.nf
-\fBether proto \fI\\ip\fB and host \fIhost\fR
-.fi
-.in -.5i
-If \fIhost\fR is a name with multiple IP addresses, each address will
-be checked for a match.
-.IP "\fBether dst \fIehost\fP
-True if the ethernet destination address is \fIehost\fP. \fIEhost\fP
-may be either a name from /etc/ethers or a number (see
-.IR ethers (3N)
-for numeric format).
-.IP "\fBether src \fIehost\fP
-True if the ethernet source address is \fIehost\fP.
-.IP "\fBether host \fIehost\fP
-True if either the ethernet source or destination address is \fIehost\fP.
-.IP "\fBgateway\fP \fIhost\fP
-True if the packet used \fIhost\fP as a gateway. I.e., the ethernet
-source or destination address was \fIhost\fP but neither the IP source
-nor the IP destination was \fIhost\fP. \fIHost\fP must be a name and
-must be found in both /etc/hosts and /etc/ethers. (An equivalent
-expression is
-.in +.5i
-.nf
-\fBether host \fIehost \fBand not host \fIhost\fR
-.fi
-.in -.5i
-which can be used with either names or numbers for \fIhost / ehost\fP.)
-.IP "\fBdst net \fInet\fR"
-True if the IP destination address of the packet has a network
-number of \fInet\fP, which may be either an address or a name.
-.IP "\fBsrc net \fInet\fR"
-True if the IP source address of the packet has a network
-number of \fInet\fP.
-.IP "\fBnet \fInet\fR"
-True if either the IP source or destination address of the packet has a network
-number of \fInet\fP.
-.IP "\fBdst port \fIport\fR"
-True if the packet is ip/tcp or ip/udp and has a
-destination port value of \fIport\fP.
-The \fIport\fP can be a number or a name used in /etc/services (see
-.IR tcp (4P)
-and
-.IR udp (4P)).
-If a name is used, both the port
-number and protocol are checked. If a number or ambiguous name is used,
-only the port number is checked (e.g., \fBdst port 513\fR will print both
-tcp/login traffic and udp/who traffic, and \fBport domain\fR will print
-both tcp/domain and udp/domain traffic).
-.IP "\fBsrc port \fIport\fR"
-True if the packet has a source port value of \fIport\fP.
-.IP "\fBport \fIport\fR"
-True if either the source or destination port of the packet is \fIport\fP.
-Any of the above port expressions can be prepended with the keywords,
-\fBtcp\fP or \fBudp\fP, as in:
-.in +.5i
-.nf
-\fBtcp src port \fIport\fR
-.fi
-.in -.5i
-which matches only tcp packets.
-.IP "\fBless \fIlength\fR"
-True if the packet has a length less than or equal to \fIlength\fP.
-This is equivalent to:
-.in +.5i
-.nf
-\fBlen <= \fIlength\fP.
-.fi
-.in -.5i
-.IP "\fBgreater \fIlength\fR"
-True if the packet has a length greater than or equal to \fIlength\fP.
-This is equivalent to:
-.in +.5i
-.nf
-\fBlen >= \fIlength\fP.
-.fi
-.in -.5i
-.IP "\fBip proto \fIprotocol\fR"
-True if the packet is an ip packet (see
-.IR ip (4P))
-of protocol type \fIprotocol\fP.
-\fIProtocol\fP can be a number or one of the names
-\fIicmp\fP, \fIudp\fP, \fInd\fP, or \fItcp\fP.
-Note that the identifiers \fItcp\fP, \fIudp\fP, and \fIicmp\fP are also
-keywords and must be escaped via backslash (\\), which is \\\\ in the C-shell.
-.IP "\fBether broadcast\fR"
-True if the packet is an ethernet broadcast packet. The \fIether\fP
-keyword is optional.
-.IP "\fBip broadcast\fR"
-True if the packet is an IP broadcast packet. It checks for both
-the all-zeroes and all-ones broadcast conventions, and looks up
-the local subnet mask.
-.IP "\fBether multicast\fR"
-True if the packet is an ethernet multicast packet. The \fIether\fP
-keyword is optional.
-This is shorthand for `\fBether[0] & 1 != 0\fP'.
-.IP "\fBip multicast\fR"
-True if the packet is an IP multicast packet.
-.IP "\fBether proto \fIprotocol\fR"
-True if the packet is of ether type \fIprotocol\fR.
-\fIProtocol\fP can be a number or a name like
-\fIip\fP, \fIarp\fP, or \fIrarp\fP.
-Note these identifiers are also keywords
-and must be escaped via backslash (\\).
-[In the case of FDDI (e.g., `\fBfddi protocol arp\fR'), the
-protocol identification comes from the 802.2 Logical Link Control
-(LLC) header, which is usually layered on top of the FDDI header.
-\fItcpdump\fP assumes, when filtering on the protocol identifier,
-that all FDDI packets include an LLC header, and that the LLC header
-is in so-called SNAP format.]
-.IP "\fBdecnet src \fIhost\fR"
-True if the DECNET source address is
-.IR host ,
-which may be an address of the form ``10.123'', or a DECNET host
-name. [DECNET host name support is only available on Ultrix systems
-that are configured to run DECNET.]
-.IP "\fBdecnet dst \fIhost\fR"
-True if the DECNET destination address is
-.IR host .
-.IP "\fBdecnet host \fIhost\fR"
-True if either the DECNET source or destination address is
-.IR host .
-.IP "\fBip\fR, \fBarp\fR, \fBrarp\fR, \fBdecnet\fR"
-Abbreviations for:
-.in +.5i
-.nf
-\fBether proto \fIp\fR
-.fi
-.in -.5i
-where \fIp\fR is one of the above protocols.
-.IP "\fBlat\fR, \fBmoprc\fR, \fBmopdl\fR"
-Abbreviations for:
-.in +.5i
-.nf
-\fBether proto \fIp\fR
-.fi
-.in -.5i
-where \fIp\fR is one of the above protocols.
-Note that
-\fItcpdump\fP does not currently know how to parse these protocols.
-.IP "\fBtcp\fR, \fBudp\fR, \fBicmp\fR"
-Abbreviations for:
-.in +.5i
-.nf
-\fBip proto \fIp\fR
-.fi
-.in -.5i
-where \fIp\fR is one of the above protocols.
-.IP "\fIexpr relop expr\fR"
-True if the relation holds, where \fIrelop\fR is one of >, <, >=, <=, =, !=,
-and \fIexpr\fR is an arithmetic expression composed of integer constants
-(expressed in standard C syntax), the normal binary operators
-[+, -, *, /, &, |], a length operator, and special packet data accessors.
-To access
-data inside the packet, use the following syntax:
-.in +.5i
-.nf
-\fIproto\fB [ \fIexpr\fB : \fIsize\fB ]\fR
-.fi
-.in -.5i
-\fIProto\fR is one of \fBether, fddi,
-ip, arp, rarp, tcp, udp, \fRor \fBicmp\fR, and
-indicates the protocol layer for the index operation.
-The byte offset, relative to the indicated protocol layer, is
-given by \fIexpr\fR.
-\fISize\fR is optional and indicates the number of bytes in the
-field of interest; it can be either one, two, or four, and defaults to one.
-The length operator, indicated by the keyword \fBlen\fP, gives the
-length of the packet.
-
-For example, `\fBether[0] & 1 != 0\fP' catches all multicast traffic.
-The expression `\fBip[0] & 0xf != 5\fP'
-catches all IP packets with options. The expression
-`\fBip[6:2] & 0x1fff = 0\fP'
-catches only unfragmented datagrams and frag zero of fragmented datagrams.
-This check is implicitly applied to the \fBtcp\fP and \fBudp\fP
-index operations.
-For instance, \fBtcp[0]\fP always means the first
-byte of the TCP \fIheader\fP, and never means the first byte of an
-intervening fragment.
-.LP
-Primitives may be combined using:
-.IP
-A parenthesized group of primitives and operators
-(parentheses are special to the Shell and must be escaped).
-.IP
-Negation (`\fB!\fP' or `\fBnot\fP').
-.IP
-Concatenation (`\fB&&\fP' or `\fBand\fP').
-.IP
-Alternation (`\fB||\fP' or `\fBor\fP').
-.LP
-Negation has highest precedence.
-Alternation and concatenation have equal precedence and associate
-left to right. Note that explicit \fBand\fR tokens, not juxtaposition,
-are now required for concatenation.
-.LP
-If an identifier is given without a keyword, the most recent keyword
-is assumed.
-For example,
-.in +.5i
-.nf
-\fBnot host vs and ace\fR
-.fi
-.in -.5i
-is short for
-.in +.5i
-.nf
-\fBnot host vs and host ace\fR
-.fi
-.in -.5i
-which should not be confused with
-.in +.5i
-.nf
-\fBnot ( host vs or ace )\fR
-.fi
-.in -.5i
-.LP
-Expression arguments can be passed to tcpdump as either a single argument
-or as multiple arguments, whichever is more convenient.
-Generally, if the expression contains Shell metacharacters, it is
-easier to pass it as a single, quoted argument.
-Multiple arguments are concatenated with spaces before being parsed.
-.SH EXAMPLES
-.LP
-To print all packets arriving at or departing from \fIsundown\fP:
-.RS
-.nf
-\fBtcpdump host sundown\fP
-.fi
-.RE
-.LP
-To print traffic between \fIhelios\fR and either \fIhot\fR or \fIace\fR:
-.RS
-.nf
-\fBtcpdump host helios and \\( hot or ace \\)\fP
-.fi
-.RE
-.LP
-To print all IP packets between \fIace\fR and any host except \fIhelios\fR:
-.RS
-.nf
-\fBtcpdump ip host ace and not helios\fP
-.fi
-.RE
-.LP
-To print all traffic between local hosts and hosts at Berkeley:
-.RS
-.nf
-.B
-tcpdump net ucb-ether
-.fi
-.RE
-.LP
-To print all ftp traffic through internet gateway \fIsnup\fP:
-(note that the expression is quoted to prevent the shell from
-(mis-)interpreting the parentheses):
-.RS
-.nf
-.B
-tcpdump 'gateway snup and (port ftp or ftp-data)'
-.fi
-.RE
-.LP
-To print traffic neither sourced from nor destined for local hosts
-(if you gateway to one other net, this stuff should never make it
-onto your local net).
-.RS
-.nf
-.B
-tcpdump ip and not net \fIlocalnet\fP
-.fi
-.RE
-.LP
-To print the start and end packets (the SYN and FIN packets) of each
-TCP conversation that involves a non-local host.
-.RS
-.nf
-.B
-tcpdump 'tcp[13] & 3 != 0 and not src and dst net \fIlocalnet\fP'
-.fi
-.RE
-.LP
-To print IP packets longer than 576 bytes sent through gateway \fIsnup\fP:
-.RS
-.nf
-.B
-tcpdump 'gateway snup and ip[2:2] > 576'
-.fi
-.RE
-.LP
-To print IP broadcast or multicast packets that were
-.I not
-sent via ethernet broadcast or multicast:
-.RS
-.nf
-.B
-tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
-.fi
-.RE
-.LP
-To print all ICMP packets that are not echo requests/replies (i.e., not
-ping packets):
-.RS
-.nf
-.B
-tcpdump 'icmp[0] != 8 and icmp[0] != 0"
-.fi
-.RE
-.SH OUTPUT FORMAT
-.LP
-The output of \fItcpdump\fP is protocol dependent. The following
-gives a brief description and examples of most of the formats.
-.de HD
-.sp 1.5
-.B
-..
-.HD
-Link Level Headers
-.LP
-If the '-e' option is given, the link level header is printed out.
-On ethernets, the source and destination addresses, protocol,
-and packet length are printed.
-.LP
-On FDDI networks, the '-e' option causes \fItcpdump\fP to print
-the `frame control' field, the source and destination addresses,
-and the packet length. (The `frame control' field governs the
-interpretation of the rest of the packet. Normal packets (such
-as those containing IP datagrams) are `async' packets, with a priority
-value between 0 and 7; for example, `\fBasync4\fR'. Such packets
-are assumed to contain an 802.2 Logical Link Control (LLC) packet;
-the LLC header is printed if it is \fInot\fR an ISO datagram or a
-so-called SNAP packet.
-.LP
-\fI(N.B.: The following description assumes familiarity with
-the SLIP compression algorithm described in RFC-1144.)\fP
-.LP
-On SLIP links, a direction indicator (``I'' for inbound, ``O'' for outbound),
-packet type, and compression information are printed out.
-The packet type is printed first.
-The three types are \fIip\fP, \fIutcp\fP, and \fIctcp\fP.
-No further link information is printed for \fIip\fR packets.
-For TCP packets, the connection identifier is printed following the type.
-If the packet is compressed, its encoded header is printed out.
-The special cases are printed out as
-\fB*S+\fIn\fR and \fB*SA+\fIn\fR, where \fIn\fR is the amount by which
-the sequence number (or sequence number and ack) has changed.
-If it is not a special case,
-zero or more changes are printed.
-A change is indicated by U (urgent pointer), W (window), A (ack),
-S (sequence number), and I (packet ID), followed by a delta (+n or -n),
-or a new value (=n).
-Finally, the amount of data in the packet and compressed header length
-are printed.
-.LP
-For example, the following line shows an outbound compressed TCP packet,
-with an implicit connection identifier; the ack has changed by 6,
-the sequence number by 49, and the packet ID by 6; there are 3 bytes of
-data and 6 bytes of compressed header:
-.RS
-.nf
-\fBO ctcp * A+6 S+49 I+6 3 (6)\fP
-.fi
-.RE
-.HD
-ARP/RARP Packets
-.LP
-Arp/rarp output shows the type of request and its arguments. The
-format is intended to be self explanatory.
-Here is a short sample taken from the start of an `rlogin' from
-host \fIrtsg\fP to host \fIcsam\fP:
-.RS
-.nf
-.sp .5
-\f(CWarp who-has csam tell rtsg
-arp reply csam is-at CSAM\fP
-.sp .5
-.fi
-.RE
-The first line says that rtsg sent an arp packet asking
-for the ethernet address of internet host csam. Csam
-replies with its ethernet address (in this example, ethernet addresses
-are in caps and internet addresses in lower case).
-.LP
-This would look less redundant if we had done \fBtcpdump \-n\fP:
-.RS
-.nf
-.sp .5
-\f(CWarp who-has 128.3.254.6 tell 128.3.254.68
-arp reply 128.3.254.6 is-at 02:07:01:00:01:c4\fP
-.fi
-.RE
-.LP
-If we had done \fBtcpdump \-e\fP, the fact that the first packet is
-broadcast and the second is point-to-point would be visible:
-.RS
-.nf
-.sp .5
-\f(CWRTSG Broadcast 0806 64: arp who-has csam tell rtsg
-CSAM RTSG 0806 64: arp reply csam is-at CSAM\fP
-.sp .5
-.fi
-.RE
-For the first packet this says the ethernet source address is RTSG, the
-destination is the broadcast address, the type field
-contained hex 0806 (type ETHER_ARP) and the total length was 64 bytes.
-.HD
-TCP Packets
-.LP
-\fI(N.B.:The following description assumes familiarity with
-the TCP protocol described in RFC-793. If you are not familiar
-with the protocol, neither this description nor tcpdump will
-be of much use to you.)\fP
-.LP
-The general format of a tcp protocol line is:
-.RS
-.nf
-.sp .5
-\fIsrc > dst: flags data-seqno ack window urgent options\fP
-.sp .5
-.fi
-.RE
-\fISrc\fP and \fIdst\fP are the source and destination IP
-addresses and ports. \fIFlags\fP are some combination of S (SYN),
-F (FIN), P (PUSH) or R (RST) or a single `.' (no flags).
-\fIData-seqno\fP describes the portion of sequence space covered
-by the data in this packet (see example below).
-\fIAck\fP is sequence number of the next data expected the other
-direction on this connection.
-\fIWindow\fP is the number of bytes of receive buffer space available
-the other direction on this connection.
-\fIUrg\fP indicates there is `urgent' data in the packet.
-\fIOptions\fP are tcp options enclosed in angle brackets (e.g., <mss 1024>).
-.LP
-\fISrc, dst\fP and \fIflags\fP are always present. The other fields
-depend on the contents of the packet's tcp protocol header and
-are output only if appropriate.
-.LP
-Here is the opening portion of an rlogin from host \fIrtsg\fP to
-host \fIcsam\fP.
-.RS
-.nf
-.sp .5
-\s-2\f(CWrtsg.1023 > csam.login: S 768512:768512(0) win 4096 <mss 1024>
-csam.login > rtsg.1023: S 947648:947648(0) ack 768513 win 4096 <mss 1024>
-rtsg.1023 > csam.login: . ack 1 win 4096
-rtsg.1023 > csam.login: P 1:2(1) ack 1 win 4096
-csam.login > rtsg.1023: . ack 2 win 4096
-rtsg.1023 > csam.login: P 2:21(19) ack 1 win 4096
-csam.login > rtsg.1023: P 1:2(1) ack 21 win 4077
-csam.login > rtsg.1023: P 2:3(1) ack 21 win 4077 urg 1
-csam.login > rtsg.1023: P 3:4(1) ack 21 win 4077 urg 1\fP\s+2
-.sp .5
-.fi
-.RE
-The first line says that tcp port 1023 on rtsg sent a packet
-to port \fIlogin\fP
-on csam. The \fBS\fP indicates that the \fISYN\fP flag was set.
-The packet sequence number was 768512 and it contained no data.
-(The notation is `first:last(nbytes)' which means `sequence
-numbers \fIfirst\fP
-up to but not including \fIlast\fP which is \fInbytes\fP bytes of user data'.)
-There was no piggy-backed ack, the available receive window was 4096
-bytes and there was a max-segment-size option requesting an mss of
-1024 bytes.
-.LP
-Csam replies with a similar packet except it includes a piggy-backed
-ack for rtsg's SYN. Rtsg then acks csam's SYN. The `.' means no
-flags were set.
-The packet contained no data so there is no data sequence number.
-Note that the ack sequence
-number is a small integer (1). The first time \fBtcpdump\fP sees a
-tcp `conversation', it prints the sequence number from the packet.
-On subsequent packets of the conversation, the difference between
-the current packet's sequence number and this initial sequence number
-is printed. This means that sequence numbers after the
-first can be interpreted
-as relative byte positions in the conversation's data stream (with the
-first data byte each direction being `1'). `-S' will override this
-feature, causing the original sequence numbers to be output.
-.LP
-On the 6th line, rtsg sends csam 19 bytes of data (bytes 2 through 20
-in the rtsg \(-> csam side of the conversation).
-The PUSH flag is set in the packet.
-On the 7th line, csam says it's received data sent by rtsg up to
-but not including byte 21. Most of this data is apparently sitting in the
-socket buffer since csam's receive window has gotten 19 bytes smaller.
-Csam also sends one byte of data to rtsg in this packet.
-On the 8th and 9th lines,
-csam sends two bytes of urgent, pushed data to rtsg.
-.HD
-.B
-UDP Packets
-.LP
-UDP format is illustrated by this rwho packet:
-.RS
-.nf
-.sp .5
-\f(CWactinide.who > broadcast.who: udp 84\fP
-.sp .5
-.fi
-.RE
-This says that port \fIwho\fP on host \fIactinide\fP sent a udp
-datagram to port \fIwho\fP on host \fIbroadcast\fP, the Internet
-broadcast address. The packet contained 84 bytes of user data.
-.LP
-Some UDP services are recognized (from the source or destination
-port number) and the higher level protocol information printed.
-In particular, Domain Name service requests (RFC-1034/1035) and Sun
-RPC calls (RFC-1050) to NFS.
-.HD
-UDP Name Server Requests
-.LP
-\fI(N.B.:The following description assumes familiarity with
-the Domain Service protocol described in RFC-1035. If you are not familiar
-with the protocol, the following description will appear to be written
-in greek.)\fP
-.LP
-Name server requests are formatted as
-.RS
-.nf
-.sp .5
-\fIsrc > dst: id op? flags qtype qclass name (len)\fP
-.sp .5
-\f(CWh2opolo.1538 > helios.domain: 3+ A? ucbvax.berkeley.edu. (37)\fP
-.sp .5
-.fi
-.RE
-Host \fIh2opolo\fP asked the domain server on \fIhelios\fP for an
-address record (qtype=A) associated with the name \fIucbvax.berkeley.edu.\fP
-The query id was `3'. The `+' indicates the \fIrecursion desired\fP flag
-was set. The query length was 37 bytes, not including the UDP and
-IP protocol headers. The query operation was the normal one, \fIQuery\fP,
-so the op field was omitted. If the op had been anything else, it would
-have been printed between the `3' and the `+'.
-Similarly, the qclass was the normal one,
-\fIC_IN\fP, and omitted. Any other qclass would have been printed
-immediately after the `A'.
-.LP
-A few anomalies are checked and may result in extra fields enclosed in
-square brackets: If a query contains an answer, name server or
-authority section,
-.IR ancount ,
-.IR nscount ,
-or
-.I arcount
-are printed as `[\fIn\fPa]', `[\fIn\fPn]' or `[\fIn\fPau]' where \fIn\fP
-is the appropriate count.
-If any of the response bits are set (AA, RA or rcode) or any of the
-`must be zero' bits are set in bytes two and three, `[b2&3=\fIx\fP]'
-is printed, where \fIx\fP is the hex value of header bytes two and three.
-.HD
-UDP Name Server Responses
-.LP
-Name server responses are formatted as
-.RS
-.nf
-.sp .5
-\fIsrc > dst: id op rcode flags a/n/au type class data (len)\fP
-.sp .5
-\f(CWhelios.domain > h2opolo.1538: 3 3/3/7 A 128.32.137.3 (273)
-helios.domain > h2opolo.1537: 2 NXDomain* 0/1/0 (97)\fP
-.sp .5
-.fi
-.RE
-In the first example, \fIhelios\fP responds to query id 3 from \fIh2opolo\fP
-with 3 answer records, 3 name server records and 7 authority records.
-The first answer record is type A (address) and its data is internet
-address 128.32.137.3. The total size of the response was 273 bytes,
-excluding UDP and IP headers. The op (Query) and response code
-(NoError) were omitted, as was the class (C_IN) of the A record.
-.LP
-In the second example, \fIhelios\fP responds to query 2 with a
-response code of non-existent domain (NXDomain) with no answers,
-one name server and no authority records. The `*' indicates that
-the \fIauthoritative answer\fP bit was set. Since there were no
-answers, no type, class or data were printed.
-.LP
-Other flag characters that might appear are `\-' (recursion available,
-RA, \fInot\fP set) and `|' (truncated message, TC, set). If the
-`question' section doesn't contain exactly one entry, `[\fIn\fPq]'
-is printed.
-.LP
-Note that name server requests and responses tend to be large and the
-default \fIsnaplen\fP of 96 bytes may not capture enough of the packet
-to print. Use the \fB\-s\fP flag to increase the snaplen if you
-need to seriously investigate name server traffic. `\fB\-s 128\fP'
-has worked well for me.
-
-.HD
-NFS Requests and Replies
-.LP
-Sun NFS (Network File System) requests and replies are printed as:
-.RS
-.nf
-.sp .5
-\fIsrc.xid > dst.nfs: len op args\fP
-\fIsrc.nfs > dst.xid: reply stat len op results\fP
-.sp .5
-\f(CW
-sushi.6709 > wrl.nfs: 112 readlink fh 21,24/10.73165
-wrl.nfs > sushi.6709: reply ok 40 readlink "../var"
-sushi.201b > wrl.nfs:
- 144 lookup fh 9,74/4096.6878 "xcolors"
-wrl.nfs > sushi.201b:
- reply ok 128 lookup fh 9,74/4134.3150
-\fP
-.sp .5
-.fi
-.RE
-In the first line, host \fIsushi\fP sends a transaction with id \fI6709\fP
-to \fIwrl\fP (note that the number following the src host is a
-transaction id, \fInot\fP the source port). The request was 112 bytes,
-excluding the UDP and IP headers. The operation was a \fIreadlink\fP
-(read symbolic link) on file handle (\fIfh\fP) 21,24/10.731657119.
-(If one is lucky, as in this case, the file handle can be interpreted
-as a major,minor device number pair, followed by the inode number and
-generation number.)
-\fIWrl\fP replies `ok' with the contents of the link.
-.LP
-In the third line, \fIsushi\fP asks \fIwrl\fP to lookup the name
-`\fIxcolors\fP' in directory file 9,74/4096.6878. Note that the data printed
-depends on the operation type. The format is intended to be self
-explanatory if read in conjunction with
-an NFS protocol spec.
-.LP
-If the \-v (verbose) flag is given, additional information is printed.
-For example:
-.RS
-.nf
-.sp .5
-\f(CW
-sushi.1372a > wrl.nfs:
- 148 read fh 21,11/12.195 8192 bytes @ 24576
-wrl.nfs > sushi.1372a:
- reply ok 1472 read REG 100664 ids 417/0 sz 29388
-\fP
-.sp .5
-.fi
-.RE
-(\-v also prints the IP header TTL, ID, and fragmentation fields,
-which have been omitted from this example.) In the first line,
-\fIsushi\fP asks \fIwrl\fP to read 8192 bytes from file 21,11/12.195,
-at byte offset 24576. \fIWrl\fP replies `ok'; the packet shown on the
-second line is the first fragment of the reply, and hence is only 1472
-bytes long (the other bytes will follow in subsequent fragments, but
-these fragments do not have NFS or even UDP headers and so might not be
-printed, depending on the filter expression used). Because the \-v flag
-is given, some of the file attributes (which are returned in addition
-to the file data) are printed: the file type (``REG'', for regular file),
-the file mode (in octal), the uid and gid, and the file size.
-.LP
-If the \-v flag is given more than once, even more details are printed.
-.LP
-Note that NFS requests are very large and much of the detail won't be printed
-unless \fIsnaplen\fP is increased. Try using `\fB\-s 192\fP' to watch
-NFS traffic.
-.LP
-NFS reply packets do not explicitly identify the RPC operation. Instead,
-\fItcpdump\fP keeps track of ``recent'' requests, and matches them to the
-replies using the transaction ID. If a reply does not closely follow the
-corresponding request, it might not be parseble.
-.HD
-KIP Appletalk (DDP in UDP)
-.LP
-Appletalk DDP packets encapsulated in UDP datagrams are de-encapsulated
-and dumped as DDP packets (i.e., all the UDP header information is
-discarded). The file
-.I /etc/atalk.names
-is used to translate appletalk net and node numbers to names.
-Lines in this file have the form
-.RS
-.nf
-.sp .5
-\fInumber name\fP
-
-\f(CW1.254 ether
-16.1 icsd-net
-1.254.110 ace\fP
-.sp .5
-.fi
-.RE
-The first two lines give the names of appletalk networks. The third
-line gives the name of a particular host (a host is distinguished
-from a net by the 3rd octet in the number \-
-a net number \fImust\fP have two octets and a host number \fImust\fP
-have three octets.) The number and name should be separated by
-whitespace (blanks or tabs).
-The
-.I /etc/atalk.names
-file may contain blank lines or comment lines (lines starting with
-a `#').
-.LP
-Appletalk addresses are printed in the form
-.RS
-.nf
-.sp .5
-\fInet.host.port\fP
-
-\f(CW144.1.209.2 > icsd-net.112.220
-office.2 > icsd-net.112.220
-jssmag.149.235 > icsd-net.2\fP
-.sp .5
-.fi
-.RE
-(If the
-.I /etc/atalk.names
-doesn't exist or doesn't contain an entry for some appletalk
-host/net number, addresses are printed in numeric form.)
-In the first example, NBP (DDP port 2) on net 144.1 node 209
-is sending to whatever is listening on port 220 of net icsd node 112.
-The second line is the same except the full name of the source node
-is known (`office'). The third line is a send from port 235 on
-net jssmag node 149 to broadcast on the icsd-net NBP port (note that
-the broadcast address (255) is indicated by a net name with no host
-number \- for this reason it's a good idea to keep node names and
-net names distinct in /etc/atalk.names).
-.LP
-NBP (name binding protocol) and ATP (Appletalk transaction protocol)
-packets have their contents interpreted. Other protocols just dump
-the protocol name (or number if no name is registered for the
-protocol) and packet size.
-
-\fBNBP packets\fP are formatted like the following examples:
-.RS
-.nf
-.sp .5
-\s-2\f(CWicsd-net.112.220 > jssmag.2: nbp-lkup 190: "=:LaserWriter@*"
-jssmag.209.2 > icsd-net.112.220: nbp-reply 190: "RM1140:LaserWriter@*" 250
-techpit.2 > icsd-net.112.220: nbp-reply 190: "techpit:LaserWriter@*" 186\fP\s+2
-.sp .5
-.fi
-.RE
-The first line is a name lookup request for laserwriters sent by net icsd host
-112 and broadcast on net jssmag. The nbp id for the lookup is 190.
-The second line shows a reply for this request (note that it has the
-same id) from host jssmag.209 saying that it has a laserwriter
-resource named "RM1140" registered on port 250. The third line is
-another reply to the same request saying host techpit has laserwriter
-"techpit" registered on port 186.
-
-\fBATP packet\fP formatting is demonstrated by the following example:
-.RS
-.nf
-.sp .5
-\s-2\f(CWjssmag.209.165 > helios.132: atp-req 12266<0-7> 0xae030001
-helios.132 > jssmag.209.165: atp-resp 12266:0 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:1 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:2 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:4 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:6 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp*12266:7 (512) 0xae040000
-jssmag.209.165 > helios.132: atp-req 12266<3,5> 0xae030001
-helios.132 > jssmag.209.165: atp-resp 12266:3 (512) 0xae040000
-helios.132 > jssmag.209.165: atp-resp 12266:5 (512) 0xae040000
-jssmag.209.165 > helios.132: atp-rel 12266<0-7> 0xae030001
-jssmag.209.133 > helios.132: atp-req* 12267<0-7> 0xae030002\fP\s+2
-.sp .5
-.fi
-.RE
-Jssmag.209 initiates transaction id 12266 with host helios by requesting
-up to 8 packets (the `<0-7>'). The hex number at the end of the line
-is the value of the `userdata' field in the request.
-.LP
-Helios responds with 8 512-byte packets. The `:digit' following the
-transaction id gives the packet sequence number in the transaction
-and the number in parens is the amount of data in the packet,
-excluding the atp header. The `*' on packet 7 indicates that the
-EOM bit was set.
-.LP
-Jssmag.209 then requests that packets 3 & 5 be retransmitted. Helios
-resends them then jssmag.209 releases the transaction. Finally,
-jssmag.209 initiates the next request. The `*' on the request
-indicates that XO (`exactly once') was \fInot\fP set.
-
-.HD
-IP Fragmentation
-.LP
-Fragmented Internet datagrams are printed as
-.RS
-.nf
-.sp .5
-\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB+)\fR
-\fB(frag \fIid\fB:\fIsize\fB@\fIoffset\fB)\fR
-.sp .5
-.fi
-.RE
-(The first form indicates there are more fragments. The second
-indicates this is the last fragment.)
-.LP
-\fIId\fP is the fragment id. \fISize\fP is the fragment
-size (in bytes) excluding the IP header. \fIOffset\fP is this
-fragment's offset (in bytes) in the original datagram.
-.LP
-The fragment information is output for each fragment. The first
-fragment contains the higher level protocol header and the frag
-info is printed after the protocol info. Fragments
-after the first contain no higher level protocol header and the
-frag info is printed after the source and destination addresses.
-For example, here is part of an ftp from arizona.edu to lbl-rtsg.arpa
-over a CSNET connection that doesn't appear to handle 576 byte datagrams:
-.RS
-.nf
-.sp .5
-\s-2\f(CWarizona.ftp-data > rtsg.1170: . 1024:1332(308) ack 1 win 4096 (frag 595a:328@0+)
-arizona > rtsg: (frag 595a:204@328)
-rtsg.1170 > arizona.ftp-data: . ack 1536 win 2560\fP\s+2
-.sp .5
-.fi
-.RE
-There are a couple of things to note here: First, addresses in the
-2nd line don't include port numbers. This is because the TCP
-protocol information is all in the first fragment and we have no idea
-what the port or sequence numbers are when we print the later fragments.
-Second, the tcp sequence information in the first line is printed as if there
-were 308 bytes of user data when, in fact, there are 512 bytes (308 in
-the first frag and 204 in the second). If you are looking for holes
-in the sequence space or trying to match up acks
-with packets, this can fool you.
-.LP
-A packet with the IP \fIdon't fragment\fP flag is marked with a
-trailing \fB(DF)\fP.
-.HD
-Timestamps
-.LP
-By default, all output lines are preceded by a timestamp. The timestamp
-is the current clock time in the form
-.RS
-.nf
-\fIhh:mm:ss.frac\fP
-.fi
-.RE
-and is as accurate as the kernel's clock (e.g., \(+-10ms on a Sun-3).
-The timestamp reflects the time the kernel first saw the packet. No attempt
-is made to account for the time lag between when the
-ethernet interface removed the packet from the wire and when the kernel
-serviced the `new packet' interrupt (of course,
-with Sun's lousy clock resolution this time lag is negligible.)
-.SH "SEE ALSO"
-bpf(4)
-.SH AUTHORS
-Van Jacobson (van@helios.ee.lbl.gov),
-Craig Leres (leres@helios.ee.lbl.gov) and
-Steven McCanne (mccanne@helios.ee.lbl.gov), all of
-Lawrence Berkeley Laboratory, University of California, Berkeley, CA.
-.SH BUGS
-The clock resolution on most Suns is pathetic (20ms).
-If you want to use the timestamp to generate some of the important
-performance distributions (like packet interarrival time) it's best
-to watch something that generates packets slowly (like an Arpanet
-gateway or a MicroVax running VMS).
-.LP
-NIT doesn't let you watch your own outbound traffic, BPF will.
-We recommend that you use the latter.
-.LP
-\fItcpdump\fP for Ultrix requires Ultrix version 4.0 or later; the kernel
-has to have been built with the \fIpacketfilter\fP pseudo-device driver
-(see
-.IR bpf (4)).
-In order to watch either your own outbound or inbound traffic,
-you will need to use Ultrix version 4.2 or later, and you will have
-to have used the
-.IR pfconfig (8)
-command to enable ``copyall'' mode.
-.LP
-Under SunOS 4.1, the packet capture code (or Streams NIT) is not what
-you'd call efficient. Don't plan on doing much with your Sun while
-you're monitoring a busy network.
-.LP
-On Sun systems prior to release 3.2, NIT is very buggy.
-If run on an old system, tcpdump may crash the machine.
-.LP
-Some attempt should be made to reassemble IP fragments or, at least
-to compute the right length for the higher level protocol.
-.LP
-Name server inverse queries are not dumped correctly: The (empty)
-question section is printed rather than real query in the answer
-section. Some believe that inverse queries are themselves a bug and
-prefer to fix the program generating them rather than tcpdump.
-.LP
-Apple Ethertalk DDP packets could be dumped as easily as KIP DDP
-packets but aren't.
-Even if we were inclined to do anything to promote the use of
-Ethertalk (we aren't), LBL doesn't allow Ethertalk on any of its
-networks so we'd would have no way of testing this code.
-.LP
-A packet trace that crosses a daylight savings time change will give
-skewed time stamps (the time change is ignored).
-.LP
-Filters expressions that manipulate FDDI headers assume that all FDDI
-packets are encapsulated Ethernet packets. This is true for IP, ARP,
-and DECNET Phase IV, but is not true for protocols such as ISO CLNS.
-Therefore, the filter may inadvertently accept certain packets that
-do not properly match the filter expression.
diff --git a/usr.sbin/tcpdump/tcpdump/tcpdump.c b/usr.sbin/tcpdump/tcpdump/tcpdump.c
deleted file mode 100644
index 48f6f63..0000000
--- a/usr.sbin/tcpdump/tcpdump/tcpdump.c
+++ /dev/null
@@ -1,413 +0,0 @@
-/*
- * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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
-char copyright[] =
- "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994\nThe Regents of the University of California. All rights reserved.\n";
-static char rcsid[] =
- "@(#)$Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/tcpdump.c,v 1.2 1995/03/08 12:52:48 olah Exp $ (LBL)";
-#endif
-
-/*
- * tcpdump - monitor tcp/ip traffic on an ethernet.
- *
- * First written in 1987 by Van Jacobson, Lawrence Berkeley Laboratory.
- * Mercilessly hacked and occasionally improved since then via the
- * combined efforts of Van, Steve McCanne and Craig Leres of LBL.
- */
-
-#include <sys/types.h>
-#include <sys/time.h>
-
-#include <netinet/in.h>
-
-#include <pcap.h>
-#include <signal.h>
-#include <stdio.h>
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <unistd.h>
-#include <string.h>
-
-#include "interface.h"
-#include "addrtoname.h"
-
-int fflag; /* don't translate "foreign" IP address */
-int nflag; /* leave addresses as numbers */
-int Nflag; /* remove domains from printed host names */
-int pflag; /* don't go promiscuous */
-int qflag; /* quick (shorter) output */
-int tflag = 1; /* print packet arrival time */
-int eflag; /* print ethernet header */
-int vflag; /* verbose */
-int xflag; /* print packet in hex */
-int Oflag = 1; /* run filter code optimizer */
-int Sflag; /* print raw TCP sequence numbers */
-int packettype;
-
-int dflag; /* print filter code */
-
-char *program_name;
-
-int thiszone;
-
-SIGRET cleanup(int);
-extern void bpf_dump(struct bpf_program *, int);
-
-/* Length of saved portion of packet. */
-int snaplen = DEFAULT_SNAPLEN;
-
-struct printer {
- pcap_handler f;
- int type;
-};
-
-static struct printer printers[] = {
- { ether_if_print, DLT_EN10MB },
- { sl_if_print, DLT_SLIP },
- { ppp_if_print, DLT_PPP },
- { fddi_if_print, DLT_FDDI },
- { null_if_print, DLT_NULL },
- { NULL, 0 },
-};
-
-static pcap_handler
-lookup_printer(int type)
-{
- struct printer *p;
-
- for (p = printers; p->f; ++p)
- if (type == p->type)
- return p->f;
-
- error("unknown data link type 0x%x", type);
- /* NOTREACHED */
-}
-
-static pcap_t *pd;
-
-#ifdef __osf__
-#include <sys/sysinfo.h>
-#include <sys/proc.h>
-void
-abort_on_misalignment()
-{
- int buf[2];
-
- buf[0] = SSIN_UACPROC;
- buf[1] = UAC_SIGBUS;
- if (setsysinfo(SSI_NVPAIRS, buf, 1, 0, 0) < 0) {
- perror("setsysinfo");
- exit(1);
- }
-}
-
-#endif
-
-int
-main(int argc, char **argv)
-{
- register int cnt, op;
- u_long localnet, netmask;
- register char *cp, *infile, *cmdbuf, *device, *RFileName, *WFileName;
- pcap_handler printer;
- struct bpf_program fcode;
- u_char *pcap_userdata;
- char errbuf[PCAP_ERRBUF_SIZE];
-
- extern char *optarg;
- extern int optind, opterr;
-
-#ifdef __osf__
- abort_on_misalignment();
-#endif
-
- cnt = -1;
- device = NULL;
- infile = NULL;
- RFileName = NULL;
- WFileName = NULL;
- if ((cp = strrchr(argv[0], '/')) != NULL)
- program_name = cp + 1;
- else
- program_name = argv[0];
-
- opterr = 0;
- while ((op = getopt(argc, argv, "c:defF:i:lnNOpqr:s:StT:vw:xY")) != EOF)
- switch (op) {
- case 'c':
- cnt = atoi(optarg);
- break;
-
- case 'd':
- ++dflag;
- break;
-
- case 'e':
- ++eflag;
- break;
-
- case 'f':
- ++fflag;
- break;
-
- case 'F':
- infile = optarg;
- break;
-
- case 'i':
- device = optarg;
- break;
-
- case 'l':
- setlinebuf(stdout);
- break;
-
- case 'n':
- ++nflag;
- break;
-
- case 'N':
- ++Nflag;
- break;
-
- case 'O':
- Oflag = 0;
- break;
-
- case 'p':
- ++pflag;
- break;
-
- case 'q':
- ++qflag;
- break;
-
- case 'r':
- RFileName = optarg;
- break;
-
- case 's':
- snaplen = atoi(optarg);
- break;
-
- case 'S':
- ++Sflag;
- break;
-
- case 't':
- --tflag;
- break;
-
- case 'T':
- if (strcasecmp(optarg, "vat") == 0)
- packettype = 1;
- else if (strcasecmp(optarg, "wb") == 0)
- packettype = 2;
- else if (strcasecmp(optarg, "rpc") == 0)
- packettype = 3;
- else if (strcasecmp(optarg, "rtp") == 0)
- packettype = 4;
- else
- error("unknown packet type `%s'", optarg);
- break;
-
- case 'v':
- ++vflag;
- break;
-
- case 'w':
- WFileName = optarg;
- break;
-#ifdef YYDEBUG
- case 'Y':
- {
- extern int yydebug;
- yydebug = 1;
- }
- break;
-#endif
- case 'x':
- ++xflag;
- break;
-
- default:
- usage();
- /* NOTREACHED */
- }
-
- if (tflag > 0)
- thiszone = gmt2local();
-
- if (RFileName != NULL) {
- /*
- * We don't need network access, so set it back to the user id.
- * Also, this prevents the user from reading anyone's
- * trace file.
- */
- setuid(getuid());
-
- pd = pcap_open_offline(RFileName, errbuf);
- if (pd == NULL)
- error(errbuf);
- /* use the snaplen stored in the file */
- snaplen = pcap_snapshot(pd);
- localnet = 0;
- netmask = 0;
- if (fflag != 0)
- error("-f and -r options are incompatible");
- } else {
- if (device == NULL) {
- device = pcap_lookupdev(errbuf);
- if (device == NULL)
- error(errbuf);
- }
- pd = pcap_open_live(device, snaplen, !pflag, 1000, errbuf);
- if (pd == NULL)
- error(errbuf);
- if (pcap_lookupnet(device, &localnet, &netmask, errbuf) < 0)
- error(errbuf);
- /*
- * Let user own process after socket has been opened.
- */
- setuid(getuid());
- }
- if (infile)
- cmdbuf = read_infile(infile);
- else
- cmdbuf = copy_argv(&argv[optind]);
-
- if (pcap_compile(pd, &fcode, cmdbuf, Oflag, netmask) < 0)
- error(pcap_geterr(pd));
- if (dflag) {
- bpf_dump(&fcode, dflag);
- exit(0);
- }
- init_addrtoname(fflag, localnet, netmask);
-
- (void)signal(SIGTERM, cleanup);
- (void)signal(SIGINT, cleanup);
- (void)signal(SIGHUP, cleanup);
-
- if (pcap_setfilter(pd, &fcode) < 0)
- error(pcap_geterr(pd));
- if (WFileName) {
- pcap_dumper_t *p = pcap_dump_open(pd, WFileName);
- if (p == NULL)
- error(pcap_geterr(pd));
- printer = pcap_dump;
- pcap_userdata = (u_char *)p;
- } else {
- printer = lookup_printer(pcap_datalink(pd));
- pcap_userdata = 0;
- }
- if (RFileName == NULL) {
- fprintf(stderr, "%s: listening on %s\n", program_name, device);
- fflush(stderr);
- }
- pcap_loop(pd, cnt, printer, pcap_userdata);
- pcap_close(pd);
- exit(0);
-}
-
-/* make a clean exit on interrupts */
-SIGRET
-cleanup(int signo)
-{
- struct pcap_stat stat;
-
- /* Can't print the summary if reading from a savefile */
- if (pd != NULL && pcap_file(pd) == NULL) {
- (void)fflush(stdout);
- putc('\n', stderr);
- if (pcap_stats(pd, &stat) < 0)
- (void)fprintf(stderr, "pcap_stats: %s\n",
- pcap_geterr(pd));
- else {
- (void)fprintf(stderr, "%d packets received by filter\n",
- stat.ps_recv);
- (void)fprintf(stderr, "%d packets dropped by kernel\n",
- stat.ps_drop);
- }
- }
- exit(0);
-}
-
-/* Like default_print() but data need not be aligned */
-void
-default_print_unaligned(register const u_char *cp, register int length)
-{
- register u_int i, s;
- register int nshorts;
-
- nshorts = (u_int) length / sizeof(u_short);
- i = 0;
- while (--nshorts >= 0) {
- if ((i++ % 8) == 0)
- (void)printf("\n\t\t\t");
- s = *cp++;
- (void)printf(" %02x%02x", s, *cp++);
- }
- if (length & 1) {
- if ((i % 8) == 0)
- (void)printf("\n\t\t\t");
- (void)printf(" %02x", *cp);
- }
-}
-
-void
-default_print(register const u_char *bp, register int length)
-{
- register const u_short *sp;
- register u_int i;
- register int nshorts;
-
- if ((int)bp & 1) {
- default_print_unaligned(bp, length);
- return;
- }
- sp = (u_short *)bp;
- nshorts = (u_int) length / sizeof(u_short);
- i = 0;
- while (--nshorts >= 0) {
- if ((i++ % 8) == 0)
- (void)printf("\n\t\t\t");
- (void)printf(" %04x", ntohs(*sp++));
- }
- if (length & 1) {
- if ((i % 8) == 0)
- (void)printf("\n\t\t\t");
- (void)printf(" %02x", *(u_char *)sp);
- }
-}
-
-void
-usage()
-{
- extern char version[];
-
- (void)fprintf(stderr, "Version %s\n", version);
- (void)fprintf(stderr,
-"Usage: tcpdump [-deflnOpqtvx] [-c count] [-i interface]\n");
- (void)fprintf(stderr,
-"\t\t[-r filename] [-w filename] [expr]\n");
- exit(-1);
-}
diff --git a/usr.sbin/tcpdump/tcpdump/util.c b/usr.sbin/tcpdump/tcpdump/util.c
deleted file mode 100644
index b55e6e3..0000000
--- a/usr.sbin/tcpdump/tcpdump/util.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright (c) 1990, 1991, 1993, 1994
- * The Regents of the University of California. 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 the University of California,
- * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
- * the University nor the names of its contributors may 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 char rcsid[] =
- "@(#) $Header: /home/ncvs/src/usr.sbin/tcpdump/tcpdump/util.c,v 1.2 1995/03/08 12:52:49 olah Exp $ (LBL)";
-#endif
-
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/file.h>
-#include <sys/stat.h>
-
-#include <ctype.h>
-#ifdef SOLARIS
-#include <fcntl.h>
-#endif
-#ifdef __STDC__
-#include <stdlib.h>
-#endif
-#include <stdio.h>
-#if __STDC__
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-#include <string.h>
-#include <unistd.h>
-
-#include "interface.h"
-
-/*
- * Print out a filename (or other ascii string).
- * If ep is NULL, assume no truncation check is needed.
- * Return true if truncated.
- */
-int
-fn_print(register const u_char *s, register const u_char *ep)
-{
- register int ret;
- register u_char c;
-
- ret = 1; /* assume truncated */
- putchar('"');
- while (ep == NULL || s < ep) {
- c = *s++;
- if (c == '\0') {
- ret = 0;
- break;
- }
- if (!isascii(c)) {
- c = toascii(c);
- putchar('M');
- putchar('-');
- }
- if (!isprint(c)) {
- c ^= 0x40; /* DEL to ?, others to alpha */
- putchar('^');
- }
- putchar(c);
- }
- putchar('"');
- return(ret);
-}
-
-/*
- * Print out a counted filename (or other ascii string).
- * If ep is NULL, assume no truncation check is needed.
- * Return true if truncated.
- */
-int
-fn_printn(register const u_char *s, register u_int n,
- register const u_char *ep)
-{
- register int ret;
- register u_char c;
-
- ret = 1; /* assume truncated */
- putchar('"');
- while (ep == NULL || s < ep) {
- if (n-- <= 0) {
- ret = 0;
- break;
- }
- c = *s++;
- if (!isascii(c)) {
- c = toascii(c);
- putchar('M');
- putchar('-');
- }
- if (!isprint(c)) {
- c ^= 0x40; /* DEL to ?, others to alpha */
- putchar('^');
- }
- putchar(c);
- }
- putchar('"');
- return(ret);
-}
-
-/*
- * Print the timestamp
- */
-void
-ts_print(register const struct timeval *tvp)
-{
- register int s;
- extern int32 thiszone;
-
- if (tflag > 0) {
- /* Default */
- s = (tvp->tv_sec + thiszone) % 86400;
- (void)printf("%02d:%02d:%02d.%06d ",
- s / 3600, (s % 3600) / 60, s % 60, tvp->tv_usec);
- } else if (tflag < 0) {
- /* Unix timeval style */
- (void)printf("%d.%06d ", tvp->tv_sec, tvp->tv_usec);
- }
-}
-
-/*
- * Convert a token value to a string; use "fmt" if not found.
- */
-const char *
-tok2str(register const struct token *lp, register const char *fmt,
- register int v)
-{
- static char buf[128];
-
- while (lp->s != NULL) {
- if (lp->v == v)
- return (lp->s);
- ++lp;
- }
- if (fmt == NULL)
- fmt = "#%d";
- (void)sprintf(buf, fmt, v);
- return (buf);
-}
-
-/* A replacement for strdup() that cuts down on malloc() overhead */
-char *
-savestr(register const char *str)
-{
- register u_int size;
- register char *p;
- static char *strptr = NULL;
- static u_int strsize = 0;
-
- size = strlen(str) + 1;
- if (size > strsize) {
- strsize = 1024;
- if (strsize < size)
- strsize = size;
- strptr = malloc(strsize);
- if (strptr == NULL)
- error("savestr: malloc");
- }
- (void)strcpy(strptr, str);
- p = strptr;
- strptr += size;
- strsize -= size;
- return (p);
-}
-
-#ifdef NOVFPRINTF
-/*
- * Stock 4.3 doesn't have vfprintf.
- * This routine is due to Chris Torek.
- */
-vfprintf(f, fmt, args)
- FILE *f;
- char *fmt;
- va_list args;
-{
- int ret;
-
- if ((f->_flag & _IOWRT) == 0) {
- if (f->_flag & _IORW)
- f->_flag |= _IOWRT;
- else
- return EOF;
- }
- ret = _doprnt(fmt, args, f);
- return ferror(f) ? EOF : ret;
-}
-#endif
-
-/* VARARGS */
-__dead void
-#if __STDC__ || defined(SOLARIS)
-error(char *fmt, ...)
-#else
-error(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- va_list ap;
-
- (void)fprintf(stderr, "%s: ", program_name);
-#if __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- (void)vfprintf(stderr, fmt, ap);
- va_end(ap);
- if (*fmt) {
- fmt += strlen(fmt);
- if (fmt[-1] != '\n')
- (void)fputc('\n', stderr);
- }
- exit(1);
- /* NOTREACHED */
-}
-
-/* VARARGS */
-void
-#if __STDC__ || defined(SOLARIS)
-warning(char *fmt, ...)
-#else
-warning(fmt, va_alist)
- char *fmt;
- va_dcl
-#endif
-{
- va_list ap;
-
- (void)fprintf(stderr, "%s: warning: ", program_name);
-#if __STDC__
- va_start(ap, fmt);
-#else
- va_start(ap);
-#endif
- (void)vfprintf(stderr, fmt, ap);
- va_end(ap);
- if (*fmt) {
- fmt += strlen(fmt);
- if (fmt[-1] != '\n')
- (void)fputc('\n', stderr);
- }
-}
-
-/*
- * Copy arg vector into a new buffer, concatenating arguments with spaces.
- */
-char *
-copy_argv(register char **argv)
-{
- register char **p;
- register int len = 0;
- char *buf;
- char *src, *dst;
-
- p = argv;
- if (*p == 0)
- return 0;
-
- while (*p)
- len += strlen(*p++) + 1;
-
- buf = malloc(len);
-
- p = argv;
- dst = buf;
- while ((src = *p++) != NULL) {
- while ((*dst++ = *src++) != '\0')
- ;
- dst[-1] = ' ';
- }
- dst[-1] = '\0';
-
- return buf;
-}
-
-char *
-read_infile(char *fname)
-{
- struct stat buf;
- int fd;
- char *p;
-
- fd = open(fname, O_RDONLY);
- if (fd < 0)
- error("can't open '%s'", fname);
-
- if (fstat(fd, &buf) < 0)
- error("can't state '%s'", fname);
-
- p = malloc((u_int)buf.st_size);
- if (read(fd, p, (int)buf.st_size) != buf.st_size)
- error("problem reading '%s'", fname);
-
- return p;
-}
-
-int
-gmt2local()
-{
- time_t now;
- struct tm *tmp;
-
- time(&now);
- tmp = localtime(&now);
- return tmp->tm_gmtoff;
-}
OpenPOWER on IntegriCloud