Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
SNMP::Info::CDP(3)    User Contributed Perl Documentation   SNMP::Info::CDP(3)

NAME
       SNMP::Info::CDP - SNMP Interface	to Cisco Discovery Protocol (CDP)
       using SNMP

AUTHOR
       Max Baker

SYNOPSIS
	my $cdp	= new SNMP::Info (
				    AutoSpecify	=> 1,
				    Debug	=> 1,
				    DestHost	=> 'router',
				    Community	=> 'public',
				    Version	=> 2
				  );

	my $class = $cdp->class();
	print "	Using device sub class : $class\n";

	$hascdp	  = $cdp->hasCDP() ? 'yes' : 'no';

	# Print	out a map of device ports with CDP neighbors:
	my $interfaces = $cdp->interfaces();
	my $cdp_if	 = $cdp->cdp_if();
	my $cdp_ip	 = $cdp->cdp_ip();
	my $cdp_port	 = $cdp->cdp_port();

	foreach	my $cdp_key (keys %$cdp_ip){
	   my $iid	     = $cdp_if->{$cdp_key};
	   my $port	     = $interfaces->{$iid};
	   my $neighbor	     = $cdp_ip->{$cdp_key};
	   my $neighbor_port = $cdp_port->{$cdp_key};
	   print "Port : $port connected to $neighbor /	$neighbor_port\n";
	}

DESCRIPTION
       SNMP::Info::CDP is a subclass of	SNMP::Info that	provides an object
       oriented	interface to CDP information through SNMP.

       CDP is a	Layer 2	protocol that supplies topology	information of devices
       that also speak CDP, mostly switches and	routers.  CDP is implemented
       in Cisco	and some HP devices.

       Create or use a device subclass that inherits this class.  Do not use
       directly.

       Each device implements a	subset of the global and cache entries.	 Check
       the return value	to see if that data is held by the device.

   Inherited Classes
       None.

   Required MIBs
       CISCO-CDP-MIB

       MIBs can	be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz

GLOBAL METHODS
       These are methods that return scalar values from	SNMP

       $cdp->hasCDP()
	   Is CDP is active in this device?

	   Accounts for	SNMP version 1 devices which may have CDP but not
	   cdp_run()

       $cdp->cdp_run()
	   Is CDP enabled on this device?  Note	that a lot of Cisco devices
	   that	implement CDP don't implement this value. @#%$!

	   ("cdpGlobalRun")

       $cdp->cdp_interval()
	   Interval in seconds at which	CDP messages are generated.

	   ("cdpGlobalMessageInterval")

       $cdp->cdp_holdtime()
	   Time	in seconds that	CDP messages are kept.

	   ("cdpGlobalHoldTime")

       $cdp->cdp_gid()
	   Returns CDP device ID.

	   This	is the device id broadcast via CDP to other devices, and is
	   what	is retrieved from remote devices with $cdp->id().

	   ("cdpGlobalDeviceId")

TABLE METHODS
       These are methods that return tables of information in the form of a
       reference to a hash.

   CDP CACHE ENTRIES
       $cdp->cdp_capabilities()
	   Returns Device Functional Capabilities.  Results are	munged into an
	   ascii binary	string,	MSB.  Each digit represents a bit from the
	   table below from the	CDP Capabilities Mapping to Smartport Type
	   table within	the Cisco Small	Business 200 Series Smart Switch
	   Administration Guide,
	   <http://www.cisco.com/c/en/us/support/switches/small-business-200-series-smart-switches/products-maintenance-guides-list.html>:

	   (Bit) - Description

	   (0x400) - Two-Port MAC Relay.
	   (0x200) - CAST Phone	Port / CVTA / Supports-STP-Dispute depending
	   upon	platform.
	   (0x100) - Remotely-Managed Device.
	   (0x80)  - VoIP Phone.
	   (0x40)  - Provides level 1 functionality.
	   (0x20)  - The bridge	or switch does not forward IGMP	Report packets
	   on non router ports.
	   (0x10)  - Sends and receives	packets	for at least one network layer
	   protocol. If	the device is routing the protocol, this bit should
	   not be set.
	   (0x08)  - Performs level 2 switching. The difference	between	this
	   bit and bit 0x02 is that a switch does not run the Spanning-Tree
	   Protocol. This device is assumed to be deployed in a	physical loop-
	   free	topology.
	   (0x04)  - Performs level 2 source-route bridging. A source-route
	   bridge would	set both this bit and bit 0x02.
	   (0x02)  - Performs level 2 transparent bridging.
	   (0x01)  - Performs level 3 routing for at least one network layer
	   protocol.

	   Thanks to Martin Lorensen for a pointer to the original information
	   and CPAN user Alex for updates.

	   ("cdpCacheCapabilities")

       $cdp->cdp_domain()
	   Returns remote VTP Management Domain	as defined in
	   "CISCO-VTP-MIB::managementDomainName"

	   ("cdpCacheVTPMgmtDomain")

       $cdp->cdp_duplex()
	   Returns the port duplex status from remote devices.

	   ("cdpCacheDuplex")

       $cdp->cdp_id()
	   Returns remote device id string

	   ("cdpCacheDeviceId")

       $cdp->cdp_if()
	   Returns the mapping to the SNMP Interface Table.

	   Note	that a lot devices don't implement $cdp->cdp_index(),  So if
	   it isn't around, we fake it.

	   In order to map the cdp table entry back to the interfaces()	entry,
	   we truncate the last	number off of it :

	     # it exists, yay.
	     my	$cdp_index     = $device->cdp_index();
	     return $cdp_index if defined $cdp_index;

	     # if not, let's fake it
	     my	$cdp_ip	      =	$device->cdp_ip();

	     my	%cdp_if
	     foreach my	$key (keys %$cdp_ip){
		 $iid =	$key;
		 ## Truncate off .1 from cdp response
		 $iid =~ s/\.\d+$//;
		 $cdp_if{$key} = $iid;
	     }

	     return \%cdp_if;

       $cdp->cdp_index()
	   Returns the mapping to the SNMP2 Interface table for	CDP Cache
	   Entries.

	   Most	devices	don't implement	this, so you probably want to use
	   $cdp->cdp_if() instead.

	   See cdp_if()	entry.

	   ("cdpCacheIfIndex")

       $cdp->cdp_ip()
	   If $cdp->cdp_proto()	is supported, returns remote IPV4 address
	   only.  Otherwise it will return all addresses.

	   ("cdpCacheAddress")

       $cdp->cdp_addr()
	   Returns remote address

	   ("cdpCacheAddress")

       $cdp->cdp_platform()
	   Returns remote platform id

	   ("cdpCachePlatform")

       $cdp->cdp_port()
	   Returns remote port ID

	   ("cdpDevicePort")

       $cdp->cdp_proto()
	   Returns remote address type received.  Usually IP.

	   ("cdpCacheAddressType")

       $cdp->cdp_ver()
	   Returns remote hardware version

	   ("cdpCacheVersion")

       $cdp->cdp_vlan()
	   Returns the remote interface	native VLAN.

	   ("cdpCacheNativeVLAN")

       $cdp->cdp_power()
	   Returns the amount of power consumed	by remote device in milliwatts
	   munged for decimal placement.

	   ("cdpCachePowerConsumption")

       $cdp->cdp_cap()
	   Returns hash	of arrays with each array containing the system
	   capabilities	supported by the remote	system.	 Possible elements in
	   the array are "Router", "Trans-Bridge", "Source-Route-Bridge",
	   "Switch", "Host", "IGMP", "Repeater", "VoIP-Phone",
	   "Remotely-Managed-Device", "Supports-STP-Dispute", and "Two-port
	   Mac Relay".

Data Munging Callback Subroutines
       $cdp->munge_power()
	   Inserts a decimal at	the proper location.

perl v5.32.0			  2020-08-09		    SNMP::Info::CDP(3)

NAME | AUTHOR | SYNOPSIS | DESCRIPTION | GLOBAL METHODS | TABLE METHODS | Data Munging Callback Subroutines

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=SNMP::Info::CDP&sektion=3&manpath=FreeBSD+12.1-RELEASE+and+Ports>

home | help