package OIDs;

# Module for a large (but not complete) collection of MIB-II OID 
# constants as defined in RFC 1156 (MIB-I), RFC 1213, RFC 1354 
# and RFC 1907.

# use 5.6.0;   
  
require Exporter;

our @ISA          = qw( Exporter );

# Nothing exported by default.
our @EXPORT       = qw(); 

# Individual OID's exported by request.
our @EXPORT_OK    = 

    qw( 

        sysDescr sysObjectID sysUpTime sysContact sysName 
        sysLocation sysServices

        sysORLastChange sysORTable
 
        ifNumber ifTable ifEntry ifIndex ifDescr ifType 
        ifMtu ifSpeed ifPhysAddress ifAdminStatus ifOperStatus
        ifLastChange ifInOctets ifInUcastPkts ifInNUcastPkts 
        ifInDiscards ifInErrors ifInUnknownProtos ifOutOctets 
        ifOutUcastPkts ifOutNUcastPkts ifOutDiscards ifOutErrors
        ifOutQLen ifSpecific 

        atTable atEntry atIfIndex atPhysAddress atNetAddress

        ipForwarding ipDefaultTTL ipInReceives ipInHdrErrors 
        ipInAddrErrors ipForwDatagrams ipInUnknownProtos 
        ipInDiscards ipInDelivers ipOutRequests ipOutOutDiscards 
        ipOutNoRoutes ipReasmTimeOut ipReasmReqds ipReasmOKs
        ipReasmFails ipFragOKs ipFragFails ipFragCreates 
        ipAddrTable ipRouteTable ipNetToMediaTable 
        ipRoutingDiscards ipForward
    
        ipForward ipForwardNumber ipForwardTable ipForwardEntry

        ipRouteEntry ipRouteDest ipRouteIfIndex ipRouteMetric1
        ipRouteMetric2 ipRouteMetric3 ipRouteMetric4 ipRouteNextHop
        ipRouteType ipRouteProto ipRouteAge ipRouteMask
        ipRouteMetric5 ipRouteInfo

        icmpInMsgs icmpInErrors icmpInDestUnreachs icmpInTimeExcds 
        icmpInParmProbs icmpInSrcQuenches icmpInRedirects 
        icmpInEchos icmpInEchoReps icmpInTimestamps 
        icmpInTimestampsReps icmpInAddrMasks icmpInAddrMaskReps 
        icmpOutMsgs icmpOutErrors icmpOutDestUnreachs 
        icmpOutTimeExcds icmpOutParmProbs icmpOutSrcQuenches
        icmpOutRedirects icmpOutEchos icmpOutEchoReps
        icmpOutTimestamps icmpOutTimestampReps
        icmpOutAddrMasks icmpOutAddrMaskReps

        tcpRtoAlgorithm tcpRtoMin tcpRtoMax tcpMaxConn
        tcpActiveOpens tcpPassiveOpens tcpAttemptFails
        tcpEstabResets tcpCurrEstab tcpInSegs tcpOutSegs
        tcpRetransSegs tcpConnTable tcpInErrs tcpOutRsts

        udpInDatagrams udpNoPorts udpInErrors udpOutDatagrams 
        udpTable udpEntry udpLocalAddress udpLocalPort 
    );
                      
# Groups of OID's exported by request.
our %EXPORT_TAGS = 
    (
        system => [ qw( sysDescr sysObjectID sysUpTime sysContact 
            sysName sysLocation sysServices ) ],

        system2 => [ qw( sysDescr sysObjectID sysUpTime sysContact 
            sysName sysLocation sysServices sysORLastChange 
            sysORTable ) ],

        interfaces => [ qw( ifNumber ifTable ifEntry ifIndex ifDescr 
            ifType ifMtu ifSpeed ifPhysAddress ifAdminStatus 
            ifOperStatus ifLastChange ifInOctets ifInUcastPkts 
            ifInNUcastPkts ifInDiscards ifInErrors ifInUnknownProtos 
            ifOutOctets ifOutUcastPkts ifOutNUcastPkts 
            ifOutDiscards ifOutErrors ifOutQLen ifSpecific ) ],

        at => [ qw ( atTable atEntry atIfIndex atPhysAddress 
            atNetAddress ) ],

        ip => [ qw ( ipForwarding ipDefaultTTL ipInReceives 
            ipInHdrErrors ipInAddrErrors ipForwDatagrams
            ipInUnknownProtos ipInDiscards ipInDelivers 
            ipOutRequests ipOutOutDiscards ipOutNoRoutes
            ipReasmTimeOut ipReasmReqds ipReasmOKs ipReasmFails 
            ipFragOKs ipFragFails ipFragCreates ipAddrTable 
            ipRouteTable ipNetToMediaTable ipRoutingDiscards 
            ipForward ) ],

        ipFwd => [ qw ( ipForward ipForwardNumber ipForwardTable
            ipForwardEntry ) ],

        iproutetable => [ qw ( ipRouteEntry ipRouteDest 
            ipRouteIfIndex ipRouteMetric1 ipRouteMetric2 
            ipRouteMetric3 ipRouteMetric4 ipRouteNextHop
            ipRouteType ipRouteProto ipRouteAge ipRouteMask
            ipRouteMetric5 ipRouteInfo )],

        icmp => [ qw ( icmpInMsgs icmpInErrors icmpInDestUnreachs 
            icmpInTimeExcds icmpInParmProbs icmpInSrcQuenches
            icmpInRedirects icmpInEchos icmpInEchoReps 
            icmpInTimestamps icmpInTimestampsReps icmpInAddrMasks 
            icmpInAddrMaskReps icmpOutMsgs icmpOutErrors 
            icmpOutDestUnreachs icmpOutTimeExcds icmpOutParmProbs 
            icmpOutSrcQuenches icmpOutRedirects icmpOutEchos 
            icmpOutEchoReps icmpOutTimestamps icmpOutTimestampReps
            icmpOutAddrMasks icmpOutAddrMaskReps ) ],

        tcp => [ qw ( tcpRtoAlgorithm tcpRtoMin tcpRtoMax tcpMaxConn
            tcpActiveOpens tcpPassiveOpens tcpAttemptFails
            tcpEstabResets tcpCurrEstab tcpInSegs tcpOutSegs
            tcpRetransSegs tcpConnTable tcpInErrs tcpOutRsts ) ],

        udp => [ qw ( udpInDatagrams udpNoPorts udpInErrors 
            udpOutDatagrams udpTable 
            udpEntry udpLocalAddress udpLocalPort ) ],

    );
                      
our $VERSION      = 0.01;

# All TCP/IP OID's start with this string.
use constant MIB_II            => '1.3.6.1.2.1.'; 

# The 'system' group re: SNMPv1 and RFC 1213.
use constant sysDescr          => MIB_II . '1.1.0';
use constant sysObjectID       => MIB_II . '1.2.0';
use constant sysUpTime         => MIB_II . '1.3.0';
use constant sysContact        => MIB_II . '1.4.0';
use constant sysName           => MIB_II . '1.5.0';
use constant sysLocation       => MIB_II . '1.6.0';
use constant sysServices       => MIB_II . '1.7.0';
# Additions to 'system' group re: SNMPv2 and RFC 1907.
use constant sysORLastChange   => MIB_II . '1.8.0';  
use constant sysORTable        => MIB_II . '1.9';

# The 'interfaces' group re: SNMPv1 and RFC 1213.
use constant ifNumber          => MIB_II . '2.1.0';
use constant ifTable           => MIB_II . '2.2';
use constant ifEntry           => MIB_II . '2.2.1';
use constant ifIndex           => MIB_II . '2.2.1.1';
use constant ifDescr           => MIB_II . '2.2.1.2';
use constant ifType            => MIB_II . '2.2.1.3';
use constant ifMtu             => MIB_II . '2.2.1.4';
use constant ifSpeed           => MIB_II . '2.2.1.5';
use constant ifPhysAddress     => MIB_II . '2.2.1.6';
use constant ifAdminStatus     => MIB_II . '2.2.1.7';
use constant ifOperStatus      => MIB_II . '2.2.1.8';
use constant ifLastChange      => MIB_II . '2.2.1.9';
use constant ifInOctets        => MIB_II . '2.2.1.10';
use constant ifInUcastPkts     => MIB_II . '2.2.1.11';
use constant ifInNUcastPkts    => MIB_II . '2.2.1.12';
use constant ifInDiscards      => MIB_II . '2.2.1.13';
use constant ifInErrors        => MIB_II . '2.2.1.14';
use constant ifInUnknownProtos => MIB_II . '2.2.1.15';
use constant ifOutOctets       => MIB_II . '2.2.1.16';
use constant ifOutUcastPkts    => MIB_II . '2.2.1.17';
use constant ifOutNUcastPkts   => MIB_II . '2.2.1.18';
use constant ifOutDiscards     => MIB_II . '2.2.1.19';
use constant ifOutErrors       => MIB_II . '2.2.1.20';
use constant ifOutQLen         => MIB_II . '2.2.1.21';
use constant ifSpecific        => MIB_II . '2.2.1.22';

# The 'at' group re: RFC 1156.  Use of this group is deprecated.
use constant atTable           => MIB_II . '3.1';
use constant atEntry           => MIB_II . '3.1.1';
use constant atIfIndex         => '.1'; 
use constant atPhysAddress     => '.2';
use constant atNetAddress      => '.3';

# The 'ip' group re: RFC 1213.
use constant ipForwarding      => MIB_II . '4.1.0';
use constant ipDefaultTTL      => MIB_II . '4.2.0';
use constant ipInReceives      => MIB_II . '4.3.0';
use constant ipInHdrErrors     => MIB_II . '4.4.0';
use constant ipInAddrErrors    => MIB_II . '4.5.0';
use constant ipForwDatagrams   => MIB_II . '4.6.0';
use constant ipInUnknownProtos => MIB_II . '4.7.0';
use constant ipInDiscards      => MIB_II . '4.8.0';
use constant ipInDelivers      => MIB_II . '4.9.0';
use constant ipOutRequests     => MIB_II . '4.10.0';
use constant ipOutOutDiscards  => MIB_II . '4.11.0';
use constant ipOutNoRoutes     => MIB_II . '4.12.0';
use constant ipReasmTimeOut    => MIB_II . '4.13.0';
use constant ipReasmReqds      => MIB_II . '4.14.0';
use constant ipReasmOKs        => MIB_II . '4.15.0';
use constant ipReasmFails      => MIB_II . '4.16.0';
use constant ipFragOKs         => MIB_II . '4.17.0';
use constant ipFragFails       => MIB_II . '4.18.0';
use constant ipFragCreates     => MIB_II . '4.19.0';
use constant ipAddrTable       => MIB_II . '4.20';
use constant ipRouteTable      => MIB_II . '4.21';
use constant ipRouteEntry      => MIB_II . '4.21.1';
use constant ipRouteDest       => MIB_II . '4.21.1.1';
use constant ipRouteIfIndex    => MIB_II . '4.21.1.2';
use constant ipRouteMetric1    => MIB_II . '4.21.1.3';
use constant ipRouteMetric2    => MIB_II . '4.21.1.4';
use constant ipRouteMetric3    => MIB_II . '4.21.1.5';
use constant ipRouteMetric4    => MIB_II . '4.21.1.6';
use constant ipRouteNextHop    => MIB_II . '4.21.1.7';
use constant ipRouteType       => MIB_II . '4.21.1.8';
use constant ipRouteProto      => MIB_II . '4.21.1.9';
use constant ipRouteAge        => MIB_II . '4.21.1.10';
use constant ipRouteMask       => MIB_II . '4.21.1.11';
use constant ipRouteMetric5    => MIB_II . '4.21.1.12';
use constant ipRouteInfo       => MIB_II . '4.21.1.13';
use constant ipNetToMediaTable => MIB_II . '4.22';
use constant ipRoutingDiscards => MIB_II . '4.23.0';
# An addition to the 'ip' group from RFC 1354.
use constant ipForward         => MIB_II . '4.24';
use constant ipForwardNumber   => MIB_II . '4.24.1.0';
use constant ipForwardTable    => MIB_II . '4.24.2.0';
use constant ipForwardEntry    => MIB_II . '4.24.2.1';

# The 'icmp' group re: SNMPv1 and RFC 1213.
use constant icmpInMsgs             => MIB_II . '5.1.0';
use constant icmpInErrors           => MIB_II . '5.2.0';
use constant icmpInDestUnreachs     => MIB_II . '5.3.0';
use constant icmpInTimeExcds        => MIB_II . '5.4.0';
use constant icmpInParmProbs        => MIB_II . '5.5.0';
use constant icmpInSrcQuenches      => MIB_II . '5.6.0';
use constant icmpInRedirects        => MIB_II . '5.7.0';
use constant icmpInEchos            => MIB_II . '5.8.0';
use constant icmpInEchoReps         => MIB_II . '5.9.0';
use constant icmpInTimestamps       => MIB_II . '5.10.0';
use constant icmpInTimestampsReps   => MIB_II . '5.11.0';
use constant icmpInAddrMasks        => MIB_II . '5.12.0';
use constant icmpInAddrMaskReps     => MIB_II . '5.13.0';
use constant icmpOutMsgs            => MIB_II . '5.14.0';
use constant icmpOutErrors          => MIB_II . '5.15.0';
use constant icmpOutDestUnreachs    => MIB_II . '5.16.0';
use constant icmpOutTimeExcds       => MIB_II . '5.17.0';
use constant icmpOutParmProbs       => MIB_II . '5.18.0';
use constant icmpOutSrcQuenches     => MIB_II . '5.19.0';
use constant icmpOutRedirects       => MIB_II . '5.20.0';
use constant icmpOutEchos           => MIB_II . '5.21.0';
use constant icmpOutEchoReps        => MIB_II . '5.22.0';
use constant icmpOutTimestamps      => MIB_II . '5.23.0';
use constant icmpOutTimestampReps   => MIB_II . '5.24.0';
use constant icmpOutAddrMasks       => MIB_II . '5.25.0';
use constant icmpOutAddrMaskReps    => MIB_II . '5.26.0';

# The 'tcp' group from RFC 1213.
use constant tcpRtoAlgorithm        => MIB_II . '6.1.0';
use constant tcpRtoMin              => MIB_II . '6.2.0';
use constant tcpRtoMax              => MIB_II . '6.3.0';
use constant tcpMaxConn             => MIB_II . '6.4.0';
use constant tcpActiveOpens         => MIB_II . '6.5.0';
use constant tcpPassiveOpens        => MIB_II . '6.6.0';
use constant tcpAttemptFails        => MIB_II . '6.7.0';
use constant tcpEstabResets         => MIB_II . '6.8.0';
use constant tcpCurrEstab           => MIB_II . '6.9.0';
use constant tcpInSegs              => MIB_II . '6.10.0';
use constant tcpOutSegs             => MIB_II . '6.11.0';
use constant tcpRetransSegs         => MIB_II . '6.12.0';
use constant tcpConnTable           => MIB_II . '6.13';
use constant tcpInErrs              => MIB_II . '6.14.0';
use constant tcpOutRsts             => MIB_II . '6.15.0';

# The 'udp' group from RFC 1213.
use constant udpInDatagrams         => MIB_II . '7.1.0';
use constant udpNoPorts             => MIB_II . '7.2.0';
use constant udpInErrors            => MIB_II . '7.3.0';
use constant udpOutDatagrams        => MIB_II . '7.4.0';
use constant udpTable               => MIB_II . '7.5';
use constant udpEntry               => MIB_II . '7.5.1';
use constant udpLocalAddress        => MIB_II . '7.5.1.1';
use constant udpLocalPort           => MIB_II . '7.5.1.2';

# Not included: the 'egp', 'cmot', 'transmission', and 'snmp' group.

1;
