Net-CDP
=======

The Net::CDP module implements an advertiser/listener for the Cisco
Discovery Protocol (CDP).

CDP is a proprietary Cisco protocol for discovering devices on a network.
A typical CDP implementation sends periodic CDP packets on every network
port and listens for advertisements sent by neighboring devices.

Prerequisites
-------------

- Libnet 1.1.0 or later (http://www.packetfactory.net/Projects/Libnet/)
  To use a loopback device (for testing, for instance) you will need
  version 1.1.1 or later.
- libpcap 0.6 or later
- Carp::Clan

For testing, you will also require Test::More, and (optionally) Test::Pod.

Installation
------------

To install this module type the following:

   perl Makefile.PL
   make
   make test
   make install

'make test' will test most features if run by an unprivileged user. Some
features will be skipped, however, unless it is run by a superuser.

The C portions of this module are built using GNU Autoconf rather than
MakeMaker. This makes it easier to add various portability checks (but arguably
decreases the portability of the module as a whole). To pass options to the
'configure' process, use the CONFIGURE_ARGS option, eg:

   perl Makefile.PL CONFIGURE_ARGS=--disable-multicast

Usage
-----

CDP packets can be sent and received over a single network port by using
the Net::CDP package ('perldoc Net::CDP' for complete usage instructions).

The Net::CDP::Manager module provides a simple interface to manage multiple
ports simultaneously. For example, the following is a simple CDP
advertiser/listener script:

  use Net::CDP::Manager;

  # Callback to process each packet.
  sub callback {
    my ($packet, $port) = @_;
    print "Received packet on $port from ", $packet->device, "\n";
  }

  # Manage all available ports.
  cdp_manage(cdp_ports);

  # Send a packet every minute. Pass received packets to callback.
  while (1) {
    cdp_send;
    cdp_loop(\&callback, 60);
  }

Upgrading from Previous Versions
--------------------------------

Net::CDP version 0.07 introduces the use of named arguments instead of flag
bitmaps in some functions. Support for the old-style flag bitmaps will be
removed soon. 'perldoc Net::CDP' for more details.

Contacting the Author
---------------------

Please direct questions and comments to <cpan@very.puzzling.org>. I don't
read comp.lang.perl.modules much, so if you leave a question there I might
miss it.

Copyright and License
---------------------

Copyright (C) 2004 by Michael Chapman

libcdp is released under the terms and conditions of the GNU Library General
Public License version 2. Net::CDP may be redistributed and/or modified under
the same terms as Perl itself.

$Id: README,v 1.6 2004/09/02 05:17:38 mchapman Exp $
