I (Chander Ganesan) have enhanced NetPacket::Ethernet to allow for encoding/decoding of 802.3 packets (which was not originally working, though mentioned in the README), and as a result am re-releasing the NetPacket package with a new version (0.04).  I would pass this on to Tim Potter, but have as yet been unable to reach him at his samba.org address.  This version includes all the features and functionality listed below, in addition to the following:

Decoding/encoding protocol support for:
  - LLC (Logical Link Control)
  - Spanning Tree (802.1D) and Rapid Spanning Tree (802.1w)
  - LACP decoding is present, but not complete (yet).

For the LLC, ST, and LACP modules the following copyright notice applies:

Copyright (c) 2002 Chander Ganesan.

This package is free software and is provided "as is" without express 
or implied warranty.  It may be used, redistributed and/or modified 
under the terms of the Perl Artistic License (see
http://www.perl.com/perl/misc/Artistic.html)

This software and all associated data and documentation
('Software') is available free of charge.  You may make copies of the 
Software but you must include all of this notice on any copy.

The Software was developed for research purposes does not
warrant that it is error free or fit for any purpose.  The author
disclaims any liability for all claims, expenses, losses, damages
and costs any user may incur as a result of using, copying or
modifying the Software.


Below is Tim Potters original readme file.
---
This README file is in -*- text -*- mode, because Emacs likes it that
way.

This is the second release, actually numbered 0.03, of a whole bunch of
Perl modules which I have named NetPacket::*.  These modules do basic
disassembly of network packets of various Internet protocols.  NetPacket
0.01 contained hooks for assembly of packets which have been implemented in
this version by Stephanie Wehner <atrak@itsx.com>.

I've used these scripts for a variety of little jobs such as snooping
various TCP services, gathering network traffic statistics by
source/destination/protocol, and for unpacking the contents of IP
tunnels.  They're actually pretty useful.  I recommend fetching and
installing the Net::Pcap module to actually gather packet data, and
for writing small scripts based on packet capture, the Net::PcapUtils
module is also useful.

At present, decoding for the following protocols has been
implemented.  

	- Ethernet (802.3 and 802.2)
	- ARP
	- ICMP
	- IGMP
	- IP
	- UDP
	- TCP

It's pretty easy to add new protocols.  Just copy one of the existing
modules and figure out an unpack string which will unpack the
information in the packet and store the data into fields in the
namespace of the NetPacket::whatever object.  More information can be
found in the NetPacket(3) manpage, which is the base class module.

I'd be interested in receiving bug reports, comments or any
improvements (especially additional protocols) to the NetPacket
modules.


Tim Potter
30th July, 2001
tpot@samba.org