NAME

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

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.

AUTHOR

Max Baker (max@warped.org)

SYNOPSIS

my $info = new SNMP::Info ( DestHost  => 'router', 
                            Community => 'public' 
                          );

my $type = $info->device_type();

my $cdp  = new $type ( DestHost => 'router',
                       Community => 'public);

$hascdp = $cdp->hasCDP() ? 'yes' : 'no';
@neighbor_ips = values( %{$cdp->c_ip()} );

See SNMP::Info for all inherited methods.

Your Device May Vary

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.

CDP GLOBAL VALUES

$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?

(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_id()

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)

CDP CACHE ENTRIES

$cdp->c_proto()

Returns remote address type received. Usually IP.

(cdpCacheAddressType)

$cdp->c_ip()

Returns remote IP address

(cdpCacheAddress)

$cdp->c_ver()

Returns remote hardware version

(cdpCacheVersion)

$cdp->c_id()

Returns remote device id string

(cdpCacheDeviceId)

$cdp->c_port()

Returns remote port ID

(cdpDevicePort)

$cdp->c_platform()

Returns remote platform id

(cdpCachePlatform)

$cdp->c_capabilities()

Returns Device Functional Capabilities. Results are munged into an ascii binary string, 7 digits long, MSB. Each digit represents a bit from the table below.

From http://www.cisco.com/univercd/cc/td/doc/product/lan/trsrb/frames.htm#18843:

(Bit) - Description

(0x40) - Provides level 1 functionality.
(0x20) - The bridge or switch does not forward IGMP Report packets on nonrouter 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 martin -at- lorensen.dk for a pointer to this information.

(cdpCacheCapabilities)

$cdp->c_domain()

Returns remote VTP Management Domain as defined in CISCO-VTP-MIB::managementDomainName

(cdpCacheVTPMgmtDomain)

$cdp->c_vlan()

Returns the remote interface native VLAN.

(cdpCacheNativeVLAN)

$cdp->c_duplex()

Returns the port duplex status from remote devices.

(cdpCacheDuplex)