# SNMP::Info::CiscoQOS
# $Id$
#
# Copyright (c) 2005 Alexander Hartmaier
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
#     * Redistributions of source code must retain the above copyright notice,
#       this list of conditions and the following disclaimer.
#     * Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer in the
#       documentation and/or other materials provided with the distribution.
#     * Neither the name of the University of California, Santa Cruz nor the
#       names of its contributors may be used to endorse or promote products
#       derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

package SNMP::Info::CiscoQOS;

use strict;
use Exporter;
use SNMP::Info;

@SNMP::Info::CiscoQOS::ISA       = qw/SNMP::Info Exporter/;
@SNMP::Info::CiscoQOS::EXPORT_OK = qw//;

use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;

$VERSION = '3.08';

%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );

%GLOBALS = ();

%FUNCS = (

    # CISCO-CLASS-BASED-QOS-MIB::cbQosServicePolicyTable
    'qos_i_index'       => 'cbQosIfIndex',
    'qos_i_type'        => 'cbQosIfType',
    'qos_pol_direction' => 'cbQosPolicyDirection',

    # CISCO-CLASS-BASED-QOS-MIB::cbQosObjectsTable
    'qos_obj_conf_index' => 'cbQosConfigIndex',
    'qos_obj_type'       => 'cbQosObjectsType',
    'qos_obj_parent'     => 'cbQosParentObjectsIndex',

    # CISCO-CLASS-BASED-QOS-MIB::cbQosCMCfgTable
    'qos_cm_name' => 'cbQosCMName',
    'qos_cm_desc' => 'cbQosCMDesc',
    'qos_cm_info' => 'cbQosCMInfo',

    # CISCO-CLASS-BASED-QOS-MIB::cbQosCMStatsTable
    'qos_octet_pre'  => 'cbQosCMPrePolicyByte',
    'qos_octet_post' => 'cbQosCMPostPolicyByte',

    # CISCO-CLASS-BASED-QOS-MIB::cbQosQueueingCfgTable
    'qos_queueingcfg_bw'       => 'cbQosQueueingCfgBandwidth',
    'qos_queueingcfg_bw_units' => 'cbQosQueueingCfgBandwidthUnits',
);

%MUNGE = ();

1;
__END__

=head1 NAME

SNMP::Info::CiscoQOS - SNMP Interface to Cisco's Quality of Service MIBs

=head1 AUTHOR

Alexander Hartmaier

=head1 SYNOPSIS

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

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

=head1 DESCRIPTION

SNMP::Info::CiscoQOS is a subclass of SNMP::Info that provides 
information about a cisco device's QoS config.

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

=head2 Inherited Classes

none.

=head2 Required MIBs

=over

=item F<CISCO-CLASS-BASED-QOS-MIB>

=back

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

=head1 GLOBALS

=over

=item none

=back

=head1 TABLE METHODS

=head2 Service Policy Table (C<cbQosServicePolicyTable>)

This table describes the interfaces/media types and the policy map that are
attached to it.

=over

=item $qos->qos_i_index()

(C<cbQosIfIndex>)

=item $qos->qos_i_type()

(C<cbQosIfType>)

=item $qos->qos_pol_direction()

(C<cbQosPolicyDirection>)

=back

=head2 Class Map Objects Table (C<cbQosObjectsTable>)

=over

=item $qos->qos_obj_index()

(C<cbQosConfigIndex>)

=item $qos->qos_obj_type()

(C<cbQosObjectsType>)

=item $qos->qos_obj_parent()

(C<cbQosParentObjectsIndex>)

=back

=head2 Class Map Configuration Table (C<cbQosCMCfgTable>)

=over

=item $qos->qos_cm_name()

(C<cbQosCMName>)

=item $qos->qos_cm_desc()

(C<cbQosCMDesc>)

=item $qos->qos_cm_info()

(C<cbQosCMInfo>)

=back

=head2 Class Map Stats Table (C<cbQosCMStatsTable>)

=over

=item $qos->qos_octet_pre()

(C<cbQosCMPrePolicyByte>)

=item $qos->qos_octet_post()

(C<cbQosCMPostPolicyByte>)

=back

=head2 Queueing Configuration Table (C<cbQosQueueingCfgTable>)

=over

=item $qos->qos_queueingcfg_bw()

(C<cbQosQueueingCfgBandwidth>)

=item $qos->qos_queueingcfg_bw_units()

(C<cbQosQueueingCfgBandwidthUnits>)

=back

=cut
