Commit add10a5a authored by Timothy Stack's avatar Timothy Stack
Browse files

Install NFS tracing stuff so we can gather some data.

	* configure, configure.in: Add some nfstrace files.

	* sensors/GNUmakefile.in: Add nfstrace directory to the build.

	* sensors/nfstrace/GNUmakefile.in, nfs.sql, nfsdump2db,
	nfstrace.init.in, nfstrace.proxy: Prototype of scripts to trace
	NFS traffic from experimental nodes and build a list of the files
	that are accessed.

	* sensors/nfstrace/nfsdump2/*: Slightly customized version of the
	nfsdump program.

	* tbsetup/GNUmakefile.in: Install nfstrace control script which is
	used to talk to the proxy on ops.
parent 5ff58a83
......@@ -1932,17 +1932,17 @@ for ac_hdr in ulxmlrpcpp/ulxr_config.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1935: checking for $ac_hdr" >&5
echo "configure:1936: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1940 "configure"
#line 1941 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1946: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -1981,17 +1981,17 @@ for ac_hdr in linux/videodev.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
echo "configure:1984: checking for $ac_hdr" >&5
echo "configure:1985: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1989 "configure"
#line 1990 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1994: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1995: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
......@@ -2024,7 +2024,7 @@ done
# Extract the first word of "gtk-config", so it can be a program name with args.
set dummy gtk-config; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2027: checking for $ac_word" >&5
echo "configure:2028: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_GTK_CONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -2103,7 +2103,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
echo "configure:2106: checking for a BSD compatible install" >&5
echo "configure:2107: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
......@@ -2164,7 +2164,7 @@ esac
# Extract the first word of "rsync", so it can be a program name with args.
set dummy rsync; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
echo "configure:2167: checking for $ac_word" >&5
echo "configure:2168: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RSYNC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
......@@ -2232,6 +2232,7 @@ outfiles="$outfiles Makeconf GNUmakefile \
sensors/canaryd/GNUmakefile sensors/canaryd/feedbacklogs \
sensors/and/GNUmakefile sensors/and/and-emulab.conf \
sensors/powermon/GNUmakefile sensors/powermon/powermon \
sensors/nfstrace/GNUmakefile sensors/nfstrace/nfstrace.init \
account/GNUmakefile account/tbacct account/webtbacct \
account/addpubkey account/webaddpubkey \
account/addsfskey account/webaddsfskey \
......@@ -2289,7 +2290,7 @@ outfiles="$outfiles Makeconf GNUmakefile \
tbsetup/ipassign/GNUmakefile tbsetup/ipassign/src/GNUmakefile \
tbsetup/ipassign/ipassign_wrapper tbsetup/assign_prepass \
tbsetup/panic tbsetup/webpanic \
tbsetup/tbrsync \
tbsetup/tbrsync tbsetup/nfstrace \
tip/GNUmakefile tip/console \
tmcd/GNUmakefile tmcd/tmcd.restart \
tmcd/common/GNUmakefile tmcd/common/config/GNUmakefile \
......
......@@ -670,6 +670,7 @@ outfiles="$outfiles Makeconf GNUmakefile \
sensors/canaryd/GNUmakefile sensors/canaryd/feedbacklogs \
sensors/and/GNUmakefile sensors/and/and-emulab.conf \
sensors/powermon/GNUmakefile sensors/powermon/powermon \
sensors/nfstrace/GNUmakefile sensors/nfstrace/nfstrace.init \
account/GNUmakefile account/tbacct account/webtbacct \
account/addpubkey account/webaddpubkey \
account/addsfskey account/webaddsfskey \
......@@ -727,7 +728,7 @@ outfiles="$outfiles Makeconf GNUmakefile \
tbsetup/ipassign/GNUmakefile tbsetup/ipassign/src/GNUmakefile \
tbsetup/ipassign/ipassign_wrapper tbsetup/assign_prepass \
tbsetup/panic tbsetup/webpanic \
tbsetup/tbrsync \
tbsetup/tbrsync tbsetup/nfstrace \
tip/GNUmakefile tip/console \
tmcd/GNUmakefile tmcd/tmcd.restart \
tmcd/common/GNUmakefile tmcd/common/config/GNUmakefile \
......
......@@ -9,7 +9,7 @@ EVENTSYS = @EVENTSYS@
include $(OBJDIR)/Makeconf
SUBDIRS = slothd and powermon
SUBDIRS = slothd and powermon nfstrace
SYSTEM := $(shell uname -s)
......
#
# EMULAB-COPYRIGHT
# Copyright (c) 2005 University of Utah and the Flux Group.
# All rights reserved.
#
# This is the Emulab specific makefile.
#
SRCDIR = @srcdir@
TESTBED_SRCDIR = @top_srcdir@
OBJDIR = ../..
SUBDIR = sensors/nfstrace
include $(OBJDIR)/Makeconf
all: nfstrace.proxy nfsdump2db nfsdump nfstrace.init
include $(TESTBED_SRCDIR)/GNUmakerules
#
# Install to the ops directory.
#
PREFIX=$(INSTALL_DIR)/opsdir
INSTALL_ETC=$(PREFIX)/etc
INSTALL_INITD=$(PREFIX)/etc/rc.d
INSTALL_SBIN=$(PREFIX)/sbin
INSTALL_MAN=$(PREFIX)/man
PW=/usr/sbin/pw
$(SRCDIR)/nfsdump2/config.status:
cd $(SRCDIR)/nfsdump2 && ./configure
make.nfsdump:
cd $(SRCDIR)/nfsdump2 && $(MAKE)
$(SRCDIR)/nfsdump2/nfsdump: $(SRCDIR)/nfsdump2/config.status make.nfsdump
nfsdump: $(SRCDIR)/nfsdump2/nfsdump
cp $(SRCDIR)/nfsdump2/nfsdump .
client client-install:
control-install: all
-mkdir -p $(INSTALL_DIR)/sbin
-mkdir -p $(INSTALL_DIR)/etc
-mkdir -p $(INSTALL_DIR)/etc/rc.d
@if ! id nfstrace > /dev/null 2>&1; then \
sudo $(PW) useradd nfstrace -d /nonexistent \
-s /sbin/nologin -u 50,200 \
-c "NFS Tracing Daemon"; \
fi
@if ! $(PW) groupshow bpf; then \
sudo $(PW) groupadd bpf; \
fi
@if test ! -d /var/nfstrace; then \
sudo mkdir -m 0750 /var/nfstrace; \
fi
sudo chown nfstrace /var/nfstrace
$(INSTALL) -m 0755 nfsdump $(DESTDIR)$(INSTALL_SBINDIR)
$(INSTALL) -m 0755 $(SRCDIR)/nfsdump2db $(DESTDIR)$(INSTALL_SBINDIR)
$(INSTALL) -m 0755 $(SRCDIR)/nfstrace.proxy $(DESTDIR)$(INSTALL_SBINDIR)
$(INSTALL) -m 0755 nfstrace.init $(INSTALL_DIR)/etc/rc.d/nfstrace
install: all
$(INSTALL) -m 0755 nfsdump $(DESTDIR)$(INSTALL_SBIN)
$(INSTALL) -m 0755 $(SRCDIR)/nfsdump2db $(DESTDIR)$(INSTALL_SBIN)
$(INSTALL) -m 0755 $(SRCDIR)/nfstrace.proxy $(DESTDIR)$(INSTALL_SBIN)
$(INSTALL) -m 0755 nfstrace.init $(DESTDIR)$(INSTALL_ETC)/rc.d/nfstrace
-- Packets
CREATE TABLE node_ids (
node_id varchar(32) NOT NULL default '',
node_ip varchar(64) NOT NULL default '',
PRIMARY KEY (node_id, node_ip)
) TYPE=MyISAM;
CREATE TABLE mounts (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fn text,
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE mount_replies (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
status int(3) NOT NULL default 0,
fh text,
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE lookups (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE lookup_replies (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
status int(3) NOT NULL default 0,
fh varchar(96) NOT NULL default '',
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE file_checkpoint (
timestamp int(10) NOT NULL,
fh varchar(96) NOT NULL default '',
ftype int(3),
mode int(5),
nlink int(5),
uid int(5),
gid int(5),
size int(10),
blksize int(10),
rdev int(10),
blocks int(10),
fsid int(10),
fileid int(10),
atime int(10),
mtime int(10),
ctime int(10),
PRIMARY KEY (timestamp, fh)
) TYPE=MyISAM;
CREATE TABLE reads (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
amount int(10),
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip),
) TYPE=MyISAM;
CREATE TABLE writes (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
amount int(10),
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip),
) TYPE=MyISAM;
CREATE TABLE creates (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
mode int(5),
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE create_replies (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
status int(3) NOT NULL default 0,
fh varchar(96) NOT NULL default '',
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE mkdirs (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE mknods (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE removes (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
euid int(5),
egid int(5),
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE rmdirs (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
fn text,
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE renames (
timestamp int(10) NOT NULL,
id varchar(16) NOT NULL,
node_ip varchar(64) NOT NULL default '',
from_fh varchar(96) NOT NULL default '',
from_fn text,
to_fh varchar(96) NOT NULL default '',
to_fn text,
PRIMARY KEY (timestamp, id, node_ip)
) TYPE=MyISAM;
CREATE TABLE handle_map (
fh varchar(96) NOT NULL default '',
complete int(1),
fn text,
PRIMARY KEY (fh),
KEY (fn(255))
) TYPE=MyISAM;
CREATE TABLE file_access (
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
last_access int(10) NOT NULL,
PRIMARY KEY (node_ip, fh)
) TYPE=MyISAM;
CREATE TABLE file_dropped (
node_ip varchar(64) NOT NULL default '',
fh varchar(96) NOT NULL default '',
last_remove int(10) NOT NULL,
PRIMARY KEY (node_ip, fh)
) TYPE=MyISAM;
version.c
Makefile
Makefile-devel.in
config.status
config.log
config.cache
config.h
.devel
stamp-h
stamp-h.in
tcpdump
$Header: /home/cvs_mirrors/cvs-public.flux.utah.edu/CVS/testbed/sensors/nfstrace/nfsdump2/CHANGES,v 1.1 2005-11-28 15:44:00 stack Exp $
Tuesday January 9, 2001. mcr@sandelman.ottawa.on.ca. Summary for 3.6 release
Cleaned up documentation.
Promisc mode fixes for Linux
IPsec changes/cleanups.
Alignment fixes for picky architectures
Removed dependency on native headers for packet dissectors.
Removed Linux specific headers that were shipped
libpcap changes provide for exchanging capture files between
systems. Save files now have well known PACKET_ values instead of
depending upon system dependant mappings of DLT_* types.
Support for computing/checking IP and UDP/TCP checksums.
Updated autoconf stock files.
IPv6 improvements: dhcp (draft-15), mobile-ip6, ppp, ospf6,
Added dissector support for: ISOCLNS, Token Ring, IGMPv3, bxxp,
timed, vrrp, radius, chdlc, cnfp, cdp, IEEE802.1d, raw-AppleTalk
Added filtering support for: VLANs, ESIS, ISIS
Improvements to: print-telnet, IPTalk, bootp/dhcp, ECN, PPP,
L2TP, PPPoE
HP-UX 11.0 -- find the right dlpi device.
Solaris 8 - IPv6 works
Linux - Added support for an "any" device to capture on all interfaces
Security fixes: buffer overrun audit done. Strcpy replaced with
strlcpy, sprintf replaced with snprintf.
Look for lex problems, and warn about them.
v3.5 Fri Jan 28 18:00:00 PST 2000
Bill Fenner <fenner@research.att.com>
- switch to config.h for autoconf
- unify RCSID strings
- Updated PIMv1, PIMv2, DVMRP, IGMP parsers, add Cisco Auto-RP parser
- Really fix the RIP printer
- Fix MAC address -> name translation.
- some -Wall -Wformat fixes
- update makemib to parse much of SMIv2
- Print TCP sequence # with -vv even if you normally wouldn't
- Print as much of IP/TCP/UDP headers as possible even if truncated.
itojun@iijlab.net
- -X will make a ascii dump. from netbsd.
- telnet command sequence decoder (ff xx xx). from netbsd.
- print-bgp.c: improve options printing. ugly code exists for
unaligned option parsing (need some fix).
- const poisoning in SMB decoder.
- -Wall -Werror clean checks.
- bring in KAME IPv6/IPsec decoding code.
Assar Westerlund <assar@sics.se>
- SNMPv2 and SNMPv3 printer
- If compiled with libsmi, tcpdump can load MIBs on the fly to decode
SNMP packets.
- Incorporate NFS parsing code from NetBSD. Adds support for nfsv3.
- portability fixes
- permit building in different directories.
Ken Hornstein <kenh@cmf.nrl.navy.mil>
- bring in code at
/afs/transarc.com/public/afs-contrib/tools/tcpdump for parsing
AFS3 packets
Andrew Tridgell <tridge@linuxcare.com>
- SMB printing code
Love <lha@stacken.kth.se>
- print-rx.c: add code for printing MakeDir and StoreStatus. Also
change date format to the right one.
Michael C. Richardson <mcr@sandelman.ottawa.on.ca>
- Created tcpdump.org repository
v3.4 Sat Jul 25 12:40:55 PDT 1998
- Hardwire Linux slip support since it's too hard to detect.
- Redo configuration of "network" libraries (-lsocket and -lnsl) to
deal with IRIX. Thanks to John Hawkinson (jhawk@mit.edu)
- Added -a which tries to translate network and broadcast addresses to
names. Suggested by Rob van Nieuwkerk (robn@verdi.et.tudelft.nl)
- Added a configure option to disable gcc.
- Added a "raw" packet printer.
- Not having an interface address is no longer fatal. Requested by John
Hawkinson.
- Rework signal setup to accommodate Linux.
- OSPF truncation check fix. Also display the type of OSPF packets
using MD5 authentication. Thanks to Brian Wellington
(bwelling@tis.com)
- Fix truncation check bugs in the Kerberos printer. Reported by Ezra
Peisach (epeisach@mit.edu)
- Don't catch SIGHUP when invoked with nohup(1). Thanks to Dave Plonka
(plonka@mfa.com)
- Specify full install target as a way of detecting if install
directory does not exist. Thanks to Dave Plonka.
- Bit-swap FDDI addresses for BSD/OS too. Thanks to Paul Vixie
(paul@vix.com)
- Fix off-by-one bug when testing size of ethernet packets. Thanks to
Marty Leisner (leisner@sdsp.mc.xerox.com)
- Add a local autoconf macro to check for routines in libraries; the
autoconf version is broken (it only puts the library name in the
cache variable name). Thanks to John Hawkinson.
- Add a local autoconf macro to check for types; the autoconf version
is broken (it uses grep instead of actually compiling a code fragment).
- Modified to support the new BSD/OS 2.1 PPP and SLIP link layer header
formats.
- Extend OSF ip header workaround to versions 1 and 2.
- Fix some signed problems in the nfs printer. As reported by David
Sacerdote (davids@silence.secnet.com)
- Detect group wheel and use it as the default since BSD/OS' install
can't hack numeric groups. Reported by David Sacerdote.
- AIX needs special loader options. Thanks to Jonathan I. Kamens
(jik@cam.ov.com)
- Fixed the nfs printer to print port numbers in decimal. Thanks to
Kent Vander Velden (graphix@iastate.edu)
- Find installed libpcap in /usr/local/lib when not using gcc.
- Disallow network masks with non-network bits set.
- Attempt to detect "egcs" versions of gcc.
- Add missing closing double quotes when displaying bootp strings.
Reported by Viet-Trung Luu (vluu@picard.math.uwaterloo.ca)
v3.3 Sat Nov 30 20:56:27 PST 1996
- Added Linux support.
- GRE encapsulated packet printer thanks to John Hawkinson
(jhawk@mit.edu)
- Rewrite gmt2local() to avoid problematic os dependencies.
- Suppress nfs truncation message on errors.
- Add missing m4 quoting in AC_LBL_UNALIGNED_ACCESS autoconf macro.
Reported by Joachim Ott (ott@ardala.han.de)
- Enable "ip_hl vs. ip_vhl" workaround for OSF4 too.
- Print arp hardware type in host order. Thanks to Onno van der Linden
(onno@simplex.nl)
- Avoid solaris compiler warnings. Thanks to Bruce Barnett
(barnett@grymoire.crd.ge.com)
- Fix rip printer to not print one more route than is actually in the
packet. Thanks to Jean-Luc Richier (Jean-Luc.Richier@imag.fr) and
Bill Fenner (fenner@parc.xerox.com)
- Use autoconf endian detection since BYTE_ORDER isn't defined on all systems.
- Fix dvmrp printer truncation checks and add a dvmrp probe printer.
Thanks to Danny J. Mitzel (mitzel@ipsilon.com)
- Rewrite ospf printer to improve truncation checks.
- Don't parse tcp options past the EOL. As noted by David Sacerdote
(davids@secnet.com). Also, check tcp options to make sure they ar
actually in the tcp header (in addition to the normal truncation
checks). Fix the SACK code to print the N blocks (instead of the
first block N times).
- Don't say really small UDP packets are truncated just because they
aren't big enough to be a RPC. As noted by David Sacerdote.
v3.2.1 Sun Jul 14 03:02:26 PDT 1996
- Added rfc1716 icmp codes as suggested by Martin Fredriksson
(martin@msp.se)
- Print mtu for icmp unreach need frag packets. Thanks to John
Hawkinson (jhawk@mit.edu)
- Decode icmp router discovery messages. Thanks to Jeffrey Honig
(jch@bsdi.com)
- Added a printer entry for DLT_IEEE802 as suggested by Tak Kushida
(kushida@trl.ibm.co.jp)
- Check igmp checksum if possible. Thanks to John Hawkinson.
- Made changes for SINIX. Thanks to Andrej Borsenkow
(borsenkow.msk@sni.de)
- Use autoconf's idea of the top level directory in install targets.
Thanks to John Hawkinson.
- Avoid infinite loop in tcp options printing code. Thanks to Jeffrey
Mogul (mogul@pa.dec.com)
- Avoid using -lsocket in IRIX 5.2 and earlier since it breaks snoop.
Thanks to John Hawkinson.
- Added some more packet truncation checks.
- On systems that have it, use sigset() instead of signal() since
signal() has different semantics on these systems.
- Fixed some more alignment problems on the alpha.
- Add code to massage unprintable characters in the domain and ipx
printers. Thanks to John Hawkinson.
- Added explicit netmask support. Thanks to Steve Nuchia
(steve@research.oknet.com)
- Add "sca" keyword (for DEC cluster services) as suggested by Terry
Kennedy (terry@spcvxa.spc.edu)
- Add "atalk" keyword as suggested by John Hawkinson.
- Added an igrp printer. Thanks to Francis Dupont
(francis.dupont@inria.fr)
- Print IPX net numbers in hex a la Novell Netware. Thanks to Terry
Kennedy (terry@spcvxa.spc.edu)
- Fixed snmp extended tag field parsing bug. Thanks to Pascal Hennequin
(pascal.hennequin@hugo.int-evry.fr)
- Added some ETHERTYPEs missing on some systems.