The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SNMP::Info::CiscoStack - Intefaces to data from CISCO-STACK-MIB and CISCO-PORT-SECURITY-MIB

AUTHOR

Max Baker

SYNOPSIS

 # Let SNMP::Info determine the correct subclass for you. 
 my $ciscostats = new SNMP::Info(
                          AutoSpecify => 1,
                          Debug       => 1,
                          # These arguments are passed directly on to SNMP::Session
                          DestHost    => 'myswitch',
                          Community   => 'public',
                          Version     => 2
                        ) 
    or die "Can't connect to DestHost.\n";

 my $class      = $ciscostats->class();
 print "SNMP::Info determined this device to fall under subclass : $class\n";

DESCRIPTION

SNMP::Info::CiscoStack is a subclass of SNMP::Info that provides an interface to the CISCO-STACK-MIB. This MIB is used across the Catalyst family under CatOS and IOS.

Use or create in a subclass of SNMP::Info. Do not use directly.

Inherited Classes

none.

Required MIBs

CISCO-STACK-MIB
CISCO-PORT-SECURITY-MIB

MIBs can be found at ftp://ftp.cisco.com/pub/mibs/v2/v2.tar.gz or from Netdisco-mib package at netdisco.org.

GLOBALS

$stack->broadcast()

(sysBroadcast)

$stack->fan()

(chassisFanStatus)

$stack->model()

(chassisModel)

$stack->netmask()

(sysNetMask)

$stack->ps1_type()

(chassisPs1Type)

$stack->ps2_type()

(chassisPs2Type)

$stack->ps1_status()

(chassisPs1Status)

$stack->ps2_status()

(chassisPs2Status)

$stack->serial()

(chassisSerialNumberString) or (chassisSerialNumber)

$stack->slots()

(chassisNumSlots)

CISCO-PORT-SECURITY-MIB globals

See CISCO-PORT-SECURITY-MIB for details.

$stack->cps_clear()

cpsGlobalClearSecureMacAddresses

$stack->cps_notify()

cpsGlobalSNMPNotifControl

$stack->cps_rate()

cpsGlobalSNMPNotifRate

$stack->cps_enable()

cpsGlobalPortSecurityEnable

$stack->cps_mac_count()

cpsGlobalTotalSecureAddress

$stack->cps_mac_max()

cpsGlobalMaxSecureAddress

TABLE METHODS

Interface Tables

$stack->interfaces()

Crosses p_port() with i_index() to get physical names.

$stack->i_physical()

Returns a map to IID for ports that are physical ports, not vlans, etc.

$stack->i_type()

Crosses p_port() with p_type() and returns the results.

Overrides with ifType if p_type() isn't available.

$stack->i_name()

Crosses p_name with p_port and returns results.

$stack->i_duplex()

Crosses p_duplex with p_port and returns results.

$stack->i_duplex_admin()

Crosses p_duplex_admin with p_port.

Munges bit_string returned from p_duplex_admin to get duplex settings.

$stack->set_i_speed_admin(speed, ifIndex)
    Sets port speed, must be supplied with speed and port ifIndex

    Speed choices are 'auto', '10', '100', '1000'

    Crosses $stack->p_port() with $stack->p_duplex() to
    utilize port ifIndex.

    Example:
    my %if_map = reverse %{$stack->interfaces()};
    $stack->set_i_speed_admin('auto', $if_map{'FastEthernet0/1'}) 
        or die "Couldn't change port speed. ",$stack->error(1);
$stack->set_i_duplex_admin(duplex, ifIndex)
    Sets port duplex, must be supplied with duplex and port ifIndex

    Speed choices are 'auto', 'half', 'full'

    Crosses $stack->p_port() with $stack->p_duplex() to
    utilize port ifIndex.

    Example:
    my %if_map = reverse %{$stack->interfaces()};
    $stack->set_i_duplex_admin('auto', $if_map{'FastEthernet0/1'}) 
        or die "Couldn't change port duplex. ",$stack->error(1);

Module table

This table holds configuration information for each of the blades installed in the Catalyst device.

$stack->m_type()

(moduleType)

$stack->m_model()

(moduleModel)

$stack->m_serial()

(moduleSerialNumber)

$stack->m_status()

(moduleStatus)

$stack->m_name()

(moduleName)

$stack->m_ports()

(moduleNumPorts)

$stack->m_ports_status()

Returns a list of space separated status strings for the ports.

To see the status of port 4 :

    @ports_status = split(' ', $stack->m_ports_status() );
    $port4 = $ports_status[3];

(modulePortStatus)

$stack->m_ports_hwver()

(moduleHwVersion)

$stack->m_ports_fwver()

(moduleFwVersion)

$stack->m_ports_swver()

(moduleSwVersion)

$stack->m_ports_ip()

(moduleIPAddress)

$stack->m_ports_sub1()

(moduleSubType)

$stack->m_ports_sub2()

(moduleSubType2)

Modules - Router Blades

$stack->m_ip()

(moduleIPAddress)

$stack->m_sub1()

(moduleSubType)

$stack->m_sub2()

(moduleSubType2)

Port Entry Table (CISCO-STACK-MIB::portTable)

$stack->p_name()

(portName)

$stack->p_type()

(portType)

$stack->p_status()

(portOperStatus)

$stack->p_status2()

(portAdditionalStatus)

$stack->p_speed()

(portAdminSpeed)

$stack->p_duplex()

(portDuplex)

$stack->p_port()

(portIfIndex)

$stack->p_rx_flow_control()

Can be either on off or disagree

"Indicates the receive flow control operational status of the port. If the port could not agree with the far end on a link protocol, its operational status will be disagree(3)."

portOperRxFlowControl

$stack->p_tx_flow_control()

Can be either on off or disagree

"Indicates the transmit flow control operational status of the port. If the port could not agree with the far end on a link protocol, its operational status will be disagree(3)."

portOperTxFlowControl

$stack->p_rx_flow_control_admin()

Can be either on off or desired

"Indicates the receive flow control administrative status set on the port. If the status is set to on(1), the port will require the far end to send flow control. If the status is set to off(2), the port will not allow far end to send flow control. If the status is set to desired(3), the port will allow the far end to send the flow control."

portAdminRxFlowControl

$stack->p_tx_flow_control_admin()

Can be either on off or desired

"Indicates the transmit flow control administrative status set on the port. If the status is set to on(1), the port will send flow control to the far end. If the status is set to off(2), the port will not send flow control to the far end. If the status is set to desired(3), the port will send flow control to the far end if the far end supports it."

portAdminTxFlowControl

Port Capability Table (CISCO-STACK-MIB::portCpbTable)

$stack->p_speed_admin()

(portCpbSpeed)

$stack->p_duplex_admin()

(portCpbDuplex)

CISCO-PORT-SECURITY-MIB - Interface Config Table

See CISCO-PORT-SECURITY-MIB for details.

$stack->cps_i_limit_val()

cpsIfInvalidSrcRateLimitValue

$stack->cps_i_limit()

cpsIfInvalidSrcRateLimitEnable

$stack->cps_i_sticky()

cpsIfStickyEnable

$stack->cps_i_clear_type()

cpsIfClearSecureMacAddresses

$stack->cps_i_shutdown()

cpsIfShutdownTimeout

$stack->cps_i_flood()

cpsIfUnicastFloodingEnable

$stack->cps_i_clear()

cpsIfClearSecureAddresses

$stack->cps_i_mac()

cpsIfSecureLastMacAddress

$stack->cps_i_count()

cpsIfViolationCount

$stack->cps_i_action()

cpsIfViolationAction

$stack->cps_i_mac_static()

cpsIfStaticMacAddrAgingEnable

$stack->cps_i_mac_type()

cpsIfSecureMacAddrAgingType

$stack->cps_i_mac_age()

cpsIfSecureMacAddrAgingTime

$stack->cps_i_mac_count()

cpsIfCurrentSecureMacAddrCount

$stack->cps_i_mac_max()

cpsIfMaxSecureMacAddr

$stack->cps_i_status()

cpsIfPortSecurityStatus

$stack->cps_i_enable()

cpsIfPortSecurityEnable

CISCO-PORT-SECURITY-MIB::cpsIfVlanTable

$stack->cps_i_v_mac_count()

cpsIfVlanCurSecureMacAddrCount

$stack->cps_i_v_mac_max()

cpsIfVlanMaxSecureMacAddr

$stack->cps_i_v()

cpsIfVlanIndex

CISCO-PORT-SECURITY-MIB::cpsIfVlanSecureMacAddrTable

$stack->cps_i_v_mac_status()

cpsIfVlanSecureMacAddrRowStatus

$stack->cps_i_v_mac_age()

cpsIfVlanSecureMacAddrRemainAge

$stack->cps_i_v_mac_type()

cpsIfVlanSecureMacAddrType

$stack->cps_i_v_vlan()

cpsIfVlanSecureVlanIndex

$stack->cps_i_v_mac()

cpsIfVlanSecureMacAddress

CISCO-PORT-SECURITY-MIB::cpsSecureMacAddressTable

$stack->cps_m_status()

cpsSecureMacAddrRowStatus

$stack->cps_m_age()

cpsSecureMacAddrRemainingAge

$stack->cps_m_type()

cpsSecureMacAddrType

$stack->cps_m_mac()

cpsSecureMacAddress