File Coverage

blib/lib/Net/SNMP/Interfaces/Details.pm
Criterion Covered Total %
statement 18 54 33.3
branch 0 12 0.0
condition 0 8 0.0
subroutine 6 14 42.8
pod 6 6 100.0
total 30 94 31.9


line stmt bran cond sub pod time code
1             #*****************************************************************************
2             #* *
3             #* Gellyfish Software *
4             #* *
5             #* *
6             #*****************************************************************************
7             #* *
8             #* PROGRAM : Net::SNMP::Interfaces::Details *
9             #* *
10             #* AUTHOR : JNS *
11             #* *
12             #* DESCRIPTION : Provide object methods for a particular interface. *
13             #* *
14             #* *
15             #*****************************************************************************
16             #* *
17             #* $Log: Details.pm,v $
18             #* Revision 1.2 2005/01/10 21:34:47 jonathan
19             #* Moving files around
20             #*
21             #* Revision 1.1 2005/01/10 21:16:20 jonathan
22             #* * Fixed the DESTROY bug
23             #* * Reorganized the distribution
24             #*
25             #* Revision 0.3 2002/03/14 07:53:38 gellyfish
26             #* * Improvements in the error handling
27             #*
28             #* Revision 0.2 2002/03/14 07:09:47 gellyfish
29             #* * Added rfc2863 ifXTable stuff
30             #* * test.pl uses Test module
31             #*
32             #* *
33             #* *
34             #*****************************************************************************
35              
36             package Net::SNMP::Interfaces::Details;
37              
38 2     2   1012 use strict;
  2         4  
  2         73  
39 2     2   10 no warnings qw(deprecated);
  2         3  
  2         85  
40              
41             =head1 NAME
42              
43             Net::SNMP::Interfaces::Details - Object methods to obtain interface data.
44              
45             =head1 SYNOPSIS
46              
47             $in_octets = $interface->ifInOctets();
48              
49             =head1 DESCRIPTION
50              
51             This class represents an individual interface as discovered by
52             Net::SNMP::Interfaces. Although it is possible to call the contructor
53             directly it is primarily intended that these objects should be returned
54             by methods of Net::SNMP::Interfaces.
55              
56             =cut
57              
58 2     2   1468 use Net::SNMP;
  2         82049  
  2         311  
59 2     2   15 use Carp;
  2         4  
  2         108  
60              
61 2         2204 use vars qw(
62             @ISA
63             $AUTOLOAD
64             $VERSION
65 2     2   11 );
  2         4  
66              
67             ($VERSION) = q$Revision: 1.4 $ =~ /([\d.]+)/;
68              
69             my %OIDS = (
70             ifInOctets => '1.3.6.1.2.1.2.2.1.10',
71             ifInUcastPkts => '1.3.6.1.2.1.2.2.1.11',
72             ifInNUcastPkts => '1.3.6.1.2.1.2.2.1.12',
73             ifInDiscards => '1.3.6.1.2.1.2.2.1.13',
74             ifInErrors => '1.3.6.1.2.1.2.2.1.14',
75             ifInUnknownProtos => '1.3.6.1.2.1.2.2.1.15',
76             ifOutOctets => '1.3.6.1.2.1.2.2.1.16',
77             ifOutUcastPkts => '1.3.6.1.2.1.2.2.1.17',
78             ifOutNUcastPkts => '1.3.6.1.2.1.2.2.1.18',
79             ifOutDiscards => '1.3.6.1.2.1.2.2.1.19',
80             ifDescr => '1.3.6.1.2.1.2.2.1.2',
81             ifOutErrors => '1.3.6.1.2.1.2.2.1.20',
82             ifOutQLen => '1.3.6.1.2.1.2.2.1.21',
83             ifSpecific => '1.3.6.1.2.1.2.2.1.22',
84             ifType => '1.3.6.1.2.1.2.2.1.3',
85             ifMtu => '1.3.6.1.2.1.2.2.1.4',
86             ifSpeed => '1.3.6.1.2.1.2.2.1.5',
87             ifPhysAddress => '1.3.6.1.2.1.2.2.1.6',
88             ifAdminHack => '1.3.6.1.2.1.2.2.1.7',
89             ifAdminStatus => '1.3.6.1.2.1.2.2.1.7',
90             ifOperHack => '1.3.6.1.2.1.2.2.1.8',
91             ifOperStatus => '1.3.6.1.2.1.2.2.1.8',
92             ifLastChange => '1.3.6.1.2.1.2.2.1.9',
93             ifName => '1.3.6.1.2.1.31.1.1.1.1',
94             ifInMulticastPkts => '1.3.6.1.2.1.31.1.1.1.2',
95             ifInBroadcastPkts => '1.3.6.1.2.1.31.1.1.1.3',
96             ifOutMulticastPkts => '1.3.6.1.2.1.31.1.1.1.4',
97             ifOutBroadcastPkts => '1.3.6.1.2.1.31.1.1.1.5',
98             ifHCInOctets => '1.3.6.1.2.1.31.1.1.1.6',
99             ifHCInUcastPkts => '1.3.6.1.2.1.31.1.1.1.7',
100             ifHCInMulticastPkts => '1.3.6.1.2.1.31.1.1.1.8',
101             ifHCInBroadcastPkts => '1.3.6.1.2.1.31.1.1.1.9',
102             ifHCOutOctets => '1.3.6.1.2.1.31.1.1.1.10',
103             ifHCOutUcastPkts => '1.3.6.1.2.1.31.1.1.1.11',
104             ifHCOutMulticastPkts => '1.3.6.1.2.1.31.1.1.1.12',
105             ifHCOutBroadcastPkts => '1.3.6.1.2.1.31.1.1.1.13',
106             ifLinkUpDownTrapEnable => '1.3.6.1.2.1.31.1.1.1.14',
107             ifHighSpeed => '1.3.6.1.2.1.31.1.1.1.15',
108             ifPromiscuousMode => '1.3.6.1.2.1.31.1.1.1.16',
109             ifConnectorPresent => '1.3.6.1.2.1.31.1.1.1.17',
110             ifAlias => '1.3.6.1.2.1.31.1.1.1.18',
111             ifCounterDiscontinuityTime => '1.3.6.1.2.1.31.1.1.1.19',
112             );
113              
114             my %IANAifType = (
115             1 => 'other',
116             2 => 'regular1822',
117             3 => 'hdh1822',
118             4 => 'ddnX25',
119             5 => 'rfc877x25',
120             6 => 'ethernetCsmacd',
121             7 => 'iso88023Csmacd',
122             8 => 'iso88024TokenBus',
123             9 => 'iso88025TokenRing',
124             10 => 'iso88026Man',
125             11 => 'starLan',
126             12 => 'proteon10Mbit',
127             13 => 'proteon80Mbit',
128             14 => 'hyperchannel',
129             15 => 'fddi',
130             16 => 'lapb',
131             17 => 'sdlc',
132             18 => 'ds1',
133             19 => 'e1',
134             20 => 'basicISDN',
135             21 => 'primaryISDN',
136             22 => 'propPointToPointSerial',
137             23 => 'ppp',
138             24 => 'softwareLoopback',
139             25 => 'eon',
140             26 => 'ethernet3Mbit',
141             27 => 'nsip',
142             28 => 'slip',
143             29 => 'ultra',
144             30 => 'ds3',
145             31 => 'sip',
146             32 => 'frameRelay',
147             33 => 'rs232',
148             34 => 'para',
149             35 => 'arcnet',
150             36 => 'arcnetPlus',
151             37 => 'atm',
152             38 => 'miox25',
153             39 => 'sonet',
154             40 => 'x25ple',
155             41 => 'iso88022llc',
156             42 => 'localTalk',
157             43 => 'smdsDxi',
158             44 => 'frameRelayService',
159             45 => 'v35',
160             46 => 'hssi',
161             47 => 'hippi',
162             48 => 'modem',
163             49 => 'aal5',
164             50 => 'sonetPath',
165             51 => 'sonetVT',
166             52 => 'smdsIcip',
167             53 => 'propVirtual',
168             54 => 'propMultiplexor',
169             55 => 'ieee80212',
170             56 => 'fibreChannel',
171             57 => 'hippiInterface',
172             58 => 'frameRelayInterconnect',
173             32 => 'frameRelay',
174             44 => 'frameRelayService',
175             59 => 'aflane8023',
176             60 => 'aflane8025',
177             61 => 'cctEmul',
178             62 => 'fastEther',
179             63 => 'isdn',
180             64 => 'v11',
181             65 => 'v36',
182             66 => 'g703at64k',
183             67 => 'g703at2mb',
184             68 => 'qllc',
185             69 => 'fastEtherFX',
186             70 => 'channel',
187             71 => 'ieee80211',
188             72 => 'ibm370parChan',
189             73 => 'escon',
190             74 => 'dlsw',
191             75 => 'isdns',
192             76 => 'isdnu',
193             77 => 'lapd',
194             78 => 'ipSwitch',
195             79 => 'rsrb',
196             80 => 'atmLogical',
197             81 => 'ds0',
198             82 => 'ds0Bundle',
199             83 => 'bsc',
200             84 => 'async',
201             85 => 'cnr',
202             86 => 'iso88025Dtr',
203             87 => 'eplrs',
204             88 => 'arap',
205             89 => 'propCnls',
206             90 => 'hostPad',
207             91 => 'termPad',
208             92 => 'frameRelayMPI',
209             93 => 'x213',
210             94 => 'adsl',
211             95 => 'radsl',
212             96 => 'sdsl',
213             97 => 'vdsl',
214             98 => 'iso88025CRFPInt',
215             99 => 'myrinet',
216             100 => 'voiceEM',
217             101 => 'voiceFXO',
218             102 => 'voiceFXS',
219             103 => 'voiceEncap',
220             104 => 'voiceOverIp',
221             105 => 'atmDxi',
222             106 => 'atmFuni',
223             107 => 'atmIma',
224             108 => 'pppMultilinkBundle',
225             109 => 'ipOverCdlc',
226             110 => 'ipOverClaw',
227             111 => 'stackToStack',
228             112 => 'virtualIpAddress',
229             113 => 'mpc',
230             114 => 'ipOverAtm',
231             115 => 'iso88025Fiber',
232             116 => 'tdlc',
233             117 => 'gigabitEthernet',
234             118 => 'hdlc',
235             119 => 'lapf',
236             120 => 'v37',
237             121 => 'x25mlp',
238             122 => 'x25huntGroup',
239             123 => 'trasnpHdlc',
240             124 => 'interleave',
241             125 => 'fast',
242             126 => 'ip',
243             127 => 'docsCableMaclayer',
244             128 => 'docsCableDownstream',
245             129 => 'docsCableUpstream',
246             130 => 'a12MppSwitch',
247             131 => 'tunnel',
248             132 => 'coffee',
249             133 => 'ces',
250             134 => 'atmSubInterface',
251             135 => 'l2vlan',
252             136 => 'l3ipvlan',
253             137 => 'l3ipxvlan',
254             138 => 'digitalPowerline',
255             139 => 'mediaMailOverIp',
256             140 => 'dtm',
257             141 => 'dcn',
258             142 => 'ipForward',
259             143 => 'msdsl',
260             144 => 'ieee1394',
261             145 => 'if-gsn',
262             146 => 'dvbRccMacLayer',
263             147 => 'dvbRccDownstream',
264             148 => 'dvbRccUpstream',
265             149 => 'atmVirtual',
266             150 => 'mplsTunnel',
267             151 => 'srp',
268             152 => 'voiceOverAtm',
269             153 => 'voiceOverFrameRelay',
270             154 => 'idsl',
271             155 => 'compositeLink',
272             156 => 'ss7SigLink',
273             157 => 'propWirelessP2P',
274             158 => 'frForward',
275             159 => 'rfc1483',
276             160 => 'usb',
277             161 => 'ieee8023adLag',
278             162 => 'bgppolicyaccounting',
279             163 => 'frf16MfrBundle',
280             164 => 'h323Gatekeeper',
281             165 => 'h323Proxy',
282             166 => 'mpls',
283             167 => 'mfSigLink',
284             168 => 'hdsl2',
285             169 => 'shdsl',
286             170 => 'ds1FDL',
287             171 => 'pos',
288             172 => 'dvbAsiln',
289             173 => 'dvbAsiOut',
290             174 => 'plc',
291             175 => 'nfas',
292             176 => 'tr008',
293             177 => 'gr303RDT',
294             178 => 'gr303IDT',
295             179 => 'isup',
296             180 => 'propDocsWirelessMaclayer',
297             181 => 'propDocsWirelessDownstream',
298             182 => 'propDocsWirelessUpstream',
299             183 => 'hiperlan2',
300             184 => 'propBWAp2Mp',
301             185 => 'sonetOverheadChannel',
302             186 => 'digitalWrapperOverheadChannel',
303             187 => 'aal2',
304             188 => 'radioMAC',
305             189 => 'atmRadio',
306             );
307             =head2 METHODS
308              
309             =over
310              
311             =item new HASH $args
312              
313             The constructor for the class. User code should probably never need to
314             call the constructor directly as Net::SNMP::Interface::Details objects
315             are returned by the Net::SNMP::Interfaces methods all_interfaces() and
316             interface().
317              
318             There are three mandatory arguments:
319              
320             =over
321              
322             =item Session
323              
324             A valid Net::SNMP object which will be used to make the requests for the
325             interface information. This Net::SNMP object should currently only be
326             of the blocking variety as no provision has been made for non-blocking
327             requests at present.
328              
329             =item Index
330              
331             The SNMP ifTable index for this interface.
332              
333             =item Name
334              
335             The name of this interface (e.g. 'eth0' ).
336              
337             =back
338              
339             The Name and Index arguments should have previously been obtained by
340             SNMP requests to the same host as the Session object has been created for.
341              
342             =cut
343              
344             sub new
345             {
346 0     0 1   my ( $proto, %args ) = @_;
347              
348 0           my $self = {};
349              
350 0 0 0       unless ( exists $args{Session} and ref($args{Session}) eq 'Net::SNMP')
351             {
352 0           croak "Session must be defined and be a Net::SNMP object";
353             }
354              
355 0           $self->{_session} = $args{Session};
356 0           $self->{_index} = $args{Index};
357 0           $self->{_name} = $args{Name};
358              
359 0           return bless $self, $proto;
360             }
361              
362             =item name
363              
364             Returns the name of this interface.
365              
366             =cut
367              
368             sub name
369             {
370 0     0 1   my ( $self ) = @_;
371              
372 0           return $self->{_name};
373             }
374              
375             =item index
376              
377             Returns the index of this interface.
378              
379             =cut
380              
381             sub index
382             {
383 0     0 1   my ( $self ) = @_;
384              
385 0           return $self->{_index};
386             }
387              
388             =item session
389              
390             Returns the Net::SNMP session object that is being used to make requests
391             for this interface. This probably is not needed but is here for
392             completeness' sake.
393              
394             =cut
395              
396             sub session
397             {
398 0     0 1   my ( $self ) = @_;
399              
400 0           return $self->{_session};
401             }
402              
403             =item error
404              
405             Returns the text of the last error returned from SNMP session - will only
406             be meaningful if the last method call returned undef to indicate that an
407             error had occurred.
408              
409             =cut
410              
411             sub error
412             {
413 0     0 1   my ($self) = @_;
414 0   0       return $self->{_lasterror} || $self->session()->error();
415             }
416              
417             =item IANAifType
418              
419             Converts from an IANAifType integer value as will be returned by ifType
420             to its text equivalent.
421              
422             =cut
423              
424             sub IANAifType
425             {
426 0     0 1   my ( $self, $iftype ) = @_;
427              
428 0 0         if ( defined $iftype )
429             {
430 0 0         return exists $IANAifType{$iftype} ? $IANAifType{$iftype} : 'other';
431             }
432             else
433             {
434 0   0       return $IANAifType{$self->ifType()} || 'other';
435             }
436             }
437              
438             =for pod
439              
440             =back
441              
442             The remainder of the methods are named after the literal names for the
443             SNMP entries for network interfaces. The following descriptions are
444             taken from the IF-MIB with some additional comment from the author where
445             necessary. If an error occurs in the SNMP session these methods will
446             return undef and the text of the error message can be determined by calling
447             the error() method.
448              
449             =over
450              
451             =item ifIndex
452              
453             A unique value, greater than zero, for each interface. It is
454             recommended that values are assigned contiguously starting from 1.
455             The value for each interface sub-layer must remain constant at least
456             from one re-initialization of the entity's network management system to
457             the next re-initialization.
458              
459              
460             =item ifDescr
461              
462             A textual string containing information about the interface. This string
463             should include the name of the manufacturer, the product name and the
464             version of the interface hardware/software.
465              
466             (In practice this will be name of the interface e.g. 'eth0')
467              
468             =item ifType
469              
470             The type of interface. Additional values for ifType are assigned by the
471             Internet Assigned Numbers Authority (IANA), through updating the syntax
472             of the IANAifType textual convention.
473              
474              
475             =item ifMtu
476              
477             The size of the largest packet which can be sent/received on the
478             interface, specified in octets. For interfaces that are used for
479             transmitting network datagrams, this is the size of the largest network
480             datagram that can be sent on the interface.
481              
482              
483             =item ifSpeed
484              
485             An estimate of the interface's current bandwidth in bits per second.
486             For interfaces which do not vary in bandwidth or for those where
487             no accurate estimation can be made, this object should contain the
488             nominal bandwidth. If the bandwidth of the interface is greater than the
489             maximum value reportable by this object then this object should report
490             its maximum value (4,294,967,295) and ifHighSpeed must be used to report
491             the interace's speed. For a sub-layer which has no concept of bandwidth,
492             this object should be zero.
493              
494              
495             =item ifPhysAddress
496              
497             The interface's address at its protocol sub-layer. For example,
498             for an 802.x interface, this object normally contains a MAC address.
499             The interface's media-specific MIB must define the bit and byte ordering
500             and the format of the value of this object. For interfaces which do not
501             have such an address (e.g., a serial line), this object should contain
502             an octet string of zero length.
503              
504              
505             =item ifAdminStatus
506              
507             The desired state of the interface. The testing(3) state indicates that
508             no operational packets can be passed. When a managed system initializes,
509             all interfaces start with ifAdminStatus in the down(2) state. As a result
510             of either explicit management action or per configuration information
511             retained by the managed system, ifAdminStatus is then changed to either
512             the up(1) or testing(3) states (or remains in the down(2) state).
513              
514              
515             =item ifOperStatus
516              
517             The current operational state of the interface. The testing(3) state
518             indicates that no operational packets can be passed. If ifAdminStatus
519             is down(2) then ifOperStatus should be down(2). If ifAdminStatus
520             is changed to up(1) then ifOperStatus should change to up(1) if the
521             interface is ready to transmit and receive network traffic; it should
522             change to dormant(5) if the interface is waiting for external actions
523             (such as a serial line waiting for an incoming connection); it should
524             remain in the down(2) state if and only if there is a fault that prevents
525             it from going to the up(1) state; it should remain in the notPresent(6)
526             state if the interface has missing (typically, hardware) components.
527              
528              
529             =item ifLastChange
530              
531             The value of sysUpTime at the time the interface entered its current
532             operational state. If the current state was entered prior to the last
533             re-initialization of the local network management subsystem, then this
534             object contains a zero value.
535              
536              
537             =item ifInOctets
538              
539             The total number of octets received on the interface, including framing
540             characters. Discontinuities in the value of this counter can occur
541             at re-initialization of the management system, and at other times as
542             indicated by the value of ifCounterDiscontinuityTime.
543              
544              
545             =item ifInUcastPkts
546              
547             The number of packets, delivered by this sub-layer to a higher
548             (sub-)layer, which were not addressed to a multicast or broadcast address
549             at this sub-layer. Discontinuities in the value of this counter can
550             occur at re-initialization of the management system, and at other times
551             as indicated by the value of ifCounterDiscontinuityTime.
552              
553              
554             =item ifInNUcastPkts
555              
556             The number of packets, delivered by this sub-layer to a higher
557             (sub-)layer, which were addressed to a multicast or broadcast address
558             at this sub-layer. Discontinuities in the value of this counter can
559             occur at re-initialization of the management system, and at other times
560             as indicated by the value of ifCounterDiscontinuityTime. This object
561             is deprecated in favour of ifInMulticastPkts and ifInBroadcastPkts.
562              
563              
564             =item ifInDiscards
565              
566             The number of inbound packets which were chosen to be discarded even
567             though no errors had been detected to prevent their being deliverable
568             to a higher-layer protocol. One possible reason for discarding such a
569             packet could be to free up buffer space. Discontinuities in the value of
570             this counter can occur at re-initialization of the management system, and
571             at other times as indicated by the value of ifCounterDiscontinuityTime.
572              
573              
574             =item ifInErrors
575              
576             For packet-oriented interfaces, the number of inbound packets that
577             contained errors preventing them from being deliverable to a higher-layer
578             protocol. For character-oriented or fixed-length interfaces, the number
579             of inbound transmission units that contained errors preventing them
580             from being deliverable to a higher-layer protocol. Discontinuities
581             in the value of this counter can occur at re-initialization of the
582             management system, and at other times as indicated by the value of
583             ifCounterDiscontinuityTime.
584              
585              
586             =item ifInUnknownProtos
587              
588             For packet-oriented interfaces, the number of packets received via
589             the interface which were discarded because of an unknown or unsupported
590             protocol. For character-oriented or fixed-length interfaces that support
591             protocol multiplexing the number of transmission units received via
592             the interface which were discarded because of an unknown or unsupported
593             protocol. For any interface that does not support protocol multiplexing,
594             this counter will always be 0. Discontinuities in the value of this
595             counter can occur at re-initialization of the management system, and at
596             other times as indicated by the value of ifCounterDiscontinuityTime.
597              
598              
599             =item ifOutOctets
600              
601             The total number of octets transmitted out of the interface, including
602             framing characters. Discontinuities in the value of this counter can
603             occur at re-initialization of the management system, and at other times
604             as indicated by the value of ifCounterDiscontinuityTime.
605              
606              
607             =item ifOutUcastPkts
608              
609             The total number of packets that higher-level protocols requested be
610             transmitted, and which were not addressed to a multicast or broadcast
611             address at this sub-layer, including those that were discarded or
612             not sent. Discontinuities in the value of this counter can occur
613             at re-initialization of the management system, and at other times as
614             indicated by the value of ifCounterDiscontinuityTime.
615              
616              
617             =item ifOutNUcastPkts
618              
619             The total number of packets that higher-level protocols requested be
620             transmitted, and which were addressed to a multicast or broadcast
621             address at this sub-layer, including those that were discarded or
622             not sent. Discontinuities in the value of this counter can occur
623             at re-initialization of the management system, and at other times as
624             indicated by the value of ifCounterDiscontinuityTime. This object is
625             deprecated in favour of ifOutMulticastPkts and ifOutBroadcastPkts.
626              
627              
628             =item ifOutDiscards
629              
630             The number of outbound packets which were chosen to be discarded even
631             though no errors had been detected to prevent their being transmitted.
632             One possible reason for discarding such a packet could be to free up
633             buffer space. Discontinuities in the value of this counter can occur
634             at re-initialization of the management system, and at other times as
635             indicated by the value of ifCounterDiscontinuityTime.
636              
637              
638             =item ifOutErrors
639              
640             For packet-oriented interfaces, the number of outbound packets that
641             could not be transmitted because of errors. For character-oriented
642             or fixed-length interfaces, the number of outbound transmission units
643             that could not be transmitted because of errors. Discontinuities
644             in the value of this counter can occur at re-initialization of the
645             management system, and at other times as indicated by the value of
646             ifCounterDiscontinuityTime.
647              
648              
649             =item ifOutQLen
650              
651             The length of the output packet queue (in packets). This object has been
652             deprecated as of rfc2863.
653              
654              
655             =item ifSpecific
656              
657             A reference to MIB definitions specific to the particular media being used
658             to realize the interface. It is recommended that this value point to an
659             instance of a MIB object in the media-specific MIB, i.e., that this object
660             have the semantics associated with the InstancePointer textual convention
661             defined in RFC 1903. In fact, it is recommended that the media- specific
662             MIB specify what value ifSpecific should/can take for values of ifType.
663             If no MIB definitions specific to the particular media are available,
664             the value should be set to the OBJECT IDENTIFIER { 0 0 }.
665              
666             =back
667              
668             These next methods are from the ifXTable as described in
669             rfc2863:
670              
671             This table contains objects that have been added to the Interface
672             MIB as a result of the Interface Evolution effort, or replacements
673             for objects of the original (MIB-II) ifTable that were deprecated
674             because the semantics of said objects have significantly changed.
675             This table also contains objects that were previously in the
676             ifExtnsTable.
677              
678             These methods may not be available from all network elements and
679             in those cases they will return undef.
680              
681             =item ifName
682              
683             The textual name of the interface. The value of this object should be
684             the name of the interface as assigned by the local device and should
685             be suitable for use in commands entered at the device's `console'.
686             This might be a text name, such as `le0' or a simple port number,
687             such as `1', depending on the interface naming syntax of the device.
688             If several entries in the ifTable together represent a single interface
689             as named by the device, then each will have the same value of ifName.
690             Note that for an agent which responds to SNMP queries concerning an
691             interface on some other (proxied) device, then the value of ifName for
692             such an interface is the proxied device's local name for it. If there
693             is no local name, or this object is otherwise not applicable, then this
694             object contains a zero-length string.
695              
696             =item ifInMulticastPkts
697              
698             The number of packets, delivered by this sub-layer to a higher
699             (sub-)layer, which were addressed to a multicast address at this
700             sub-layer. For a MAC layer protocol, this includes both Group and
701             Functional addresses. Discontinuities in the value of this counter can
702             occur at re-initialization of the management system, and at other times
703             as indicated by the value of ifCounterDiscontinuityTime.
704              
705              
706             =item ifInBroadcastPkts
707              
708             The number of packets, delivered by this sub-layer to a higher
709             (sub-)layer, which were addressed to a broadcast address at this
710             sub-layer. Discontinuities in the value of this counter can occur
711             at re-initialization of the management system, and at other times as
712             indicated by the value of ifCounterDiscontinuityTime.
713              
714              
715             =item ifOutMulticastPkts
716              
717             The total number of packets that higher-level protocols requested
718             be transmitted, and which were addressed to a multicast address at
719             this sub-layer, including those that were discarded or not sent.
720             For a MAC layer protocol, this includes both Group and Functional
721             addresses. Discontinuities in the value of this counter can occur
722             at re-initialization of the management system, and at other times as
723             indicated by the value of ifCounterDiscontinuityTime.
724              
725              
726             =item ifOutBroadcastPkts
727              
728             The total number of packets that higher-level protocols requested
729             be transmitted, and which were addressed to a broadcast address
730             at this sub-layer, including those that were discarded or not
731             sent. Discontinuities in the value of this counter can occur at
732             re-initialization of the management system, and at other times as
733             indicated by the value of ifCounterDiscontinuityTime.
734              
735              
736             =item ifHCInOctets
737              
738             The total number of octets received on the interface, including
739             framing characters. This object is a 64-bit version of ifInOctets.
740             Discontinuities in the value of this counter can occur at
741             re-initialization of the management system, and at other times as
742             indicated by the value of ifCounterDiscontinuityTime.
743              
744              
745             =item ifHCInUcastPkts
746              
747             The number of packets, delivered by this sub-layer to a higher
748             (sub-)layer, which were not addressed to a multicast or broadcast
749             address at this sub-layer. This object is a 64-bit version of
750             ifInUcastPkts. Discontinuities in the value of this counter can occur
751             at re-initialization of the management system, and at other times as
752             indicated by the value of ifCounterDiscontinuityTime.
753              
754              
755             =item ifHCInMulticastPkts
756              
757             The number of packets, delivered by this sub-layer to a higher
758             (sub-)layer, which were addressed to a multicast address at this
759             sub-layer. For a MAC layer protocol, this includes both Group
760             and Functional addresses. This object is a 64-bit version of
761             ifInMulticastPkts. Discontinuities in the value of this counter can
762             occur at re-initialization of the management system, and at other times
763             as indicated by the value of ifCounterDiscontinuityTime.
764              
765              
766             =item ifHCInBroadcastPkts
767              
768             The number of packets, delivered by this sub-layer to a higher
769             (sub-)layer, which were addressed to a broadcast address at this
770             sub-layer. This object is a 64-bit version of ifInBroadcastPkts.
771             Discontinuities in the value of this counter can occur at
772             re-initialization of the management system, and at other times as
773             indicated by the value of ifCounterDiscontinuityTime.
774              
775              
776             =item ifHCOutOctets
777              
778             The total number of octets transmitted out of the interface,
779             including framing characters. This object is a 64-bit version of
780             ifOutOctets. Discontinuities in the value of this counter can occur
781             at re-initialization of the management system, and at other times as
782             indicated by the value of ifCounterDiscontinuityTime.
783              
784              
785             =item ifHCOutUcastPkts
786              
787             The total number of packets that higher-level protocols requested be
788             transmitted, and which were not addressed to a multicast or broadcast
789             address at this sub-layer, including those that were discarded or not
790             sent. This object is a 64-bit version of ifOutUcastPkts. Discontinuities
791             in the value of this counter can occur at re-initialization of the
792             management system, and at other times as indicated by the value of
793             ifCounterDiscontinuityTime.
794              
795              
796             =item ifHCOutMulticastPkts
797              
798             The total number of packets that higher-level protocols requested be
799             transmitted, and which were addressed to a multicast address at this
800             sub-layer, including those that were discarded or not sent. For a
801             MAC layer protocol, this includes both Group and Functional addresses.
802             This object is a 64-bit version of ifOutMulticastPkts. Discontinuities
803             in the value of this counter can occur at re-initialization of the
804             management system, and at other times as indicated by the value of
805             ifCounterDiscontinuityTime.
806              
807              
808             =item ifHCOutBroadcastPkts
809              
810             The total number of packets that higher-level protocols requested
811             be transmitted, and which were addressed to a broadcast address
812             at this sub-layer, including those that were discarded or not sent.
813             This object is a 64-bit version of ifOutBroadcastPkts. Discontinuities
814             in the value of this counter can occur at re-initialization of the
815             management system, and at other times as indicated by the value of
816             ifCounterDiscontinuityTime.
817              
818              
819             =item ifLinkUpDownTrapEnable
820              
821             Indicates whether linkUp/linkDown traps should be generated for this
822             interface. By default, this object should have the value enabled(1)
823             for interfaces which do not operate on 'top' of any other interface
824             (as defined in the ifStackTable), and disabled(2) otherwise.
825              
826              
827             =item ifHighSpeed
828              
829             An estimate of the interface's current bandwidth in units of 1,000,000
830             bits per second. If this object reports a value of `n' then the
831             speed of the interface is somewhere in the range of `n-500,000' to
832             `n+499,999'. For interfaces which do not vary in bandwidth or for those
833             where no accurate estimation can be made, this object should contain the
834             nominal bandwidth. For a sub-layer which has no concept of bandwidth,
835             this object should be zero.
836              
837              
838             =item ifPromiscuousMode
839              
840             This object has a value of false(2) if this interface only accepts
841             packets/frames that are addressed to this station. This object
842             has a value of true(1) when the station accepts all packets/frames
843             transmitted on the media. The value true(1) is only legal on certain
844             types of media. If legal, setting this object to a value of true(1) may
845             require the interface to be reset before becoming effective. The value
846             of ifPromiscuousMode does not affect the reception of broadcast and
847             multicast packets/frames by the interface.
848              
849             =item ifConnectorPresent
850              
851             This object has the value 'true(1)' if the interface sublayer has a
852             physical connector and the value 'false(2)' otherwise.
853              
854             =item ifAlias
855              
856             This object is an 'alias' name for the interface as specified by a network
857             manager, and provides a non-volatile 'handle' for the interface. On the
858             first instantiation of an interface, the value of ifAlias associated with
859             that interface is the zero-length string. As and when a value is written
860             into an instance of ifAlias through a network management set operation,
861             then the agent must retain the supplied value in the ifAlias instance
862             associated with the same interface for as long as that interface remains
863             instantiated, including across all re- initializations/reboots of the
864             network management system, including those which result in a change of
865             the interface's ifIndex value. An example of the value which a network
866             manager might store in this object for a WAN interface is the (Telco's)
867             circuit number/identifier of the interface. Some agents may support
868             write-access only for interfaces having particular values of ifType.
869             An agent which supports write access to this object is required to keep
870             the value in non-volatile storage, but it may limit the length of new
871             values depending on how much storage is already occupied by the current
872             values for other interfaces.
873              
874             =item ifCounterDiscontinuityTime
875              
876             The value of sysUpTime on the most recent occasion at which any one or
877             more of this interface's counters suffered a discontinuity. The relevant
878             counters are the specific instances associated with this interface of
879             any Counter32 or Counter64 object contained in the ifTable or ifXTable.
880             If no such discontinuities have occurred since the last re- initialization
881             of the local management subsystem, then this object contains a zero value.
882              
883             =cut
884              
885             sub AUTOLOAD
886             {
887 0     0     my ( $self ) = @_;
888              
889 0 0         return if $AUTOLOAD =~ /DESTROY$/;
890              
891 0           my ($name) = $AUTOLOAD =~ /::([^:]+)$/;
892            
893 0 0         if ( not exists $OIDS{$name} )
894             {
895 0           croak "Can't locate object method '$name' via package '" . __PACKAGE__ . "'";
896             }
897             else
898             {
899 2     2   13 no strict 'refs';
  2         6  
  2         439  
900            
901 0           *{$AUTOLOAD} =
902             sub {
903 0     0     my ( $self ) = @_;
904 0           my $oid = "$OIDS{$name}." . $self->index();
905              
906 0           my $response;
907              
908 0 0         if ( defined( $response = $self->session()->get_request($oid)) )
909             {
910 0           return $response->{$oid};
911             }
912             else
913             {
914 0           $self->{_lasterror} = $self->session()->error();
915 0           return undef;
916             }
917 0           };
918              
919 0           goto &{$AUTOLOAD};
  0            
920             }
921            
922             }
923              
924             1;
925             __END__