Rechercher une page de manuel
SNMP::Info::CDP.3pm
Langue: en
Version: 2006-06-30 (mandriva - 22/10/07)
Section: 3 (Bibliothèques de fonctions)
NAME
SNMP::Info::CDP - Perl5 Interface to Cisco Discovery Protocol (CDP) using SNMPAUTHOR
Max BakerSYNOPSIS
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 $c_if = $cdp->c_if(); my $c_ip = $cdp->c_ip(); my $c_port = $cdp->c_port();
foreach my $cdp_key (keys %$c_ip){ my $iid = $c_if->{$cdp_key}; my $port = $interfaces->{$iid}; my $neighbor = $c_ip->{$cdp_key}; my $neighbor_port = $c_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_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)
TABLE METHODS
These are methods that return tables of information in the form of a reference to a hash.CDP CACHE ENTRIES
- $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_duplex()
- Returns the port duplex status from remote devices.
(cdpCacheDuplex)
- $cdp->c_id()
- Returns remote device id string
(cdpCacheDeviceId)
- $cdp->c_if()
- Returns the mapping to the SNMP Interface Table.
Note that a lot devices don't implement $cdp->c_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 $c_index = $device->c_index(); return $c_index if defined $c_index;
# if not, let's fake it my $c_ip = $device->c_ip();
my %c_if foreach my $key (keys %$c_ip){ $iid = $key; ## Truncate off .1 from cdp response $iid =~ s/\.\d+$//; $c_if{$key} = $iid; }
return \%c_if;
- $cdp->c_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->c_if() instead.
See c_if() entry.
(cdpCacheIfIndex)
- $cdp->c_ip()
- Returns remote IP address
(cdpCacheAddress)
- $cdp->c_platform()
- Returns remote platform id
(cdpCachePlatform)
- $cdp->c_port()
- Returns remote port ID
(cdpDevicePort)
- $cdp->c_proto()
- Returns remote address type received. Usually IP.
(cdpCacheAddressType)
- $cdp->c_ver()
- Returns remote hardware version
(cdpCacheVersion)
- $cdp->c_vlan()
- Returns the remote interface native VLAN.
(cdpCacheNativeVLAN)
Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre