SNMP-MIB-Compiler-0.06.orig/0040755000175000017500000000000007435074233014327 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/mibs/0040755000175000017500000000000007435074233015261 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/mibs/RFC1213-MIB0100644000175000017500000031073707435074233016542 0ustar jdivejdive-- extracted from rfc1213.txt RFC1213-MIB DEFINITIONS ::= BEGIN IMPORTS mgmt, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1155-SMI OBJECT-TYPE FROM RFC-1212; -- This MIB module uses the extended OBJECT-TYPE macro as -- defined in [14]; -- MIB-II (same prefix as MIB-I) mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- textual conventions DisplayString ::= OCTET STRING -- This data type is used to model textual information taken -- from the NVT ASCII character set. By convention, objects -- with this syntax are declared as having -- -- SIZE (0..255) PhysAddress ::= OCTET STRING -- This data type is used to model media addresses. For many -- types of media, this will be in a binary representation. -- For example, an ethernet address would be represented as -- a string of 6 octets. -- groups in MIB-II system OBJECT IDENTIFIER ::= { mib-2 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } at OBJECT IDENTIFIER ::= { mib-2 3 } ip OBJECT IDENTIFIER ::= { mib-2 4 } icmp OBJECT IDENTIFIER ::= { mib-2 5 } tcp OBJECT IDENTIFIER ::= { mib-2 6 } udp OBJECT IDENTIFIER ::= { mib-2 7 } egp OBJECT IDENTIFIER ::= { mib-2 8 } -- historical (some say hysterical) -- cmot OBJECT IDENTIFIER ::= { mib-2 9 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } snmp OBJECT IDENTIFIER ::= { mib-2 11 } -- the System group -- Implementation of the System group is mandatory for all -- systems. If an agent is not configured to have a value -- for any of these variables, a string of length 0 is -- returned. sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software. It is mandatory that this only contain printable ASCII characters." ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining `what kind of box' is being managed. For example, if vendor `Flintstones, Inc.' was assigned the subtree 1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred Router'." ::= { system 2 } sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time (in hundredths of a second) since the network management portion of the system was last re-initialized." ::= { system 3 } sysContact OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write STATUS mandatory DESCRIPTION "The textual identification of the contact person for this managed node, together with information on how to contact this person." ::= { system 4 } sysName OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write STATUS mandatory DESCRIPTION "An administratively-assigned name for this managed node. By convention, this is the node's fully-qualified domain name." ::= { system 5 } sysLocation OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write STATUS mandatory DESCRIPTION "The physical location of this node (e.g., `telephone closet, 3rd floor')." ::= { system 6 } sysServices OBJECT-TYPE SYNTAX INTEGER (0..127) ACCESS read-only STATUS mandatory DESCRIPTION "A value which indicates the set of services that this entity primarily offers. The value is a sum. This sum initially takes the value zero, Then, for each layer, L, in the range 1 through 7, that this node performs transactions for, 2 raised to (L - 1) is added to the sum. For example, a node which performs primarily routing functions would have a value of 4 (2^(3-1)). In contrast, a node which is a host offering application services would have a value of 72 (2^(4-1) + 2^(7-1)). Note that in the context of the Internet suite of protocols, values should be calculated accordingly: layer functionality 1 physical (e.g., repeaters) 2 datalink/subnetwork (e.g., bridges) 3 internet (e.g., IP gateways) 4 end-to-end (e.g., IP hosts) 7 applications (e.g., mail relays) For systems including OSI protocols, layers 5 and 6 may also be counted." ::= { system 7 } -- the Interfaces group -- Implementation of the Interfaces group is mandatory for -- all systems. ifNumber OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of network interfaces (regardless of their current state) present on this system." ::= { interfaces 1 } -- the Interfaces table -- The Interfaces table contains information on the entity's -- interfaces. Each interface is thought of as being -- attached to a `subnetwork'. Note that this term should -- not be confused with `subnet' which refers to an -- addressing partitioning scheme used in the Internet suite -- of protocols. ifTable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of interface entries. The number of entries is given by the value of ifNumber." ::= { interfaces 2 } ifEntry OBJECT-TYPE SYNTAX IfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An interface entry containing objects at the subnetwork layer and below for a particular interface." INDEX { ifIndex } ::= { ifTable 1 } IfEntry ::= SEQUENCE { ifIndex INTEGER, ifDescr DisplayString, ifType INTEGER, ifMtu INTEGER, ifSpeed Gauge, ifPhysAddress PhysAddress, ifAdminStatus INTEGER, ifOperStatus INTEGER, ifLastChange TimeTicks, ifInOctets Counter, ifInUcastPkts Counter, ifInNUcastPkts Counter, ifInDiscards Counter, ifInErrors Counter, ifInUnknownProtos Counter, ifOutOctets Counter, ifOutUcastPkts Counter, ifOutNUcastPkts Counter, ifOutDiscards Counter, ifOutErrors Counter, ifOutQLen Gauge, ifSpecific OBJECT IDENTIFIER } ifIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "A unique value for each interface. Its value ranges between 1 and the value of ifNumber. The value for each interface must remain constant at least from one re-initialization of the entity's network management system to the next re- initialization." ::= { ifEntry 1 } ifDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual string containing information about the interface. This string should include the name of the manufacturer, the product name and the version of the hardware interface." ::= { ifEntry 2 } ifType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following regular1822(2), hdh1822(3), ddn-x25(4), rfc877-x25(5), ethernet-csmacd(6), iso88023-csmacd(7), iso88024-tokenBus(8), iso88025-tokenRing(9), iso88026-man(10), starLan(11), proteon-10Mbit(12), proteon-80Mbit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), ds1(18), -- T-1 e1(19), -- european equiv. of T-1 basicISDN(20), primaryISDN(21), -- proprietary serial propPointToPointSerial(22), ppp(23), softwareLoopback(24), eon(25), -- CLNP over IP [11] ethernet-3Mbit(26), nsip(27), -- XNS over IP slip(28), -- generic SLIP ultra(29), -- ULTRA technologies ds3(30), -- T-3 sip(31), -- SMDS frame-relay(32) } ACCESS read-only STATUS mandatory DESCRIPTION "The type of interface, distinguished according to the physical/link protocol(s) immediately `below' the network layer in the protocol stack." ::= { ifEntry 3 } ifMtu OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The size of the largest datagram which can be sent/received on the interface, specified in octets. For interfaces that are used for transmitting network datagrams, this is the size of the largest network datagram that can be sent on the interface." ::= { ifEntry 4 } ifSpeed OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory DESCRIPTION "An estimate of the interface's current bandwidth in bits per second. For interfaces which do not vary in bandwidth or for those where no accurate estimation can be made, this object should contain the nominal bandwidth." ::= { ifEntry 5 } ifPhysAddress OBJECT-TYPE SYNTAX PhysAddress ACCESS read-only STATUS mandatory DESCRIPTION "The interface's address at the protocol layer immediately `below' the network layer in the protocol stack. For interfaces which do not have such an address (e.g., a serial line), this object should contain an octet string of zero length." ::= { ifEntry 6 } ifAdminStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-write STATUS mandatory DESCRIPTION "The desired state of the interface. The testing(3) state indicates that no operational packets can be passed." ::= { ifEntry 7 } ifOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-only STATUS mandatory DESCRIPTION "The current operational state of the interface. The testing(3) state indicates that no operational packets can be passed." ::= { ifEntry 8 } ifLastChange OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The value of sysUpTime at the time the interface entered its current operational state. If the current state was entered prior to the last re- initialization of the local network management subsystem, then this object contains a zero value." ::= { ifEntry 9 } ifInOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of octets received on the interface, including framing characters." ::= { ifEntry 10 } ifInUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of subnetwork-unicast packets delivered to a higher-layer protocol." ::= { ifEntry 11 } ifInNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of non-unicast (i.e., subnetwork- broadcast or subnetwork-multicast) packets delivered to a higher-layer protocol." ::= { ifEntry 12 } ifInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol. One possible reason for discarding such a packet could be to free up buffer space." ::= { ifEntry 13 } ifInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol." ::= { ifEntry 14 } ifInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of packets received via the interface which were discarded because of an unknown or unsupported protocol." ::= { ifEntry 15 } ifOutOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of octets transmitted out of the interface, including framing characters." ::= { ifEntry 16 } ifOutUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted to a subnetwork-unicast address, including those that were discarded or not sent." ::= { ifEntry 17 } ifOutNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted to a non- unicast (i.e., a subnetwork-broadcast or subnetwork-multicast) address, including those that were discarded or not sent." ::= { ifEntry 18 } ifOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of outbound packets which were chosen to be discarded even though no errors had been detected to prevent their being transmitted. One possible reason for discarding such a packet could be to free up buffer space." ::= { ifEntry 19 } ifOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of outbound packets that could not be transmitted because of errors." ::= { ifEntry 20 } ifOutQLen OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory DESCRIPTION "The length of the output packet queue (in packets)." ::= { ifEntry 21 } ifSpecific OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "A reference to MIB definitions specific to the particular media being used to realize the interface. For example, if the interface is realized by an ethernet, then the value of this object refers to a document defining objects specific to ethernet. If this information is not present, its value should be set to the OBJECT IDENTIFIER { 0 0 }, which is a syntatically valid object identifier, and any conformant implementation of ASN.1 and BER must be able to generate and recognize this value." ::= { ifEntry 22 } -- the Address Translation group -- Implementation of the Address Translation group is -- mandatory for all systems. Note however that this group -- is deprecated by MIB-II. That is, it is being included -- solely for compatibility with MIB-I nodes, and will most -- likely be excluded from MIB-III nodes. From MIB-II and -- onwards, each network protocol group contains its own -- address translation tables. -- The Address Translation group contains one table which is -- the union across all interfaces of the translation tables -- for converting a NetworkAddress (e.g., an IP address) into -- a subnetwork-specific address. For lack of a better term, -- this document refers to such a subnetwork-specific address -- as a `physical' address. -- Examples of such translation tables are: for broadcast -- media where ARP is in use, the translation table is -- equivalent to the ARP cache; or, on an X.25 network where -- non-algorithmic translation to X.121 addresses is -- required, the translation table contains the -- NetworkAddress to X.121 address equivalences. atTable OBJECT-TYPE SYNTAX SEQUENCE OF AtEntry ACCESS not-accessible STATUS deprecated DESCRIPTION "The Address Translation tables contain the NetworkAddress to `physical' address equivalences. Some interfaces do not use translation tables for determining address equivalences (e.g., DDN-X.25 has an algorithmic method); if all interfaces are of this type, then the Address Translation table is empty, i.e., has zero entries." ::= { at 1 } atEntry OBJECT-TYPE SYNTAX AtEntry ACCESS not-accessible STATUS deprecated DESCRIPTION "Each entry contains one NetworkAddress to `physical' address equivalence." INDEX { atIfIndex, atNetAddress } ::= { atTable 1 } AtEntry ::= SEQUENCE { atIfIndex INTEGER, atPhysAddress PhysAddress, atNetAddress NetworkAddress } atIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS deprecated DESCRIPTION "The interface on which this entry's equivalence is effective. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { atEntry 1 } atPhysAddress OBJECT-TYPE SYNTAX PhysAddress ACCESS read-write STATUS deprecated DESCRIPTION "The media-dependent `physical' address. Setting this object to a null string (one of zero length) has the effect of invaliding the corresponding entry in the atTable object. That is, it effectively dissasociates the interface identified with said entry from the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive tabular information from agents that corresponds to entries not currently in use. Proper interpretation of such entries requires examination of the relevant atPhysAddress object." ::= { atEntry 2 } atNetAddress OBJECT-TYPE SYNTAX NetworkAddress ACCESS read-write STATUS deprecated DESCRIPTION "The NetworkAddress (e.g., the IP address) corresponding to the media-dependent `physical' address." ::= { atEntry 3 } -- the IP group -- Implementation of the IP group is mandatory for all -- systems. ipForwarding OBJECT-TYPE SYNTAX INTEGER { forwarding(1), -- acting as a gateway not-forwarding(2) -- NOT acting as a gateway } ACCESS read-write STATUS mandatory DESCRIPTION "The indication of whether this entity is acting as an IP gateway in respect to the forwarding of datagrams received by, but not addressed to, this entity. IP gateways forward datagrams. IP hosts do not (except those source-routed via the host). Note that for some managed nodes, this object may take on only a subset of the values possible. Accordingly, it is appropriate for an agent to return a `badValue' response if a management station attempts to change this object to an inappropriate value." ::= { ip 1 } ipDefaultTTL OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The default value inserted into the Time-To-Live field of the IP header of datagrams originated at this entity, whenever a TTL value is not supplied by the transport layer protocol." ::= { ip 2 } ipInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input datagrams received from interfaces, including those received in error." ::= { ip 3 } ipInHdrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input datagrams discarded due to errors in their IP headers, including bad checksums, version number mismatch, other format errors, time-to-live exceeded, errors discovered in processing their IP options, etc." ::= { ip 4 } ipInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input datagrams discarded because the IP address in their IP header's destination field was not a valid address to be received at this entity. This count includes invalid addresses (e.g., 0.0.0.0) and addresses of unsupported Classes (e.g., Class E). For entities which are not IP Gateways and therefore do not forward datagrams, this counter includes datagrams discarded because the destination address was not a local address." ::= { ip 5 } ipForwDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input datagrams for which this entity was not their final IP destination, as a result of which an attempt was made to find a route to forward them to that final destination. In entities which do not act as IP Gateways, this counter will include only those packets which were Source-Routed via this entity, and the Source- Route option processing was successful." ::= { ip 6 } ipInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of locally-addressed datagrams received successfully but discarded because of an unknown or unsupported protocol." ::= { ip 7 } ipInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input IP datagrams for which no problems were encountered to prevent their continued processing, but which were discarded (e.g., for lack of buffer space). Note that this counter does not include any datagrams discarded while awaiting re-assembly." ::= { ip 8 } ipInDelivers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input datagrams successfully delivered to IP user-protocols (including ICMP)." ::= { ip 9 } ipOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of IP datagrams which local IP user-protocols (including ICMP) supplied to IP in requests for transmission. Note that this counter does not include any datagrams counted in ipForwDatagrams." ::= { ip 10 } ipOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of output IP datagrams for which no problem was encountered to prevent their transmission to their destination, but which were discarded (e.g., for lack of buffer space). Note that this counter would include datagrams counted in ipForwDatagrams if any such packets met this (discretionary) discard criterion." ::= { ip 11 } ipOutNoRoutes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP datagrams discarded because no route could be found to transmit them to their destination. Note that this counter includes any packets counted in ipForwDatagrams which meet this `no-route' criterion. Note that this includes any datagarms which a host cannot route because all of its default gateways are down." ::= { ip 12 } ipReasmTimeout OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The maximum number of seconds which received fragments are held while they are awaiting reassembly at this entity." ::= { ip 13 } ipReasmReqds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP fragments received which needed to be reassembled at this entity." ::= { ip 14 } ipReasmOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP datagrams successfully re- assembled." ::= { ip 15 } ipReasmFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of failures detected by the IP re- assembly algorithm (for whatever reason: timed out, errors, etc). Note that this is not necessarily a count of discarded IP fragments since some algorithms (notably the algorithm in RFC 815) can lose track of the number of fragments by combining them as they are received." ::= { ip 16 } ipFragOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP datagrams that have been successfully fragmented at this entity." ::= { ip 17 } ipFragFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP datagrams that have been discarded because they needed to be fragmented at this entity but could not be, e.g., because their Don't Fragment flag was set." ::= { ip 18 } ipFragCreates OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of IP datagram fragments that have been generated as a result of fragmentation at this entity." ::= { ip 19 } -- the IP address table -- The IP address table contains this entity's IP addressing -- information. ipAddrTable OBJECT-TYPE SYNTAX SEQUENCE OF IpAddrEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of addressing information relevant to this entity's IP addresses." ::= { ip 20 } ipAddrEntry OBJECT-TYPE SYNTAX IpAddrEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The addressing information for one of this entity's IP addresses." INDEX { ipAdEntAddr } ::= { ipAddrTable 1 } IpAddrEntry ::= SEQUENCE { ipAdEntAddr IpAddress, ipAdEntIfIndex INTEGER, ipAdEntNetMask IpAddress, ipAdEntBcastAddr INTEGER, ipAdEntReasmMaxSize INTEGER (0..65535) } ipAdEntAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The IP address to which this entry's addressing information pertains." ::= { ipAddrEntry 1 } ipAdEntIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The index value which uniquely identifies the interface to which this entry is applicable. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { ipAddrEntry 2 } ipAdEntNetMask OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The subnet mask associated with the IP address of this entry. The value of the mask is an IP address with all the network bits set to 1 and all the hosts bits set to 0." ::= { ipAddrEntry 3 } ipAdEntBcastAddr OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the least-significant bit in the IP broadcast address used for sending datagrams on the (logical) interface associated with the IP address of this entry. For example, when the Internet standard all-ones broadcast address is used, the value will be 1. This value applies to both the subnet and network broadcasts addresses used by the entity on this (logical) interface." ::= { ipAddrEntry 4 } ipAdEntReasmMaxSize OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The size of the largest IP datagram which this entity can re-assemble from incoming IP fragmented datagrams received on this interface." ::= { ipAddrEntry 5 } -- the IP routing table -- The IP routing table contains an entry for each route -- presently known to this entity. ipRouteTable OBJECT-TYPE SYNTAX SEQUENCE OF IpRouteEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This entity's IP Routing table." ::= { ip 21 } ipRouteEntry OBJECT-TYPE SYNTAX IpRouteEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A route to a particular destination." INDEX { ipRouteDest } ::= { ipRouteTable 1 } IpRouteEntry ::= SEQUENCE { ipRouteDest IpAddress, ipRouteIfIndex INTEGER, ipRouteMetric1 INTEGER, ipRouteMetric2 INTEGER, ipRouteMetric3 INTEGER, ipRouteMetric4 INTEGER, ipRouteNextHop IpAddress, ipRouteType INTEGER, ipRouteProto INTEGER, ipRouteAge INTEGER, ipRouteMask IpAddress, ipRouteMetric5 INTEGER, ipRouteInfo OBJECT IDENTIFIER } ipRouteDest OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The destination IP address of this route. An entry with a value of 0.0.0.0 is considered a default route. Multiple routes to a single destination can appear in the table, but access to such multiple entries is dependent on the table- access mechanisms defined by the network management protocol in use." ::= { ipRouteEntry 1 } ipRouteIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The index value which uniquely identifies the local interface through which the next hop of this route should be reached. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { ipRouteEntry 2 } ipRouteMetric1 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The primary routing metric for this route. The semantics of this metric are determined by the routing-protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1." ::= { ipRouteEntry 3 } ipRouteMetric2 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "An alternate routing metric for this route. The semantics of this metric are determined by the routing-protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1." ::= { ipRouteEntry 4 } ipRouteMetric3 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "An alternate routing metric for this route. The semantics of this metric are determined by the routing-protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1." ::= { ipRouteEntry 5 } ipRouteMetric4 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "An alternate routing metric for this route. The semantics of this metric are determined by the routing-protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1." ::= { ipRouteEntry 6 } ipRouteNextHop OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The IP address of the next hop of this route. (In the case of a route bound to an interface which is realized via a broadcast media, the value of this field is the agent's IP address on that interface.)" ::= { ipRouteEntry 7 } ipRouteType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated route -- route to directly direct(3), -- connected (sub-)network -- route to a non-local indirect(4) -- host/network/sub-network } ACCESS read-write STATUS mandatory DESCRIPTION "The type of route. Note that the values direct(3) and indirect(4) refer to the notion of direct and indirect routing in the IP architecture. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the ipRouteTable object. That is, it effectively dissasociates the destination identified with said entry from the route identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive tabular information from agents that corresponds to entries not currently in use. Proper interpretation of such entries requires examination of the relevant ipRouteType object." ::= { ipRouteEntry 8 } ipRouteProto OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following -- non-protocol information, -- e.g., manually configured local(2), -- entries -- set via a network netmgmt(3), -- management protocol -- obtained via ICMP, icmp(4), -- e.g., Redirect -- the remaining values are -- all gateway routing -- protocols egp(5), ggp(6), hello(7), rip(8), is-is(9), es-is(10), ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14) } ACCESS read-only STATUS mandatory DESCRIPTION "The routing mechanism via which this route was learned. Inclusion of values for gateway routing protocols is not intended to imply that hosts should support those protocols." ::= { ipRouteEntry 9 } ipRouteAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The number of seconds since this route was last updated or otherwise determined to be correct. Note that no semantics of `too old' can be implied except through knowledge of the routing protocol by which the route was learned." ::= { ipRouteEntry 10 } ipRouteMask OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "Indicate the mask to be logical-ANDed with the destination address before being compared to the value in the ipRouteDest field. For those systems that do not support arbitrary subnet masks, an agent constructs the value of the ipRouteMask by determining whether the value of the correspondent ipRouteDest field belong to a class-A, B, or C network, and then using one of: mask network 255.0.0.0 class-A 255.255.0.0 class-B 255.255.255.0 class-C If the value of the ipRouteDest is 0.0.0.0 (a default route), then the mask value is also 0.0.0.0. It should be noted that all IP routing subsystems implicitly use this mechanism." ::= { ipRouteEntry 11 } ipRouteMetric5 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "An alternate routing metric for this route. The semantics of this metric are determined by the routing-protocol specified in the route's ipRouteProto value. If this metric is not used, its value should be set to -1." ::= { ipRouteEntry 12 } ipRouteInfo OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "A reference to MIB definitions specific to the particular routing protocol which is responsible for this route, as determined by the value specified in the route's ipRouteProto value. If this information is not present, its value should be set to the OBJECT IDENTIFIER { 0 0 }, which is a syntatically valid object identifier, and any conformant implementation of ASN.1 and BER must be able to generate and recognize this value." ::= { ipRouteEntry 13 } -- the IP Address Translation table -- The IP address translation table contain the IpAddress to -- `physical' address equivalences. Some interfaces do not -- use translation tables for determining address -- equivalences (e.g., DDN-X.25 has an algorithmic method); -- if all interfaces are of this type, then the Address -- Translation table is empty, i.e., has zero entries. ipNetToMediaTable OBJECT-TYPE SYNTAX SEQUENCE OF IpNetToMediaEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The IP Address Translation table used for mapping from IP addresses to physical addresses." ::= { ip 22 } ipNetToMediaEntry OBJECT-TYPE SYNTAX IpNetToMediaEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Each entry contains one IpAddress to `physical' address equivalence." INDEX { ipNetToMediaIfIndex, ipNetToMediaNetAddress } ::= { ipNetToMediaTable 1 } IpNetToMediaEntry ::= SEQUENCE { ipNetToMediaIfIndex INTEGER, ipNetToMediaPhysAddress PhysAddress, ipNetToMediaNetAddress IpAddress, ipNetToMediaType INTEGER } ipNetToMediaIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The interface on which this entry's equivalence is effective. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { ipNetToMediaEntry 1 } ipNetToMediaPhysAddress OBJECT-TYPE SYNTAX PhysAddress ACCESS read-write STATUS mandatory DESCRIPTION "The media-dependent `physical' address." ::= { ipNetToMediaEntry 2 } ipNetToMediaNetAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The IpAddress corresponding to the media- dependent `physical' address." ::= { ipNetToMediaEntry 3 } ipNetToMediaType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated mapping dynamic(3), static(4) } ACCESS read-write STATUS mandatory DESCRIPTION "The type of mapping. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the ipNetToMediaTable. That is, it effectively dissasociates the interface identified with said entry from the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive tabular information from agents that corresponds to entries not currently in use. Proper interpretation of such entries requires examination of the relevant ipNetToMediaType object." ::= { ipNetToMediaEntry 4 } -- additional IP objects ipRoutingDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of routing entries which were chosen to be discarded even though they are valid. One possible reason for discarding such an entry could be to free-up buffer space for other routing entries." ::= { ip 23 } -- the ICMP group -- Implementation of the ICMP group is mandatory for all -- systems. icmpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of ICMP messages which the entity received. Note that this counter includes all those counted by icmpInErrors." ::= { icmp 1 } icmpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP messages which the entity received but determined as having ICMP-specific errors (bad ICMP checksums, bad length, etc.)." ::= { icmp 2 } icmpInDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Destination Unreachable messages received." ::= { icmp 3 } icmpInTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Time Exceeded messages received." ::= { icmp 4 } icmpInParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Parameter Problem messages received." ::= { icmp 5 } icmpInSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Source Quench messages received." ::= { icmp 6 } icmpInRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Redirect messages received." ::= { icmp 7 } icmpInEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Echo (request) messages received." ::= { icmp 8 } icmpInEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Echo Reply messages received." ::= { icmp 9 } icmpInTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Timestamp (request) messages received." ::= { icmp 10 } icmpInTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Timestamp Reply messages received." ::= { icmp 11 } icmpInAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Address Mask Request messages received." ::= { icmp 12 } icmpInAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Address Mask Reply messages received." ::= { icmp 13 } icmpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of ICMP messages which this entity attempted to send. Note that this counter includes all those counted by icmpOutErrors." ::= { icmp 14 } icmpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP messages which this entity did not send due to problems discovered within ICMP such as a lack of buffers. This value should not include errors discovered outside the ICMP layer such as the inability of IP to route the resultant datagram. In some implementations there may be no types of error which contribute to this counter's value." ::= { icmp 15 } icmpOutDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Destination Unreachable messages sent." ::= { icmp 16 } icmpOutTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Time Exceeded messages sent." ::= { icmp 17 } icmpOutParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Parameter Problem messages sent." ::= { icmp 18 } icmpOutSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Source Quench messages sent." ::= { icmp 19 } icmpOutRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Redirect messages sent. For a host, this object will always be zero, since hosts do not send redirects." ::= { icmp 20 } icmpOutEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Echo (request) messages sent." ::= { icmp 21 } icmpOutEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Echo Reply messages sent." ::= { icmp 22 } icmpOutTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Timestamp (request) messages sent." ::= { icmp 23 } icmpOutTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Timestamp Reply messages sent." ::= { icmp 24 } icmpOutAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Address Mask Request messages sent." ::= { icmp 25 } icmpOutAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ICMP Address Mask Reply messages sent." ::= { icmp 26 } -- the TCP group -- Implementation of the TCP group is mandatory for all -- systems that implement the TCP. -- Note that instances of object types that represent -- information about a particular TCP connection are -- transient; they persist only as long as the connection -- in question. tcpRtoAlgorithm OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following constant(2), -- a constant rto rsre(3), -- MIL-STD-1778, Appendix B vanj(4) -- Van Jacobson's algorithm [10] } ACCESS read-only STATUS mandatory DESCRIPTION "The algorithm used to determine the timeout value used for retransmitting unacknowledged octets." ::= { tcp 1 } tcpRtoMin OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The minimum value permitted by a TCP implementation for the retransmission timeout, measured in milliseconds. More refined semantics for objects of this type depend upon the algorithm used to determine the retransmission timeout. In particular, when the timeout algorithm is rsre(3), an object of this type has the semantics of the LBOUND quantity described in RFC 793." ::= { tcp 2 } tcpRtoMax OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The maximum value permitted by a TCP implementation for the retransmission timeout, measured in milliseconds. More refined semantics for objects of this type depend upon the algorithm used to determine the retransmission timeout. In particular, when the timeout algorithm is rsre(3), an object of this type has the semantics of the UBOUND quantity described in RFC 793." ::= { tcp 3 } tcpMaxConn OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The limit on the total number of TCP connections the entity can support. In entities where the maximum number of connections is dynamic, this object should contain the value -1." ::= { tcp 4 } tcpActiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times TCP connections have made a direct transition to the SYN-SENT state from the CLOSED state." ::= { tcp 5 } tcpPassiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times TCP connections have made a direct transition to the SYN-RCVD state from the LISTEN state." ::= { tcp 6 } tcpAttemptFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times TCP connections have made a direct transition to the CLOSED state from either the SYN-SENT state or the SYN-RCVD state, plus the number of times TCP connections have made a direct transition to the LISTEN state from the SYN-RCVD state." ::= { tcp 7 } tcpEstabResets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times TCP connections have made a direct transition to the CLOSED state from either the ESTABLISHED state or the CLOSE-WAIT state." ::= { tcp 8 } tcpCurrEstab OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory DESCRIPTION "The number of TCP connections for which the current state is either ESTABLISHED or CLOSE- WAIT." ::= { tcp 9 } tcpInSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of segments received, including those received in error. This count includes segments received on currently established connections." ::= { tcp 10 } tcpOutSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of segments sent, including those on current connections but excluding those containing only retransmitted octets." ::= { tcp 11 } tcpRetransSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of segments retransmitted - that is, the number of TCP segments transmitted containing one or more previously transmitted octets." ::= { tcp 12 } -- the TCP Connection table -- The TCP connection table contains information about this -- entity's existing TCP connections. tcpConnTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table containing TCP connection-specific information." ::= { tcp 13 } tcpConnEntry OBJECT-TYPE SYNTAX TcpConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about a particular current TCP connection. An object of this type is transient, in that it ceases to exist when (or soon after) the connection makes the transition to the CLOSED state." INDEX { tcpConnLocalAddress, tcpConnLocalPort, tcpConnRemAddress, tcpConnRemPort } ::= { tcpConnTable 1 } TcpConnEntry ::= SEQUENCE { tcpConnState INTEGER, tcpConnLocalAddress IpAddress, tcpConnLocalPort INTEGER (0..65535), tcpConnRemAddress IpAddress, tcpConnRemPort INTEGER (0..65535) } tcpConnState OBJECT-TYPE SYNTAX INTEGER { closed(1), listen(2), synSent(3), synReceived(4), established(5), finWait1(6), finWait2(7), closeWait(8), lastAck(9), closing(10), timeWait(11), deleteTCB(12) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this TCP connection. The only value which may be set by a management station is deleteTCB(12). Accordingly, it is appropriate for an agent to return a `badValue' response if a management station attempts to set this object to any other value. If a management station sets this object to the value deleteTCB(12), then this has the effect of deleting the TCB (as defined in RFC 793) of the corresponding connection on the managed node, resulting in immediate termination of the connection. As an implementation-specific option, a RST segment may be sent from the managed node to the other TCP endpoint (note however that RST segments are not sent reliably)." ::= { tcpConnEntry 1 } tcpConnLocalAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The local IP address for this TCP connection. In the case of a connection in the listen state which is willing to accept connections for any IP interface associated with the node, the value 0.0.0.0 is used." ::= { tcpConnEntry 2 } tcpConnLocalPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The local port number for this TCP connection." ::= { tcpConnEntry 3 } tcpConnRemAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The remote IP address for this TCP connection." ::= { tcpConnEntry 4 } tcpConnRemPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The remote port number for this TCP connection." ::= { tcpConnEntry 5 } -- additional TCP objects tcpInErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of segments received in error (e.g., bad TCP checksums)." ::= { tcp 14 } tcpOutRsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of TCP segments sent containing the RST flag." ::= { tcp 15 } -- the UDP group -- Implementation of the UDP group is mandatory for all -- systems which implement the UDP. udpInDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of UDP datagrams delivered to UDP users." ::= { udp 1 } udpNoPorts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of received UDP datagrams for which there was no application at the destination port." ::= { udp 2 } udpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of received UDP datagrams that could not be delivered for reasons other than the lack of an application at the destination port." ::= { udp 3 } udpOutDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of UDP datagrams sent from this entity." ::= { udp 4 } -- the UDP Listener table -- The UDP listener table contains information about this -- entity's UDP end-points on which a local application is -- currently accepting datagrams. udpTable OBJECT-TYPE SYNTAX SEQUENCE OF UdpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table containing UDP listener information." ::= { udp 5 } udpEntry OBJECT-TYPE SYNTAX UdpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about a particular current UDP listener." INDEX { udpLocalAddress, udpLocalPort } ::= { udpTable 1 } UdpEntry ::= SEQUENCE { udpLocalAddress IpAddress, udpLocalPort INTEGER (0..65535) } udpLocalAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The local IP address for this UDP listener. In the case of a UDP listener which is willing to accept datagrams for any IP interface associated with the node, the value 0.0.0.0 is used." ::= { udpEntry 1 } udpLocalPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The local port number for this UDP listener." ::= { udpEntry 2 } -- the EGP group -- Implementation of the EGP group is mandatory for all -- systems which implement the EGP. egpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP messages received without error." ::= { egp 1 } egpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP messages received that proved to be in error." ::= { egp 2 } egpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of locally generated EGP messages." ::= { egp 3 } egpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of locally generated EGP messages not sent due to resource limitations within an EGP entity." ::= { egp 4 } -- the EGP Neighbor table -- The EGP neighbor table contains information about this -- entity's EGP neighbors. egpNeighTable OBJECT-TYPE SYNTAX SEQUENCE OF EgpNeighEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The EGP neighbor table." ::= { egp 5 } egpNeighEntry OBJECT-TYPE SYNTAX EgpNeighEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about this entity's relationship with a particular EGP neighbor." INDEX { egpNeighAddr } ::= { egpNeighTable 1 } EgpNeighEntry ::= SEQUENCE { egpNeighState INTEGER, egpNeighAddr IpAddress, egpNeighAs INTEGER, egpNeighInMsgs Counter, egpNeighInErrs Counter, egpNeighOutMsgs Counter, egpNeighOutErrs Counter, egpNeighInErrMsgs Counter, egpNeighOutErrMsgs Counter, egpNeighStateUps Counter, egpNeighStateDowns Counter, egpNeighIntervalHello INTEGER, egpNeighIntervalPoll INTEGER, egpNeighMode INTEGER, egpNeighEventTrigger INTEGER } egpNeighState OBJECT-TYPE SYNTAX INTEGER { idle(1), acquisition(2), down(3), up(4), cease(5) } ACCESS read-only STATUS mandatory DESCRIPTION "The EGP state of the local system with respect to this entry's EGP neighbor. Each EGP state is represented by a value that is one greater than the numerical value associated with said state in RFC 904." ::= { egpNeighEntry 1 } egpNeighAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The IP address of this entry's EGP neighbor." ::= { egpNeighEntry 2 } egpNeighAs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The autonomous system of this EGP peer. Zero should be specified if the autonomous system number of the neighbor is not yet known." ::= { egpNeighEntry 3 } egpNeighInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP messages received without error from this EGP peer." ::= { egpNeighEntry 4 } egpNeighInErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP messages received from this EGP peer that proved to be in error (e.g., bad EGP checksum)." ::= { egpNeighEntry 5 } egpNeighOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of locally generated EGP messages to this EGP peer." ::= { egpNeighEntry 6 } egpNeighOutErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of locally generated EGP messages not sent to this EGP peer due to resource limitations within an EGP entity." ::= { egpNeighEntry 7 } egpNeighInErrMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP-defined error messages received from this EGP peer." ::= { egpNeighEntry 8 } egpNeighOutErrMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP-defined error messages sent to this EGP peer." ::= { egpNeighEntry 9 } egpNeighStateUps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP state transitions to the UP state with this EGP peer." ::= { egpNeighEntry 10 } egpNeighStateDowns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of EGP state transitions from the UP state to any other state with this EGP peer." ::= { egpNeighEntry 11 } egpNeighIntervalHello OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The interval between EGP Hello command retransmissions (in hundredths of a second). This represents the t1 timer as defined in RFC 904." ::= { egpNeighEntry 12 } egpNeighIntervalPoll OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The interval between EGP poll command retransmissions (in hundredths of a second). This represents the t3 timer as defined in RFC 904." ::= { egpNeighEntry 13 } egpNeighMode OBJECT-TYPE SYNTAX INTEGER { active(1), passive(2) } ACCESS read-only STATUS mandatory DESCRIPTION "The polling mode of this EGP entity, either passive or active." ::= { egpNeighEntry 14 } egpNeighEventTrigger OBJECT-TYPE SYNTAX INTEGER { start(1), stop(2) } ACCESS read-write STATUS mandatory DESCRIPTION "A control variable used to trigger operator- initiated Start and Stop events. When read, this variable always returns the most recent value that egpNeighEventTrigger was set to. If it has not been set since the last initialization of the network management subsystem on the node, it returns a value of `stop'. When set, this variable causes a Start or Stop event on the specified neighbor, as specified on pages 8-10 of RFC 904. Briefly, a Start event causes an Idle peer to begin neighbor acquisition and a non-Idle peer to reinitiate neighbor acquisition. A stop event causes a non-Idle peer to return to the Idle state until a Start event occurs, either via egpNeighEventTrigger or otherwise." ::= { egpNeighEntry 15 } -- additional EGP objects egpAs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The autonomous system number of this EGP entity." ::= { egp 6 } -- the Transmission group -- Based on the transmission media underlying each interface -- on a system, the corresponding portion of the Transmission -- group is mandatory for that system. -- When Internet-standard definitions for managing -- transmission media are defined, the transmission group is -- used to provide a prefix for the names of those objects. -- Typically, such definitions reside in the experimental -- portion of the MIB until they are "proven", then as a -- part of the Internet standardization process, the -- definitions are accordingly elevated and a new object -- identifier, under the transmission group is defined. By -- convention, the name assigned is: -- -- type OBJECT IDENTIFIER ::= { transmission number } -- -- where "type" is the symbolic value used for the media in -- the ifType column of the ifTable object, and "number" is -- the actual integer value corresponding to the symbol. -- the SNMP group -- Implementation of the SNMP group is mandatory for all -- systems which support an SNMP protocol entity. Some of -- the objects defined below will be zero-valued in those -- SNMP implementations that are optimized to support only -- those functions specific to either a management agent or -- a management station. In particular, it should be -- observed that the objects below refer to an SNMP entity, -- and there may be several SNMP entities residing on a -- managed node (e.g., if the node is hosting acting as -- a management station). snmpInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of Messages delivered to the SNMP entity from the transport service." ::= { snmp 1 } snmpOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Messages which were passed from the SNMP protocol entity to the transport service." ::= { snmp 2 } snmpInBadVersions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Messages which were delivered to the SNMP protocol entity and were for an unsupported SNMP version." ::= { snmp 3 } snmpInBadCommunityNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Messages delivered to the SNMP protocol entity which used a SNMP community name not known to said entity." ::= { snmp 4 } snmpInBadCommunityUses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Messages delivered to the SNMP protocol entity which represented an SNMP operation which was not allowed by the SNMP community named in the Message." ::= { snmp 5 } snmpInASNParseErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of ASN.1 or BER errors encountered by the SNMP protocol entity when decoding received SNMP Messages." ::= { snmp 6 } -- { snmp 7 } is not used snmpInTooBigs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `tooBig'." ::= { snmp 8 } snmpInNoSuchNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `noSuchName'." ::= { snmp 9 } snmpInBadValues OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `badValue'." ::= { snmp 10 } snmpInReadOnlys OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number valid SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `readOnly'. It should be noted that it is a protocol error to generate an SNMP PDU which contains the value `readOnly' in the error-status field, as such this object is provided as a means of detecting incorrect implementations of the SNMP." ::= { snmp 11 } snmpInGenErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `genErr'." ::= { snmp 12 } snmpInTotalReqVars OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of MIB objects which have been retrieved successfully by the SNMP protocol entity as the result of receiving valid SNMP Get-Request and Get-Next PDUs." ::= { snmp 13 } snmpInTotalSetVars OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of MIB objects which have been altered successfully by the SNMP protocol entity as the result of receiving valid SNMP Set-Request PDUs." ::= { snmp 14 } snmpInGetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Request PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 15 } snmpInGetNexts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Next PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 16 } snmpInSetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Set-Request PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 17 } snmpInGetResponses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Response PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 18 } snmpInTraps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Trap PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 19 } snmpOutTooBigs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `tooBig.'" ::= { snmp 20 } snmpOutNoSuchNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status is `noSuchName'." ::= { snmp 21 } snmpOutBadValues OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `badValue'." ::= { snmp 22 } -- { snmp 23 } is not used snmpOutGenErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `genErr'." ::= { snmp 24 } snmpOutGetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Request PDUs which have been generated by the SNMP protocol entity." ::= { snmp 25 } snmpOutGetNexts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Next PDUs which have been generated by the SNMP protocol entity." ::= { snmp 26 } snmpOutSetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Set-Request PDUs which have been generated by the SNMP protocol entity." ::= { snmp 27 } snmpOutGetResponses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Get-Response PDUs which have been generated by the SNMP protocol entity." ::= { snmp 28 } snmpOutTraps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of SNMP Trap PDUs which have been generated by the SNMP protocol entity." ::= { snmp 29 } snmpEnableAuthenTraps OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } ACCESS read-write STATUS mandatory DESCRIPTION "Indicates whether the SNMP agent process is permitted to generate authentication-failure traps. The value of this object overrides any configuration information; as such, it provides a means whereby all authentication-failure traps may be disabled. Note that it is strongly recommended that this object be stored in non-volatile memory so that it remains constant between re-initializations of the network management system." ::= { snmp 30 } END SNMP-MIB-Compiler-0.06.orig/mibs/list.txt0100644000175000017500000002622707435074233017003 0ustar jdivejdive- rfc1065.txt: RFC1065-SMI - rfc1066.txt: RFC1066-MIB - rfc1067.txt: RFC1067-SNMP - rfc1098.txt: RFC1098-SNMP + rfc1155.txt: RFC1155-SMI + rfc1156.txt: RFC1156-MIB + rfc1157.txt: RFC1157-SNMP + rfc1158.txt: RFC1158-MIB + rfc1162.txt: CLNS-MIB + rfc1212.txt: RFC-1212 + rfc1213.txt: RFC1213-MIB + rfc1215.txt: RFC-1215 - rfc1224.txt: RFC1224-MIB - rfc1227.txt: SMUX-MIB - rfc1229.txt: RFC1229-MIB - rfc1230.txt: RFC1230-MIB - rfc1231.txt: RFC1231-MIB - rfc1232.txt: RFC1232-MIB - rfc1233.txt: RFC1233-MIB - rfc1238.txt: CLNS-MIB - rfc1243.txt: RFC1243-MIB - rfc1248.txt: RFC1248-MIB - rfc1252.txt: RFC1252-MIB - rfc1253.txt: RFC1253-MIB - rfc1269.txt: RFC1269-MIB - rfc1271.txt: RFC1271-MIB - rfc1284.txt: RFC1284-MIB - rfc1285.txt: RFC1285-MIB - rfc1286.txt: RFC1286-MIB - rfc1289.txt: RFC1289-phivMIB - rfc1298.txt: RFC1298-MIB - rfc1303.txt: RFC-1303 - rfc1304.txt: RFC1304-MIB - rfc1315.txt: RFC1315-MIB - rfc1316.txt: RFC1316-MIB - rfc1317.txt: RFC1317-MIB - rfc1318.txt: RFC1318-MIB - rfc1353.txt: RFC1353-MIB - rfc1354.txt: RFC1354-MIB - rfc1368.txt: SNMP-REPEATER-MIB - rfc1381.txt: RFC1381-MIB - rfc1382.txt: RFC1382-MIB - rfc1389.txt: RFC1389-MIB - rfc1398.txt: RFC1398-MIB - rfc1406.txt: RFC1406-MIB - rfc1407.txt: RFC1407-MIB - rfc1414.txt: RFC1414-MIB - rfc1442.txt: SNMPv2-SMI - rfc1443.txt: SNMPv2-TC - rfc1444.txt: SNMPv2-CONF - rfc1447.txt: SNMPv2-PARTY-MIB - rfc1448.txt: SNMPv2-PDU - rfc1449.txt: SNMPv2-TM - rfc1450.txt: SNMPv2-MIB - rfc1451.txt: SNMPv2-M2M-MIB - rfc1461.txt: MIOX25-MIB - rfc1471.txt: PPP-LCP-MIB - rfc1472.txt: PPP-SEC-MIB - rfc1473.txt: PPP-IP-NCP-MIB - rfc1474.txt: PPP-BRIDGE-NCP-MIB - rfc1493.txt: BRIDGE-MIB - rfc1494.txt: MIME-MHS-MAPPINGS - rfc1495.txt: MIME-MHS - rfc1507.txt: GSSAPI - rfc1508.txt: GSS-API - rfc1512.txt: FDDI-SMT73-MIB - rfc1513.txt: TOKEN-RING-RMON-MIB - rfc1514.txt: HOST-RESOURCES-MIB - rfc1515.txt: MAU-MIB - rfc1516.txt: SNMP-REPEATER-MIB - rfc1525.txt: SOURCE-ROUTING-MIB - rfc1559.txt: DECNET-PHIV-MIB - rfc1565.txt: APPLICATION-MIB - rfc1566.txt: MTA-MIB - rfc1567.txt: DSA-MIB + rfc1573.txt: IANAifType-MIB - rfc1573.txt: IF-MIB - rfc1592.txt: DPI20-MIB - rfc1593.txt: IBM-6611-APPN-MIB - rfc1595.txt: SONET-MIB - rfc1596.txt: FRNETSERV-MIB - rfc1604.txt: FRNETSERV-MIB - rfc1611.txt: DNS-SERVER-MIB - rfc1612.txt: DNS-RESOLVER-MIB - rfc1623.txt: EtherLike-MIB - rfc1628.txt: UPS-MIB - rfc1643.txt: EtherLike-MIB - rfc1650.txt: EtherLike-MIB - rfc1657.txt: BGP4-MIB - rfc1658.txt: CHARACTER-MIB - rfc1659.txt: RS-232-MIB - rfc1660.txt: PARALLEL-MIB - rfc1665.txt: SNA-NAU-MIB - rfc1666.txt: SNA-NAU-MIB - rfc1694.txt: SIP-MIB - rfc1695.txt: ATM-MIB - rfc1696.txt: Modem-MIB - rfc1697.txt: RDBMS-MIB - rfc1724.txt: RIPv2-MIB + rfc1742.txt: APPLETALK-MIB - rfc1743.txt: TOKENRING-MIB - rfc1747.txt: SNA-SDLC-MIB - rfc1748.txt: TOKENRING-MIB - rfc1749.txt: TOKENRING-STATION-SR-MIB - rfc1757.txt: RMON-MIB - rfc1759.txt: Printer-MIB - rfc1792.txt: TCPIPX-MIB - rfc1850.txt: OSPF-MIB - rfc1850.txt: OSPF-TRAP-MIB - rfc1901.txt: COMMUNITY-BASED-SNMPv2 o rfc1902.txt: SNMPv2-SMI o rfc1903.txt: SNMPv2-TC o rfc1904.txt: SNMPv2-CONF + rfc1905.txt: SNMPv2-PDU + rfc1906.txt: SNMPv2-TM + rfc1907.txt: SNMPv2-MIB - rfc1910.txt: SNMPv2-USEC-MIB - rfc2006.txt: MIP-MIB - rfc2011.txt: IP-MIB - rfc2012.txt: TCP-MIB - rfc2013.txt: UDP-MIB - rfc2020.txt: DOT12-IF-MIB - rfc2021.txt: RMON2-MIB - rfc2024.txt: DLSW-MIB - rfc2037.txt: ENTITY-MIB - rfc2051.txt: APPC-MIB - rfc2064.txt: FLOW-METER-MIBQ - rfc2078.txt: GSS-API - rfc2096.txt: IP-FORWARD-MIB - rfc2108.txt: SNMP-REPEATER-MIB - rfc2115.txt: FRAME-RELAY-DTE-MIB - rfc2127.txt: ISDN-MIB - rfc2128.txt: DIAL-CONTROL-MIB - rfc2155.txt: APPN-MIB - rfc2206.txt: RSVP-MIB - rfc2213.txt: INTEGRATED-SERVICES-MIB - rfc2214.txt: INTEGRATED-SERVICES-GUARANTEED-MIB - rfc2232.txt: APPN-DLUR-MIB + rfc2233.txt: IF-MIB - rfc2238.txt: HPR-MIB - rfc2239.txt: MAU-MIB - rfc2248.txt: NETWORK-SERVICES-MIB - rfc2249.txt: MTA-MIB - rfc2261.txt: SNMP-FRAMEWORK-MIB - rfc2262.txt: SNMP-MPD-MIB - rfc2263.txt: SNMP-TARGET-MIB - rfc2263.txt: SNMP-NOTIFICATION-MIB - rfc2263.txt: SNMP-PROXY-MIB - rfc2264.txt: SNMP-USER-BASED-SM-MIB - rfc2265.txt: SNMP-VIEW-BASED-ACM-MIB - rfc2266.txt: DOT12-RPTR-MIB - rfc2271.txt: SNMP-FRAMEWORK-MIB - rfc2272.txt: SNMP-MPD-MIB - rfc2273.txt: SNMP-TARGET-MIB - rfc2273.txt: SNMP-NOTIFICATION-MIB - rfc2273.txt: SNMP-PROXY-MIB - rfc2274.txt: SNMP-USER-BASED-SM-MIB - rfc2275.txt: SNMP-VIEW-BASED-ACM-MIB - rfc2287.txt: SYSAPPL-MIB - rfc2320.txt: IPOA-MIB - rfc2325.txt: COFFEE-POT-MIB - rfc2358.txt: EtherLike-MIB - rfc2366.txt: IPATM-IPMC-MIB - rfc2417.txt: IPATM-IPMC-MIB - rfc2452.txt: IPV6-TCP-MIB - rfc2454.txt: IPV6-UDP-MIB - rfc2455.txt: APPN-MIB - rfc2456.txt: APPN-TRAP-MIB - rfc2457.txt: EBN-MIB - rfc2465.txt: IPV6-TC - rfc2465.txt: IPV6-MIB - rfc2466.txt: IPV6-ICMP-MIB - rfc2493.txt: PerfHist-TC-MIB - rfc2494.txt: DS0-MIB - rfc2494.txt: DS0BUNDLE-MIB - rfc2495.txt: DS1-MIB - rfc2496.txt: DS3-MIB - rfc2512.txt: ATM-ACCOUNTING-INFORMATION-MIB - rfc2513.txt: ACCOUNTING-CONTROL-MIB - rfc2514.txt: ATM-TC-MIB - rfc2515.txt: ATM-MIB - rfc2558.txt: SONET-MIB - rfc2561.txt: TN3270E-MIB - rfc2562.txt: TN3270E-RT-MIB + rfc2578.txt: SNMPv2-SMI + rfc2579.txt: SNMPv2-TC + rfc2580.txt: SNMPv2-CONF Standards Summary Please consult the latest version of Internet Official Protocol Standards. As of this writing, the latest version is RFC 2400. SMIv1 Data Definition Language Full Standards: RFC 1155 - Structure of Management Information RFC 1212 - Concise MIB Definitions Informational: RFC 1215 - A Convention for Defining Traps SMIv2 Data Definition Language Draft Standards: RFC 1902 - Structure of Management Information RFC 1903 - Textual Conventions RFC 1904 - Conformance Statements SNMPv1 Protocol Full Standards: RFC 1157 - Simple Network Management Protocol Proposed Standards: RFC 1418 - SNMP over OSI RFC 1419 - SNMP over AppleTalk RFC 1420 - SNMP over IPX SNMPv2 Protocol Draft Standards: RFC 1905 - Protocol Operations for SNMPv2 RFC 1906 - Transport Mappings for SNMPv2 RFC 1907 - MIB for SNMPv2 RFC 1908 - Coexistence between SNMPv1 and SNMPv2 Experimental: RFC 1901 - Community-based SNMPv2 RFC 1909 - Administrative Infrastructure RFC 1910 - User-based Security Model SNMPv3 Protocol Draft Standards: RFC 1905 - Protocol Operations for SNMPv2 RFC 1906 - Transport Mappings for SNMPv2 RFC 1907 - MIB for SNMPv2 Proposed Standards: RFC 2271 - Architecture for Describing SNMP Management Frameworks RFC 2272 - Message Processing and Dispatching RFC 2273 - SNMPv3 Applications RFC 2274 - User-based Security Model RFC 2275 - View-based Access Control Model SNMP Agent Extensibility Proposed Standards: RFC 2257 - AgentX Protocol Version 1 SMIv1 MIB Modules Full Standards: RFC 1213 - Management Information Base II RFC 1643 - Ethernet-Like Interface Types MIB Draft Standards: RFC 1493 - Bridge MIB RFC 1559 - DECnet phase IV MIB RFC 1757 - Remote Network Monitoring MIB Proposed Standards: RFC 1285 - FDDI Interface Type (SMT 6.2) MIB RFC 1381 - X.25 LAPB MIB RFC 1382 - X.25 Packet Layer MIB RFC 1414 - Identification MIB RFC 1461 - X.25 Multiprotocol Interconnect MIB RFC 1471 - PPP Link Control Protocol MIB RFC 1472 - PPP Security Protocols MIB RFC 1473 - PPP IP NCP MIB RFC 1474 - PPP Bridge NCP MIB RFC 1512 - FDDI Interface Type (SMT 7.3) MIB RFC 1513 - RMON Token Ring Extensions MIB RFC 1514 - Host Resources MIB RFC 1515 - IEEE 802.3 MAU MIB RFC 1525 - Source Routing Bridge MIB RFC 1742 - AppleTalk MIB SMIv2 MIB Modules Draft Standards: RFC 1657 - BGP version 4 MIB RFC 1658 - Character Device MIB RFC 1659 - RS-232 Interface Type MIB RFC 1660 - Parallel Printer Interface Type MIB RFC 1694 - SMDS Interface Type MIB RFC 1724 - RIP version 2 MIB RFC 1748 - IEEE 802.5 Interface Type MIB RFC 1850 - OSPF version 2 MIB RFC 1907 - SNMPv2 MIB RFC 2115 - Frame Relay DTE Interface Type MIB Proposed Standards: RFC 1567 - X.500 Directory Monitoring MIB RFC 1604 - Frame Relay Service MIB RFC 1611 - DNS Server MIB RFC 1612 - DNS Resolver MIB RFC 1628 - Uninterruptible Power Supply MIB RFC 1666 - SNA NAU MIB RFC 1696 - Modem MIB RFC 1697 - RDBMS MIB RFC 1747 - SNA Data Link Control MIB RFC 1749 - 802.5 Station Source Routing MIB RFC 1759 - Printer MIB RFC 2006 - Internet Protocol Mobility MIB RFC 2011 - Internet Protocol MIB RFC 2012 - Transmission Control Protocol MIB RFC 2013 - User Datagram Protocol MIB RFC 2020 - IEEE 802.12 Interfaces MIB RFC 2021 - RMON Version 2 MIB RFC 2024 - Data Link Switching MIB RFC 2037 - Entity MIB RFC 2051 - APPC MIB RFC 2074 - RMON Protocol Identifier RFC 2096 - IP Forwarding Table MIB RFC 2108 - IEEE 802.3 Repeater MIB RFC 2127 - ISDN MIB RFC 2128 - Dial Control MIB RFC 2206 - Resource Reservation Protocol MIB RFC 2213 - Integrated Services MIB RFC 2214 - Guaranteed Service MIB RFC 2232 - Dependent LU Requester MIB RFC 2233 - Interfaces Group MIB RFC 2238 - High Performance Routing MIB RFC 2239 - IEEE 802.3 MAU MIB RFC 2248 - Network Services Monitoring MIB RFC 2249 - Mail Monitoring MIB RFC 2266 - IEEE 802.12 Repeater MIB RFC 2271 - SNMP Framework MIB RFC 2272 - SNMPv3 MPD MIB RFC 2273 - SNMP Applications MIB RFC 2274 - SNMPv3 USM MIB RFC 2275 - SNMP VACM MIB RFC 2287 - System-Level Application Mgmt MIB RFC 2320 - Classical IP and ARP over ATM MIB RFC 2358 - Ethernet-Like Interface Types MIB RFC 2366 - Multicast over UNI 3.0/3.1 / ATM MIB RFC 2452 - IPv6 UDP MIB RFC 2454 - IPv6 TCP MIB RFC 2455 - APPN MIB RFC 2456 - APPN Trap MIB RFC 2457 - APPN Extended Border Node MIB RFC 2465 - IPv6 Textual Conventions and MIB RFC 2466 - ICMPv6 MIB RFC 2493 - 15 Minute Performance History TCs RFC 2494 - DS0, DS0 Bundle Interface Type MIB RFC 2495 - DS1, E1, DS2, E2 Interface Type MIB RFC 2496 - DS3/E3 Interface Type MIB RFC 2512 - Accounting MIB for ATM Networks RFC 2513 - Accounting Control MIB RFC 2514 - ATM Textual Conventions and OIDs RFC 2515 - ATM MIB RFC 2558 - SONET/SDH Interface Type MIB IANA Maintained MIB Modules Interface Type Textual Convention (IANAifType) ftp://ftp.iana.org/mib/ianaiftype.mib Related Documents Informational: RFC 1270 - SNMP Communication Services RFC 1321 - MD5 Message-Digest Algorithm RFC 1470 - Network Management Tool Catalog RFC 2039 - Applicability of Standard MIBs to WWW Server Management RFC 2089 - Mapping SNMPv2 onto SNMPv1 within a bi-lingual SNMP agent Experimental: RFC 1187 - Bulk Table Retrieval with the SNMP RFC 1224 - Techniques for Managing Asynchronously Generated Alerts RFC 1238 - CLNS MIB RFC 1592 - SNMP Distributed Program Interface RFC 1792 - TCP/IPX Connection MIB Specification RFC 2064 - Traffic Flow Measurement: Meter MIB SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-TC0100644000175000017500000011230407435074233016533 0ustar jdivejdive-- extracted from rfc2579.txt SNMPv2-TC DEFINITIONS ::= BEGIN IMPORTS TimeTicks FROM SNMPv2-SMI; -- definition of textual conventions TEXTUAL-CONVENTION MACRO ::= BEGIN TYPE NOTATION ::= DisplayPart "STATUS" Status "DESCRIPTION" Text ReferPart "SYNTAX" Syntax VALUE NOTATION ::= value(VALUE Syntax) -- adapted ASN.1 DisplayPart ::= "DISPLAY-HINT" Text | empty Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in [2] Text ::= value(IA5String) Syntax ::= -- Must be one of the following: -- a base type (or its refinement), or -- a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBits ::= NamedBit | NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative END DisplayString ::= TEXTUAL-CONVENTION DISPLAY-HINT "255a" STATUS current DESCRIPTION "Represents textual information taken from the NVT ASCII character set, as defined in pages 4, 10-11 of RFC 854. To summarize RFC 854, the NVT ASCII repertoire specifies: - the use of character codes 0-127 (decimal) - the graphics characters (32-126) are interpreted as US ASCII - NUL, LF, CR, BEL, BS, HT, VT and FF have the special meanings specified in RFC 854 - the other 25 codes have no standard interpretation - the sequence 'CR LF' means newline - the sequence 'CR NUL' means carriage-return - an 'LF' not preceded by a 'CR' means moving to the same column on the next line. - the sequence 'CR x' for any x other than LF or NUL is illegal. (Note that this also means that a string may end with either 'CR LF' or 'CR NUL', but not with CR.) Any object defined using this syntax may not exceed 255 characters in length." SYNTAX OCTET STRING (SIZE (0..255)) PhysAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents media- or physical-level addresses." SYNTAX OCTET STRING MacAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents an 802 MAC address represented in the `canonical' order defined by IEEE 802.1a, i.e., as if it were transmitted least significant bit first, even though 802.5 (in contrast to other 802.x protocols) requires MAC addresses to be transmitted most significant bit first." SYNTAX OCTET STRING (SIZE (6)) TruthValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a boolean value." SYNTAX INTEGER { true(1), false(2) } TestAndIncr ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents integer-valued information used for atomic operations. When the management protocol is used to specify that an object instance having this syntax is to be modified, the new value supplied via the management protocol must precisely match the value presently held by the instance. If not, the management protocol set operation fails with an error of `inconsistentValue'. Otherwise, if the current value is the maximum value of 2^31-1 (2147483647 decimal), then the value held by the instance is wrapped to zero; otherwise, the value held by the instance is incremented by one. (Note that regardless of whether the management protocol set operation succeeds, the variable- binding in the request and response PDUs are identical.) The value of the ACCESS clause for objects having this syntax is either `read-write' or `read-create'. When an instance of a columnar object having this syntax is created, any value may be supplied via the management protocol. When the network management portion of the system is re- initialized, the value of every object instance having this syntax must either be incremented from its value prior to the re-initialization, or (if the value prior to the re- initialization is unknown) be set to a pseudo-randomly generated value." SYNTAX INTEGER (0..2147483647) AutonomousType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents an independently extensible type identification value. It may, for example, indicate a particular sub-tree with further MIB definitions, or define a particular type of protocol or hardware." SYNTAX OBJECT IDENTIFIER InstancePointer ::= TEXTUAL-CONVENTION STATUS obsolete DESCRIPTION "A pointer to either a specific instance of a MIB object or a conceptual row of a MIB table in the managed device. In the latter case, by convention, it is the name of the particular instance of the first accessible columnar object in the conceptual row. The two uses of this textual convention are replaced by VariablePointer and RowPointer, respectively." SYNTAX OBJECT IDENTIFIER VariablePointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A pointer to a specific object instance. For example, sysContact.0 or ifInOctets.3." SYNTAX OBJECT IDENTIFIER RowPointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a pointer to a conceptual row. The value is the name of the instance of the first accessible columnar object in the conceptual row. For example, ifIndex.3 would point to the 3rd row in the ifTable (note that if ifIndex were not-accessible, then ifDescr.3 would be used instead)." SYNTAX OBJECT IDENTIFIER RowStatus ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The RowStatus textual convention is used to manage the creation and deletion of conceptual rows, and is used as the value of the SYNTAX clause for the status column of a conceptual row (as described in Section 7.7.1 of [2].) The status column has six defined values: - `active', which indicates that the conceptual row is available for use by the managed device; - `notInService', which indicates that the conceptual row exists in the agent, but is unavailable for use by the managed device (see NOTE below); 'notInService' has no implication regarding the internal consistency of the row, availability of resources, or consistency with the current state of the managed device; - `notReady', which indicates that the conceptual row exists in the agent, but is missing information necessary in order to be available for use by the managed device (i.e., one or more required columns in the conceptual row have not been instanciated); - `createAndGo', which is supplied by a management station wishing to create a new instance of a conceptual row and to have its status automatically set to active, making it available for use by the managed device; - `createAndWait', which is supplied by a management station wishing to create a new instance of a conceptual row (but not make it available for use by the managed device); and, - `destroy', which is supplied by a management station wishing to delete all of the instances associated with an existing conceptual row. Whereas five of the six values (all except `notReady') may be specified in a management protocol set operation, only three values will be returned in response to a management protocol retrieval operation: `notReady', `notInService' or `active'. That is, when queried, an existing conceptual row has only three states: it is either available for use by the managed device (the status column has value `active'); it is not available for use by the managed device, though the agent has sufficient information to attempt to make it so (the status column has value `notInService'); or, it is not available for use by the managed device, and an attempt to make it so would fail because the agent has insufficient information (the state column has value `notReady'). NOTE WELL This textual convention may be used for a MIB table, irrespective of whether the values of that table's conceptual rows are able to be modified while it is active, or whether its conceptual rows must be taken out of service in order to be modified. That is, it is the responsibility of the DESCRIPTION clause of the status column to specify whether the status column must not be `active' in order for the value of some other column of the same conceptual row to be modified. If such a specification is made, affected columns may be changed by an SNMP set PDU if the RowStatus would not be equal to `active' either immediately before or after processing the PDU. In other words, if the PDU also contained a varbind that would change the RowStatus value, the column in question may be changed if the RowStatus was not equal to `active' as the PDU was received, or if the varbind sets the status to a value other than 'active'. Also note that whenever any elements of a row exist, the RowStatus column must also exist. To summarize the effect of having a conceptual row with a status column having a SYNTAX clause value of RowStatus, consider the following state diagram: STATE +--------------+-----------+-------------+------------- | A | B | C | D | |status col.|status column| |status column | is | is |status column ACTION |does not exist| notReady | notInService| is active --------------+--------------+-----------+-------------+------------- set status |noError ->D|inconsist- |inconsistent-|inconsistent- column to | or | entValue| Value| Value createAndGo |inconsistent- | | | | Value| | | --------------+--------------+-----------+-------------+------------- set status |noError see 1|inconsist- |inconsistent-|inconsistent- column to | or | entValue| Value| Value createAndWait |wrongValue | | | --------------+--------------+-----------+-------------+------------- set status |inconsistent- |inconsist- |noError |noError column to | Value| entValue| | active | | | | | | or | | | | | | | |see 2 ->D|see 8 ->D| ->D --------------+--------------+-----------+-------------+------------- set status |inconsistent- |inconsist- |noError |noError ->C column to | Value| entValue| | notInService | | | | | | or | | or | | | | | |see 3 ->C| ->C|see 6 --------------+--------------+-----------+-------------+------------- set status |noError |noError |noError |noError ->A column to | | | | or destroy | ->A| ->A| ->A|see 7 --------------+--------------+-----------+-------------+------------- set any other |see 4 |noError |noError |see 5 column to some| | | | value | | see 1| ->C| ->D --------------+--------------+-----------+-------------+------------- (1) goto B or C, depending on information available to the agent. (2) if other variable bindings included in the same PDU, provide values for all columns which are missing but required, and all columns have acceptable values, then return noError and goto D. (3) if other variable bindings included in the same PDU, provide legal values for all columns which are missing but required, then return noError and goto C. (4) at the discretion of the agent, the return value may be either: inconsistentName: because the agent does not choose to create such an instance when the corresponding RowStatus instance does not exist, or inconsistentValue: if the supplied value is inconsistent with the state of some other MIB object's value, or noError: because the agent chooses to create the instance. If noError is returned, then the instance of the status column must also be created, and the new state is B or C, depending on the information available to the agent. If inconsistentName or inconsistentValue is returned, the row remains in state A. (5) depending on the MIB definition for the column/table, either noError or inconsistentValue may be returned. (6) the return value can indicate one of the following errors: wrongValue: because the agent does not support notInService (e.g., an agent which does not support createAndWait), or inconsistentValue: because the agent is unable to take the row out of service at this time, perhaps because it is in use and cannot be de-activated. (7) the return value can indicate the following error: inconsistentValue: because the agent is unable to remove the row at this time, perhaps because it is in use and cannot be de-activated. (8) the transition to D can fail, e.g., if the values of the conceptual row are inconsistent, then the error code would be inconsistentValue. NOTE: Other processing of (this and other varbinds of) the set request may result in a response other than noError being returned, e.g., wrongValue, noCreation, etc. Conceptual Row Creation There are four potential interactions when creating a conceptual row: selecting an instance-identifier which is not in use; creating the conceptual row; initializing any objects for which the agent does not supply a default; and, making the conceptual row available for use by the managed device. Interaction 1: Selecting an Instance-Identifier The algorithm used to select an instance-identifier varies for each conceptual row. In some cases, the instance- identifier is semantically significant, e.g., the destination address of a route, and a management station selects the instance-identifier according to the semantics. In other cases, the instance-identifier is used solely to distinguish conceptual rows, and a management station without specific knowledge of the conceptual row might examine the instances present in order to determine an unused instance-identifier. (This approach may be used, but it is often highly sub-optimal; however, it is also a questionable practice for a naive management station to attempt conceptual row creation.) Alternately, the MIB module which defines the conceptual row might provide one or more objects which provide assistance in determining an unused instance-identifier. For example, if the conceptual row is indexed by an integer-value, then an object having an integer-valued SYNTAX clause might be defined for such a purpose, allowing a management station to issue a management protocol retrieval operation. In order to avoid unnecessary collisions between competing management stations, `adjacent' retrievals of this object should be different. Finally, the management station could select a pseudo-random number to use as the index. In the event that this index was already in use and an inconsistentValue was returned in response to the management protocol set operation, the management station should simply select a new pseudo-random number and retry the operation. A MIB designer should choose between the two latter algorithms based on the size of the table (and therefore the efficiency of each algorithm). For tables in which a large number of entries are expected, it is recommended that a MIB object be defined that returns an acceptable index for creation. For tables with small numbers of entries, it is recommended that the latter pseudo-random index mechanism be used. Interaction 2: Creating the Conceptual Row Once an unused instance-identifier has been selected, the management station determines if it wishes to create and activate the conceptual row in one transaction or in a negotiated set of interactions. Interaction 2a: Creating and Activating the Conceptual Row The management station must first determine the column requirements, i.e., it must determine those columns for which it must or must not provide values. Depending on the complexity of the table and the management station's knowledge of the agent's capabilities, this determination can be made locally by the management station. Alternately, the management station issues a management protocol get operation to examine all columns in the conceptual row that it wishes to create. In response, for each column, there are three possible outcomes: - a value is returned, indicating that some other management station has already created this conceptual row. We return to interaction 1. - the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it should supply a value for this column when the conceptual row is to be created. - the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column. Once the column requirements have been determined, a management protocol set operation is accordingly issued. This operation also sets the new instance of the status column to `createAndGo'. When the agent processes the set operation, it verifies that it has sufficient information to make the conceptual row available for use by the managed device. The information available to the agent is provided by two sources: the management protocol set operation which creates the conceptual row, and, implementation-specific defaults supplied by the agent (note that an agent must provide implementation-specific defaults for at least those objects which it implements as read-only). If there is sufficient information available, then the conceptual row is created, a `noError' response is returned, the status column is set to `active', and no further interactions are necessary (i.e., interactions 3 and 4 are skipped). If there is insufficient information, then the conceptual row is not created, and the set operation fails with an error of `inconsistentValue'. On this error, the management station can issue a management protocol retrieval operation to determine if this was because it failed to specify a value for a required column, or, because the selected instance of the status column already existed. In the latter case, we return to interaction 1. In the former case, the management station can re-issue the set operation with the additional information, or begin interaction 2 again using `createAndWait' in order to negotiate creation of the conceptual row. NOTE WELL Regardless of the method used to determine the column requirements, it is possible that the management station might deem a column necessary when, in fact, the agent will not allow that particular columnar instance to be created or written. In this case, the management protocol set operation will fail with an error such as `noCreation' or `notWritable'. In this case, the management station decides whether it needs to be able to set a value for that particular columnar instance. If not, the management station re-issues the management protocol set operation, but without setting a value for that particular columnar instance; otherwise, the management station aborts the row creation algorithm. Interaction 2b: Negotiating the Creation of the Conceptual Row The management station issues a management protocol set operation which sets the desired instance of the status column to `createAndWait'. If the agent is unwilling to process a request of this sort, the set operation fails with an error of `wrongValue'. (As a consequence, such an agent must be prepared to accept a single management protocol set operation, i.e., interaction 2a above, containing all of the columns indicated by its column requirements.) Otherwise, the conceptual row is created, a `noError' response is returned, and the status column is immediately set to either `notInService' or `notReady', depending on whether it has sufficient information to (attempt to) make the conceptual row available for use by the managed device. If there is sufficient information available, then the status column is set to `notInService'; otherwise, if there is insufficient information, then the status column is set to `notReady'. Regardless, we proceed to interaction 3. Interaction 3: Initializing non-defaulted Objects The management station must now determine the column requirements. It issues a management protocol get operation to examine all columns in the created conceptual row. In the response, for each column, there are three possible outcomes: - a value is returned, indicating that the agent implements the object-type associated with this column and had sufficient information to provide a value. For those columns to which the agent provides read-create access (and for which the agent allows their values to be changed after their creation), a value return tells the management station that it may issue additional management protocol set operations, if it desires, in order to change the value associated with this column. - the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. However, the agent does not have sufficient information to provide a value, and until a value is provided, the conceptual row may not be made available for use by the managed device. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it must issue additional management protocol set operations, in order to provide a value associated with this column. - the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column. If the value associated with the status column is `notReady', then the management station must first deal with all `noSuchInstance' columns, if any. Having done so, the value of the status column becomes `notInService', and we proceed to interaction 4. Interaction 4: Making the Conceptual Row Available Once the management station is satisfied with the values associated with the columns of the conceptual row, it issues a management protocol set operation to set the status column to `active'. If the agent has sufficient information to make the conceptual row available for use by the managed device, the management protocol set operation succeeds (a `noError' response is returned). Otherwise, the management protocol set operation fails with an error of `inconsistentValue'. NOTE WELL A conceptual row having a status column with value `notInService' or `notReady' is unavailable to the managed device. As such, it is possible for the managed device to create its own instances during the time between the management protocol set operation which sets the status column to `createAndWait' and the management protocol set operation which sets the status column to `active'. In this case, when the management protocol set operation is issued to set the status column to `active', the values held in the agent supersede those used by the managed device. If the management station is prevented from setting the status column to `active' (e.g., due to management station or network failure) the conceptual row will be left in the `notInService' or `notReady' state, consuming resources indefinitely. The agent must detect conceptual rows that have been in either state for an abnormally long period of time and remove them. It is the responsibility of the DESCRIPTION clause of the status column to indicate what an abnormally long period of time would be. This period of time should be long enough to allow for human response time (including `think time') between the creation of the conceptual row and the setting of the status to `active'. In the absence of such information in the DESCRIPTION clause, it is suggested that this period be approximately 5 minutes in length. This removal action applies not only to newly-created rows, but also to previously active rows which are set to, and left in, the notInService state for a prolonged period exceeding that which is considered normal for such a conceptual row. Conceptual Row Suspension When a conceptual row is `active', the management station may issue a management protocol set operation which sets the instance of the status column to `notInService'. If the agent is unwilling to do so, the set operation fails with an error of `wrongValue' or `inconsistentValue'. Otherwise, the conceptual row is taken out of service, and a `noError' response is returned. It is the responsibility of the DESCRIPTION clause of the status column to indicate under what circumstances the status column should be taken out of service (e.g., in order for the value of some other column of the same conceptual row to be modified). Conceptual Row Deletion For deletion of conceptual rows, a management protocol set operation is issued which sets the instance of the status column to `destroy'. This request may be made regardless of the current value of the status column (e.g., it is possible to delete conceptual rows which are either `notReady', `notInService' or `active'.) If the operation succeeds, then all instances associated with the conceptual row are immediately removed." SYNTAX INTEGER { -- the following two values are states: -- these values may be read or written active(1), notInService(2), -- the following value is a state: -- this value may be read, but not written notReady(3), -- the following three values are -- actions: these values may be written, -- but are never read createAndGo(4), createAndWait(5), destroy(6) } TimeStamp ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The value of the sysUpTime object at which a specific occurrence happened. The specific occurrence must be defined in the description of any object defined using this type. If sysUpTime is reset to zero as a result of a re- initialization of the network management (sub)system, then the values of all TimeStamp objects are also reset. However, after approximately 497 days without a re- initialization, the sysUpTime object will reach 2^^32-1 and then increment around to zero; in this case, existing values of TimeStamp objects do not change. This can lead to ambiguities in the value of TimeStamp objects." SYNTAX TimeTicks TimeInterval ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A period of time, measured in units of 0.01 seconds." SYNTAX INTEGER (0..2147483647) DateAndTime ::= TEXTUAL-CONVENTION DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d" STATUS current DESCRIPTION "A date-time specification. field octets contents range ----- ------ -------- ----- 1 1-2 year* 0..65536 2 3 month 1..12 3 4 day 1..31 4 5 hour 0..23 5 6 minutes 0..59 6 7 seconds 0..60 (use 60 for leap-second) 7 8 deci-seconds 0..9 8 9 direction from UTC '+' / '-' 9 10 hours from UTC* 0..13 10 11 minutes from UTC 0..59 * Notes: - the value of year is in network-byte order - daylight saving time in New Zealand is +13 For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be displayed as: 1992-5-26,13:30:15.0,-4:0 Note that if only local time is known, then timezone information (fields 8-10) is not present." SYNTAX OCTET STRING (SIZE (8 | 11)) StorageType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Describes the memory realization of a conceptual row. A row which is volatile(2) is lost upon reboot. A row which is either nonVolatile(3), permanent(4) or readOnly(5), is backed up by stable storage. A row which is permanent(4) can be changed but not deleted. A row which is readOnly(5) cannot be changed nor deleted. If the value of an object with this syntax is either permanent(4) or readOnly(5), it cannot be written. Conversely, if the value is either other(1), volatile(2) or nonVolatile(3), it cannot be modified to be permanent(4) or readOnly(5). (All illegal modifications result in a 'wrongValue' error.) Every usage of this textual convention is required to specify the columnar objects which a permanent(4) row must at a minimum allow to be writable." SYNTAX INTEGER { other(1), -- eh? volatile(2), -- e.g., in RAM nonVolatile(3), -- e.g., in NVRAM permanent(4), -- e.g., partially in ROM readOnly(5) -- e.g., completely in ROM } TDomain ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Denotes a kind of transport service. Some possible values, such as snmpUDPDomain, are defined in the SNMPv2-TM MIB module. Other possible values are defined in other MIB modules." REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906." SYNTAX OBJECT IDENTIFIER TAddress ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Denotes a transport service address. A TAddress value is always interpreted within the context of a TDomain value. Thus, each definition of a TDomain value must be accompanied by a definition of a textual convention for use with that TDomain. Some possible textual conventions, such as SnmpUDPAddress for snmpUDPDomain, are defined in the SNMPv2-TM MIB module. Other possible textual conventions are defined in other MIB modules." REFERENCE "The SNMPv2-TM MIB module is defined in RFC 1906." SYNTAX OCTET STRING (SIZE (1..255)) END SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-MIB0100644000175000017500000006101007435074233016631 0ustar jdivejdive-- extracted from rfc1907.txt SNMPv2-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, TimeTicks, Counter32, snmpModules, mib-2 FROM SNMPv2-SMI DisplayString, TestAndIncr, TimeStamp FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF; snmpMIB MODULE-IDENTITY LAST-UPDATED "9511090000Z" ORGANIZATION "IETF SNMPv2 Working Group" CONTACT-INFO " Marshall T. Rose Postal: Dover Beach Consulting, Inc. 420 Whisman Court Mountain View, CA 94043-2186 US Tel: +1 415 968 1052 E-mail: mrose@dbc.mtview.ca.us" DESCRIPTION "The MIB module for SNMPv2 entities." REVISION "9304010000Z" DESCRIPTION "The initial revision of this MIB module was published as RFC 1450." ::= { snmpModules 1 } snmpMIBObjects OBJECT IDENTIFIER ::= { snmpMIB 1 } -- ::= { snmpMIBObjects 1 } this OID is obsolete -- ::= { snmpMIBObjects 2 } this OID is obsolete -- ::= { snmpMIBObjects 3 } this OID is obsolete -- the System group -- -- a collection of objects common to all managed systems. system OBJECT IDENTIFIER ::= { mib-2 1 } sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the entity. This value should include the full name and version identification of the system's hardware type, software operating-system, and networking software." ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "The vendor's authoritative identification of the network management subsystem contained in the entity. This value is allocated within the SMI enterprises subtree (1.3.6.1.4.1) and provides an easy and unambiguous means for determining `what kind of box' is being managed. For example, if vendor `Flintstones, Inc.' was assigned the subtree 1.3.6.1.4.1.4242, it could assign the identifier 1.3.6.1.4.1.4242.1.1 to its `Fred Router'." ::= { system 2 } sysUpTime OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The time (in hundredths of a second) since the network management portion of the system was last re-initialized." ::= { system 3 } sysContact OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-write STATUS current DESCRIPTION "The textual identification of the contact person for this managed node, together with information on how to contact this person. If no contact information is known, the value is the zero-length string." ::= { system 4 } sysName OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-write STATUS current DESCRIPTION "An administratively-assigned name for this managed node. By convention, this is the node's fully-qualified domain name. If the name is unknown, the value is the zero-length string." ::= { system 5 } sysLocation OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-write STATUS current DESCRIPTION "The physical location of this node (e.g., `telephone closet, 3rd floor'). If the location is unknown, the value is the zero-length string." ::= { system 6 } sysServices OBJECT-TYPE SYNTAX INTEGER (0..127) MAX-ACCESS read-only STATUS current DESCRIPTION "A value which indicates the set of services that this entity may potentially offers. The value is a sum. This sum initially takes the value zero, Then, for each layer, L, in the range 1 through 7, that this node performs transactions for, 2 raised to (L - 1) is added to the sum. For example, a node which performs only routing functions would have a value of 4 (2^(3-1)). In contrast, a node which is a host offering application services would have a value of 72 (2^(4-1) + 2^(7-1)). Note that in the context of the Internet suite of protocols, values should be calculated accordingly: layer functionality 1 physical (e.g., repeaters) 2 datalink/subnetwork (e.g., bridges) 3 internet (e.g., supports the IP) 4 end-to-end (e.g., supports the TCP) 7 applications (e.g., supports the SMTP) For systems including OSI protocols, layers 5 and 6 may also be counted." ::= { system 7 } -- object resource information -- -- a collection of objects which describe the SNMPv2 entity's -- (statically and dynamically configurable) support of -- various MIB modules. sysORLastChange OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time of the most recent change in state or value of any instance of sysORID." ::= { system 8 } sysORTable OBJECT-TYPE SYNTAX SEQUENCE OF SysOREntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The (conceptual) table listing the capabilities of the local SNMPv2 entity acting in an agent role with respect to various MIB modules. SNMPv2 entities having dynamically- configurable support of MIB modules will have a dynamically-varying number of conceptual rows." ::= { system 9 } sysOREntry OBJECT-TYPE SYNTAX SysOREntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry (conceptual row) in the sysORTable." INDEX { sysORIndex } ::= { sysORTable 1 } SysOREntry ::= SEQUENCE { sysORIndex INTEGER, sysORID OBJECT IDENTIFIER, sysORDescr DisplayString, sysORUpTime TimeStamp } sysORIndex OBJECT-TYPE SYNTAX INTEGER (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The auxiliary variable used for identifying instances of the columnar objects in the sysORTable." ::= { sysOREntry 1 } sysORID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "An authoritative identification of a capabilities statement with respect to various MIB modules supported by the local SNMPv2 entity acting in an agent role." ::= { sysOREntry 2 } sysORDescr OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "A textual description of the capabilities identified by the corresponding instance of sysORID." ::= { sysOREntry 3 } sysORUpTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time this conceptual row was last instanciated." ::= { sysOREntry 4 } -- the SNMP group -- -- a collection of objects providing basic instrumentation and -- control of an SNMP entity. snmp OBJECT IDENTIFIER ::= { mib-2 11 } snmpInPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of messages delivered to the SNMP entity from the transport service." ::= { snmp 1 } snmpInBadVersions OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of SNMP messages which were delivered to the SNMP entity and were for an unsupported SNMP version." ::= { snmp 3 } snmpInBadCommunityNames OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of SNMP messages delivered to the SNMP entity which used a SNMP community name not known to said entity." ::= { snmp 4 } snmpInBadCommunityUses OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of SNMP messages delivered to the SNMP entity which represented an SNMP operation which was not allowed by the SNMP community named in the message." ::= { snmp 5 } snmpInASNParseErrs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of ASN.1 or BER errors encountered by the SNMP entity when decoding received SNMP messages." ::= { snmp 6 } snmpEnableAuthenTraps OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "Indicates whether the SNMP entity is permitted to generate authenticationFailure traps. The value of this object overrides any configuration information; as such, it provides a means whereby all authenticationFailure traps may be disabled. Note that it is strongly recommended that this object be stored in non-volatile memory so that it remains constant across re-initializations of the network management system." ::= { snmp 30 } snmpSilentDrops OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of GetRequest-PDUs, GetNextRequest-PDUs, GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs delivered to the SNMP entity which were silently dropped because the size of a reply containing an alternate Response-PDU with an empty variable-bindings field was greater than either a local constraint or the maximum message size associated with the originator of the request." ::= { snmp 31 } snmpProxyDrops OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of GetRequest-PDUs, GetNextRequest-PDUs, GetBulkRequest-PDUs, SetRequest-PDUs, and InformRequest-PDUs delivered to the SNMP entity which were silently dropped because the transmission of the (possibly translated) message to a proxy target failed in a manner (other than a time-out) such that no Response-PDU could be returned." ::= { snmp 32 } -- information for notifications -- -- a collection of objects which allow the SNMPv2 entity, when -- acting in an agent role, to be configured to generate -- SNMPv2-Trap-PDUs. snmpTrap OBJECT IDENTIFIER ::= { snmpMIBObjects 4 } snmpTrapOID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS accessible-for-notify STATUS current DESCRIPTION "The authoritative identification of the notification currently being sent. This variable occurs as the second varbind in every SNMPv2-Trap-PDU and InformRequest-PDU." ::= { snmpTrap 1 } -- ::= { snmpTrap 2 } this OID is obsolete snmpTrapEnterprise OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS accessible-for-notify STATUS current DESCRIPTION "The authoritative identification of the enterprise associated with the trap currently being sent. When a SNMPv2 proxy agent is mapping an RFC1157 Trap-PDU into a SNMPv2-Trap-PDU, this variable occurs as the last varbind." ::= { snmpTrap 3 } -- ::= { snmpTrap 4 } this OID is obsolete -- well-known traps snmpTraps OBJECT IDENTIFIER ::= { snmpMIBObjects 5 } coldStart NOTIFICATION-TYPE STATUS current DESCRIPTION "A coldStart trap signifies that the SNMPv2 entity, acting in an agent role, is reinitializing itself and that its configuration may have been altered." ::= { snmpTraps 1 } warmStart NOTIFICATION-TYPE STATUS current DESCRIPTION "A warmStart trap signifies that the SNMPv2 entity, acting in an agent role, is reinitializing itself such that its configuration is unaltered." ::= { snmpTraps 2 } -- Note the linkDown NOTIFICATION-TYPE ::= { snmpTraps 3 } -- and the linkUp NOTIFICATION-TYPE ::= { snmpTraps 4 } -- are defined in RFC 1573 authenticationFailure NOTIFICATION-TYPE STATUS current DESCRIPTION "An authenticationFailure trap signifies that the SNMPv2 entity, acting in an agent role, has received a protocol message that is not properly authenticated. While all implementations of the SNMPv2 must be capable of generating this trap, the snmpEnableAuthenTraps object indicates whether this trap will be generated." ::= { snmpTraps 5 } -- Note the egpNeighborLoss NOTIFICATION-TYPE ::= { snmpTraps 6 } -- is defined in RFC 1213 -- the set group -- -- a collection of objects which allow several cooperating -- SNMPv2 entities, all acting in a manager role, to -- coordinate their use of the SNMPv2 set operation. snmpSet OBJECT IDENTIFIER ::= { snmpMIBObjects 6 } snmpSetSerialNo OBJECT-TYPE SYNTAX TestAndIncr MAX-ACCESS read-write STATUS current DESCRIPTION "An advisory lock used to allow several cooperating SNMPv2 entities, all acting in a manager role, to coordinate their use of the SNMPv2 set operation. This object is used for coarse-grain coordination. To achieve fine-grain coordination, one or more similar objects might be defined within each MIB group, as appropriate." ::= { snmpSet 1 } -- conformance information snmpMIBConformance OBJECT IDENTIFIER ::= { snmpMIB 2 } snmpMIBCompliances OBJECT IDENTIFIER ::= { snmpMIBConformance 1 } snmpMIBGroups OBJECT IDENTIFIER ::= { snmpMIBConformance 2 } -- compliance statements -- ::= { snmpMIBCompliances 1 } this OID is obsolete snmpBasicCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMPv2 entities which implement the SNMPv2 MIB." MODULE -- this module MANDATORY-GROUPS { snmpGroup, snmpSetGroup, systemGroup, snmpBasicNotificationsGroup } GROUP snmpCommunityGroup DESCRIPTION "This group is mandatory for SNMPv2 entities which support community-based authentication." ::= { snmpMIBCompliances 2 } -- units of conformance -- ::= { snmpMIBGroups 1 } this OID is obsolete -- ::= { snmpMIBGroups 2 } this OID is obsolete -- ::= { snmpMIBGroups 3 } this OID is obsolete -- ::= { snmpMIBGroups 4 } this OID is obsolete snmpGroup OBJECT-GROUP OBJECTS { snmpInPkts, snmpInBadVersions, snmpInASNParseErrs, snmpSilentDrops, snmpProxyDrops, snmpEnableAuthenTraps } STATUS current DESCRIPTION "A collection of objects providing basic instrumentation and control of an SNMPv2 entity." ::= { snmpMIBGroups 8 } snmpCommunityGroup OBJECT-GROUP OBJECTS { snmpInBadCommunityNames, snmpInBadCommunityUses } STATUS current DESCRIPTION "A collection of objects providing basic instrumentation of a SNMPv2 entity which supports community-based authentication." ::= { snmpMIBGroups 9 } snmpSetGroup OBJECT-GROUP OBJECTS { snmpSetSerialNo } STATUS current DESCRIPTION "A collection of objects which allow several cooperating SNMPv2 entities, all acting in a manager role, to coordinate their use of the SNMPv2 set operation." ::= { snmpMIBGroups 5 } systemGroup OBJECT-GROUP OBJECTS { sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices, sysORLastChange, sysORID, sysORUpTime, sysORDescr } STATUS current DESCRIPTION "The system group defines objects which are common to all managed systems." ::= { snmpMIBGroups 6 } snmpBasicNotificationsGroup NOTIFICATION-GROUP NOTIFICATIONS { coldStart, authenticationFailure } STATUS current DESCRIPTION "The two notifications which an SNMPv2 entity is required to implement." ::= { snmpMIBGroups 7 } -- definitions in RFC 1213 made obsolete by the inclusion of a -- subset of the snmp group in this MIB snmpOutPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Messages which were passed from the SNMP protocol entity to the transport service." ::= { snmp 2 } -- { snmp 7 } is not used snmpInTooBigs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `tooBig'." ::= { snmp 8 } snmpInNoSuchNames OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `noSuchName'." ::= { snmp 9 } snmpInBadValues OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `badValue'." ::= { snmp 10 } snmpInReadOnlys OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number valid SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `readOnly'. It should be noted that it is a protocol error to generate an SNMP PDU which contains the value `readOnly' in the error-status field, as such this object is provided as a means of detecting incorrect implementations of the SNMP." ::= { snmp 11 } snmpInGenErrs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were delivered to the SNMP protocol entity and for which the value of the error-status field is `genErr'." ::= { snmp 12 } snmpInTotalReqVars OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of MIB objects which have been retrieved successfully by the SNMP protocol entity as the result of receiving valid SNMP Get-Request and Get-Next PDUs." ::= { snmp 13 } snmpInTotalSetVars OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of MIB objects which have been altered successfully by the SNMP protocol entity as the result of receiving valid SNMP Set-Request PDUs." ::= { snmp 14 } snmpInGetRequests OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Request PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 15 } snmpInGetNexts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Next PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 16 } snmpInSetRequests OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Set-Request PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 17 } snmpInGetResponses OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Response PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 18 } snmpInTraps OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Trap PDUs which have been accepted and processed by the SNMP protocol entity." ::= { snmp 19 } snmpOutTooBigs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `tooBig.'" ::= { snmp 20 } snmpOutNoSuchNames OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status is `noSuchName'." ::= { snmp 21 } snmpOutBadValues OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `badValue'." ::= { snmp 22 } -- { snmp 23 } is not used snmpOutGenErrs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP PDUs which were generated by the SNMP protocol entity and for which the value of the error-status field is `genErr'." ::= { snmp 24 } snmpOutGetRequests OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Request PDUs which have been generated by the SNMP protocol entity." ::= { snmp 25 } snmpOutGetNexts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Next PDUs which have been generated by the SNMP protocol entity." ::= { snmp 26 } snmpOutSetRequests OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Set-Request PDUs which have been generated by the SNMP protocol entity." ::= { snmp 27 } snmpOutGetResponses OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Get-Response PDUs which have been generated by the SNMP protocol entity." ::= { snmp 28 } snmpOutTraps OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS obsolete DESCRIPTION "The total number of SNMP Trap PDUs which have been generated by the SNMP protocol entity." ::= { snmp 29 } snmpObsoleteGroup OBJECT-GROUP OBJECTS { snmpOutPkts, snmpInTooBigs, snmpInNoSuchNames, snmpInBadValues, snmpInReadOnlys, snmpInGenErrs, snmpInTotalReqVars, snmpInTotalSetVars, snmpInGetRequests, snmpInGetNexts, snmpInSetRequests, snmpInGetResponses, snmpInTraps, snmpOutTooBigs, snmpOutNoSuchNames, snmpOutBadValues, snmpOutGenErrs, snmpOutGetRequests, snmpOutGetNexts, snmpOutSetRequests, snmpOutGetResponses, snmpOutTraps } STATUS obsolete DESCRIPTION "A collection of objects from RFC 1213 made obsolete by this MIB." ::= { snmpMIBGroups 10 } END SNMP-MIB-Compiler-0.06.orig/mibs/RFC1156-MIB0100644000175000017500000011053407435074233016541 0ustar jdivejdive-- extracted from rfc1156.txt RFC1156-MIB DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1155-SMI; mib OBJECT IDENTIFIER ::= { mgmt 1 } system OBJECT IDENTIFIER ::= { mib 1 } interfaces OBJECT IDENTIFIER ::= { mib 2 } at OBJECT IDENTIFIER ::= { mib 3 } ip OBJECT IDENTIFIER ::= { mib 4 } icmp OBJECT IDENTIFIER ::= { mib 5 } tcp OBJECT IDENTIFIER ::= { mib 6 } udp OBJECT IDENTIFIER ::= { mib 7 } egp OBJECT IDENTIFIER ::= { mib 8 } -- object types -- the System group sysDescr OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory ::= { system 2 } sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory ::= { system 3 } -- the Interfaces group ifNumber OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { interfaces 1 } -- the Interfaces table ifTable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry ACCESS read-write STATUS mandatory ::= { interfaces 2 } ifEntry OBJECT-TYPE SYNTAX IfEntry ACCESS read-write STATUS mandatory ::= { ifTable 1 } IfEntry ::= SEQUENCE { ifIndex INTEGER, ifDescr OCTET STRING, ifType INTEGER, ifMtu INTEGER, ifSpeed Gauge, ifPhysAddress OCTET STRING, ifAdminStatus INTEGER, ifOperStatus INTEGER, ifLastChange TimeTicks, ifInOctets Counter, ifInUcastPkts Counter, ifInNUcastPkts Counter, ifInDiscards Counter, ifInErrors Counter, ifInUnknownProtos Counter, ifOutOctets Counter, ifOutUcastPkts Counter, ifOutNUcastPkts Counter, ifOutDiscards Counter, ifOutErrors Counter, ifOutQLen Gauge } ifIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ifEntry 1 } ifDescr OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory ::= { ifEntry 2 } ifType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following regular1822(2), hdh1822(3), ddn-x25(4), rfc877-x25(5), ethernet-csmacd(6), iso88023-csmacd(7), iso88024-tokenBus(8), iso88025-tokenRing(9), iso88026-man(10), starLan(11), proteon-10MBit(12), proteon-80MBit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), t1-carrier(18), cept(19), basicIsdn(20), primaryIsdn(21), -- proprietary serial propPointToPointSerial(22) } ACCESS read-only STATUS mandatory ::= { ifEntry 3 } ifMtu OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ifEntry 4 } ifSpeed OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { ifEntry 5 } ifPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory ::= { ifEntry 6 } ifAdminStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-write STATUS mandatory ::= { ifEntry 7 } ifOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-only STATUS mandatory ::= { ifEntry 8 } ifLastChange OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory ::= { ifEntry 9 } ifInOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 10 } ifInUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 11 } ifInNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 12 } ifInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 13 } ifInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 14 } ifInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 15 } ifOutOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 16 } ifOutUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 17 } ifOutNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 18 } ifOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 19 } ifOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 20 } ifOutQLen OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { ifEntry 21 } -- the Address Translation group atTable OBJECT-TYPE SYNTAX SEQUENCE OF AtEntry ACCESS read-write STATUS mandatory ::= { at 1 } atEntry OBJECT-TYPE SYNTAX AtEntry ACCESS read-write STATUS mandatory ::= { atTable 1 } AtEntry ::= SEQUENCE { atIfIndex INTEGER, atPhysAddress OCTET STRING, atNetAddress NetworkAddress } atIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { atEntry 1 } atPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory ::= { atEntry 2 } atNetAddress OBJECT-TYPE SYNTAX NetworkAddress ACCESS read-write STATUS mandatory ::= { atEntry 3 } -- the IP group ipForwarding OBJECT-TYPE SYNTAX INTEGER { gateway(1), -- entity forwards datagrams host(2) -- entity does NOT forward datagrams } ACCESS read-only STATUS mandatory ::= { ip 1 } ipDefaultTTL OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ip 2 } ipInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 3 } ipInHdrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 4 } ipInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 5 } ipForwDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 6 } ipInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 7 } ipInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 8 } ipInDelivers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 9 } ipOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 10 } ipOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 11 } ipOutNoRoutes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 12 } ipReasmTimeout OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ip 13 } ipReasmReqds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 14 } ipReasmOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 15 } ipReasmFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 16 } ipFragOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 17 } ipFragFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 18 } ipFragCreates OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 19 } -- the IP Interface table ipAddrTable OBJECT-TYPE SYNTAX SEQUENCE OF IpAddrEntry ACCESS read-only STATUS mandatory ::= { ip 20 } ipAddrEntry OBJECT-TYPE SYNTAX IpAddrEntry ACCESS read-only STATUS mandatory ::= { ipAddrTable 1 } IpAddrEntry ::= SEQUENCE { ipAdEntAddr IpAddress, ipAdEntIfIndex INTEGER, ipAdEntNetMask IpAddress, ipAdEntBcastAddr INTEGER } ipAdEntAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { ipAddrEntry 1 } ipAdEntIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ipAddrEntry 2 } ipAdEntNetMask OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { ipAddrEntry 3 } ipAdEntBcastAddr OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ipAddrEntry 4 } -- the IP Routing table ipRoutingTable OBJECT-TYPE SYNTAX SEQUENCE OF IpRouteEntry ACCESS read-write STATUS mandatory ::= { ip 21 } ipRouteEntry OBJECT-TYPE SYNTAX IpRouteEntry ACCESS read-write STATUS mandatory ::= { ipRoutingTable 1 } IpRouteEntry ::= SEQUENCE { ipRouteDest IpAddress, ipRouteIfIndex INTEGER, ipRouteMetric1 INTEGER, ipRouteMetric2 INTEGER, ipRouteMetric3 INTEGER, ipRouteMetric4 INTEGER, ipRouteNextHop IpAddress, ipRouteType INTEGER, ipRouteProto INTEGER, ipRouteAge INTEGER } ipRouteDest OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipRouteEntry 1 } ipRouteIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 2 } ipRouteMetric1 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 3 } ipRouteMetric2 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 4 } ipRouteMetric3 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 5 } ipRouteMetric4 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 6 } ipRouteNextHop OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipRouteEntry 7 } ipRouteType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated route -- route to directly direct(3), -- connected (sub-)network -- route to a non-local remote(4) -- host/network/sub-network } ACCESS read-write STATUS mandatory ::= { ipRouteEntry 8 } ipRouteProto OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following -- non-protocol information -- e.g., manually local(2), -- configured entries -- set via a network netmgmt(3), -- management protocol -- obtained via ICMP, icmp(4), -- e.g., Redirect -- the following are -- gateway routing protocols egp(5), ggp(6), hello(7), rip(8), is-is(9), es-is(10), ciscoIgrp(11), bbnSpfIgp(12), oigp(13) } ACCESS read-only STATUS mandatory ::= { ipRouteEntry 9 } ipRouteAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 10 } -- the ICMP group icmpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 1 } icmpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 2 } icmpInDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 3 } icmpInTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 4 } icmpInParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 5 } icmpInSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 6 } icmpInRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 7 } icmpInEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 8 } icmpInEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 9 } icmpInTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 10 } icmpInTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 11 } icmpInAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 12 } icmpInAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 13 } icmpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 14 } icmpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 15 } icmpOutDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 16 } icmpOutTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 17 } icmpOutParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 18 } icmpOutSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 19 } icmpOutRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 20 } icmpOutEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 21 } icmpOutEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 22 } icmpOutTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 23 } icmpOutTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 24 } icmpOutAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 25 } icmpOutAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 26 } -- the TCP group tcpRtoAlgorithm OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following constant(2), -- a constant rto rsre(3), -- MIL-STD-1778, Appendix B vanj(4) -- Van Jacobson's algorithm [15] } ACCESS read-only STATUS mandatory ::= { tcp 1 } tcpRtoMin OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 2 } tcpRtoMax OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 3 } tcpMaxConn OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 4 } tcpActiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 5 } tcpPassiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 6 } tcpAttemptFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 7 } tcpEstabResets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 8 } tcpCurrEstab OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { tcp 9 } tcpInSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 10 } tcpOutSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 11 } tcpRetransSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 12 } -- the TCP connections table tcpConnTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpConnEntry ACCESS read-only STATUS mandatory ::= { tcp 13 } tcpConnEntry OBJECT-TYPE SYNTAX TcpConnEntry ACCESS read-only STATUS mandatory ::= { tcpConnTable 1 } TcpConnEntry ::= SEQUENCE { tcpConnState INTEGER, tcpConnLocalAddress IpAddress, tcpConnLocalPort INTEGER (0..65535), tcpConnRemAddress IpAddress, tcpConnRemPort INTEGER (0..65535) } tcpConnState OBJECT-TYPE SYNTAX INTEGER { closed(1), listen(2), synSent(3), synReceived(4), established(5), finWait1(6), finWait2(7), closeWait(8), lastAck(9), closing(10), timeWait(11) } ACCESS read-only STATUS mandatory ::= { tcpConnEntry 1 } tcpConnLocalAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { tcpConnEntry 2 } tcpConnLocalPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { tcpConnEntry 3 } tcpConnRemAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { tcpConnEntry 4 } tcpConnRemPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { tcpConnEntry 5 } -- the UDP group udpInDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 1 } udpNoPorts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 2 } udpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 3 } udpOutDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 4 } -- the EGP group egpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 1 } egpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 2 } egpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 3 } egpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 4 } -- the EGP Neighbor table egpNeighTable OBJECT-TYPE SYNTAX SEQUENCE OF EgpNeighEntry ACCESS read-only STATUS mandatory ::= { egp 5 } egpNeighEntry OBJECT-TYPE SYNTAX EgpNeighEntry ACCESS read-only STATUS mandatory ::= { egpNeighTable 1 } EgpNeighEntry ::= SEQUENCE { egpNeighState INTEGER, egpNeighAddr IpAddress } egpNeighState OBJECT-TYPE SYNTAX INTEGER { idle(1), acquisition(2), down(3), up(4), cease(5) } ACCESS read-only STATUS mandatory ::= { egpNeighEntry 1 } egpNeighAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { egpNeighEntry 2 } END SNMP-MIB-Compiler-0.06.orig/mibs/RFC-12120100644000175000017500000000513607435074233016203 0ustar jdivejdive-- extracted from rfc1212.txt RFC-1212 DEFINITIONS ::= BEGIN IMPORTS ObjectName FROM RFC1155-SMI DisplayString FROM RFC1158-MIB; OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= -- must conform to -- RFC1155's ObjectSyntax "SYNTAX" type(ObjectSyntax) "ACCESS" Access "STATUS" Status DescrPart ReferPart IndexPart DefValPart VALUE NOTATION ::= value (VALUE ObjectName) Access ::= "read-only" | "read-write" | "write-only" | "not-accessible" Status ::= "mandatory" | "optional" | "obsolete" | "deprecated" DescrPart ::= "DESCRIPTION" value (description DisplayString) | empty ReferPart ::= "REFERENCE" value (reference DisplayString) | empty IndexPart ::= "INDEX" "{" IndexTypes "}" | empty IndexTypes ::= IndexType | IndexTypes "," IndexType IndexType ::= -- if indexobject, use the SYNTAX -- value of the correspondent -- OBJECT-TYPE invocation value (indexobject ObjectName) -- otherwise use named SMI type -- must conform to IndexSyntax below | type (indextype) DefValPart ::= "DEFVAL" "{" value (defvalue ObjectSyntax) "}" | empty END IndexSyntax ::= CHOICE { number INTEGER (0..MAX), string OCTET STRING, object OBJECT IDENTIFIER, address NetworkAddress, ipAddress IpAddress } END SNMP-MIB-Compiler-0.06.orig/mibs/obsoletes/0040755000175000017500000000000007435074233017260 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/mibs/obsoletes/SNMPv2-CONF.rfc19040100644000175000017500000001560407435074233022045 0ustar jdivejdive-- extracted from rfc1904.txt SNMPv2-CONF DEFINITIONS ::= BEGIN -- definitions for conformance groups OBJECT-GROUP MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) ObjectsPart ::= "OBJECTS" "{" Objects "}" Objects ::= Object | Objects "," Object Object ::= value(Name ObjectName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- uses the NVT ASCII character set Text ::= """" string """" END -- more definitions for conformance groups NOTIFICATION-GROUP MACRO ::= BEGIN TYPE NOTATION ::= NotificationsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) NotificationsPart ::= "NOTIFICATIONS" "{" Notifications "}" Notifications ::= Notification | Notifications "," Notification Notification ::= value(Name NotificationName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- uses the NVT ASCII character set Text ::= """" string """" END -- definitions for compliance statements MODULE-COMPLIANCE MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty ModulePart ::= Modules | empty Modules ::= Module | Modules Module Module ::= -- name of module -- "MODULE" ModuleName MandatoryPart CompliancePart ModuleName ::= modulereference ModuleIdentifier -- must not be empty unless contained -- in MIB Module | empty ModuleIdentifier ::= value(ModuleID OBJECT IDENTIFIER) | empty MandatoryPart ::= "MANDATORY-GROUPS" "{" Groups "}" | empty Groups ::= Group | Groups "," Group Group ::= value(Group OBJECT IDENTIFIER) CompliancePart ::= Compliances | empty Compliances ::= Compliance | Compliances Compliance Compliance ::= ComplianceGroup | Object ComplianceGroup ::= "GROUP" value(Name OBJECT IDENTIFIER) "DESCRIPTION" Text Object ::= "OBJECT" value(Name ObjectName) SyntaxPart WriteSyntaxPart AccessPart "DESCRIPTION" Text -- must be a refinement for object's SYNTAX clause SyntaxPart ::= "SYNTAX" type(SYNTAX) | empty -- must be a refinement for object's SYNTAX clause WriteSyntaxPart ::= "WRITE-SYNTAX" type(WriteSYNTAX) | empty AccessPart ::= "MIN-ACCESS" Access | empty Access ::= "not-accessible" | "accessible-for-notify" | "read-only" | "read-write" | "read-create" -- uses the NVT ASCII character set Text ::= """" string """" END -- definitions for capabilities statements AGENT-CAPABILITIES MACRO ::= BEGIN TYPE NOTATION ::= "PRODUCT-RELEASE" Text "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "obsolete" ReferPart ::= "REFERENCE" Text | empty ModulePart ::= Modules | empty Modules ::= Module | Modules Module Module ::= -- name of module -- "SUPPORTS" ModuleName "INCLUDES" "{" Groups "}" VariationPart ModuleName ::= identifier ModuleIdentifier ModuleIdentifier ::= value(ModuleID OBJECT IDENTIFIER) | empty Groups ::= Group | Groups "," Group Group ::= value(Name OBJECT IDENTIFIER) VariationPart ::= Variations | empty Variations ::= Variation | Variations Variation Variation ::= ObjectVariation | NotificationVariation NotificationVariation ::= "VARIATION" value(Name NotificationName) AccessPart "DESCRIPTION" Text ObjectVariation ::= "VARIATION" value(Name ObjectName) SyntaxPart WriteSyntaxPart AccessPart CreationPart DefValPart "DESCRIPTION" Text -- must be a refinement for object's SYNTAX clause SyntaxPart ::= "SYNTAX" type(SYNTAX) | empty -- must be a refinement for object's SYNTAX clause WriteSyntaxPart ::= "WRITE-SYNTAX" type(WriteSYNTAX) | empty AccessPart ::= "ACCESS" Access | empty Access ::= "not-implemented" -- only "not-implemented" for notifications | "accessible-for-notify" | "read-only" | "read-write" | "read-create" -- following is for backward-compatibility only | "write-only" CreationPart ::= "CREATION-REQUIRES" "{" Cells "}" | empty Cells ::= Cell | Cells "," Cell Cell ::= value(Cell ObjectName) DefValPart ::= "DEFVAL" "{" value(Defval ObjectSyntax) "}" | empty -- uses the NVT ASCII character set Text ::= """" string """" END END SNMP-MIB-Compiler-0.06.orig/mibs/obsoletes/SNMPv2-SMI.rfc19020100644000175000017500000001576507435074233021756 0ustar jdivejdive-- extracted from rfc1902.txt SNMPv2-SMI DEFINITIONS ::= BEGIN -- the path to the root org OBJECT IDENTIFIER ::= { iso 3 } dod OBJECT IDENTIFIER ::= { org 6 } internet OBJECT IDENTIFIER ::= { dod 1 } directory OBJECT IDENTIFIER ::= { internet 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } security OBJECT IDENTIFIER ::= { internet 5 } snmpV2 OBJECT IDENTIFIER ::= { internet 6 } -- transport domains snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 } -- transport proxies snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 } -- module identities snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 } -- definitions for information modules MODULE-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "LAST-UPDATED" value(Update UTCTime) "ORGANIZATION" Text "CONTACT-INFO" Text "DESCRIPTION" Text RevisionPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) RevisionPart ::= Revisions | empty Revisions ::= Revision | Revisions Revision Revision ::= "REVISION" value(Update UTCTime) "DESCRIPTION" Text -- uses the NVT ASCII character set Text ::= """" string """" END OBJECT-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty Text ::= """" string """" END -- names of objects ObjectName ::= OBJECT IDENTIFIER NotificationName ::= OBJECT IDENTIFIER -- syntax of objects ObjectSyntax ::= CHOICE { simple SimpleSyntax, -- note that SEQUENCEs for conceptual tables and -- rows are not mentioned here... application-wide ApplicationSyntax } -- built-in ASN.1 types SimpleSyntax ::= CHOICE { -- INTEGERs with a more restrictive range -- may also be used integer-value -- includes Integer32 INTEGER (-2147483648..2147483647), -- OCTET STRINGs with a more restrictive size -- may also be used string-value OCTET STRING (SIZE (0..65535)), objectID-value OBJECT IDENTIFIER } -- indistinguishable from INTEGER, but never needs more than -- 32-bits for a two's complement representation Integer32 ::= [UNIVERSAL 2] IMPLICIT INTEGER (-2147483648..2147483647) -- application-wide types ApplicationSyntax ::= CHOICE { ipAddress-value IpAddress, counter-value Counter32, timeticks-value TimeTicks, arbitrary-value Opaque, big-counter-value Counter64, unsigned-integer-value -- includes Gauge32 Unsigned32 } -- in network-byte order -- (this is a tagged type for historical reasons) IpAddress ::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) -- this wraps Counter32 ::= [APPLICATION 1] IMPLICIT INTEGER (0..4294967295) -- this doesn't wrap Gauge32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- an unsigned 32-bit quantity -- indistinguishable from Gauge32 Unsigned32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- hundredths of seconds since an epoch TimeTicks ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) -- for backward-compatibility only Opaque ::= [APPLICATION 4] IMPLICIT OCTET STRING -- for counters that wrap in less than one hour with only 32 bits Counter64 ::= [APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615) -- definition for objects OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access "STATUS" Status "DESCRIPTION" Text ReferPart IndexPart DefValPart VALUE NOTATION ::= value(VALUE ObjectName) Syntax ::= type(ObjectSyntax) | "BITS" "{" Kibbles "}" Kibbles ::= Kibble | Kibbles "," Kibble Kibble ::= identifier "(" nonNegativeNumber ")" UnitsPart ::= "UNITS" Text | empty Access ::= "not-accessible" | "accessible-for-notify" | "read-only" | "read-write" | "read-create" Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty IndexPart ::= "INDEX" "{" IndexTypes "}" | "AUGMENTS" "{" Entry "}" | empty IndexTypes ::= IndexType | IndexTypes "," IndexType IndexType ::= "IMPLIED" Index | Index Index ::= -- use the SYNTAX value of the -- correspondent OBJECT-TYPE invocation value(Indexobject ObjectName) Entry ::= -- use the INDEX value of the -- correspondent OBJECT-TYPE invocation value(Entryobject ObjectName) DefValPart ::= "DEFVAL" "{" value(Defval Syntax) "}" | empty -- uses the NVT ASCII character set Text ::= """" string """" END -- definitions for notifications NOTIFICATION-TYPE MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE NotificationName) ObjectsPart ::= "OBJECTS" "{" Objects "}" | empty Objects ::= Object | Objects "," Object Object ::= value(Name ObjectName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- uses the NVT ASCII character set Text ::= """" string """" END -- definitions of administrative identifiers zeroDotZero OBJECT-IDENTITY STATUS current DESCRIPTION "A value used for null identifiers." ::= { 0 0 } END SNMP-MIB-Compiler-0.06.orig/mibs/obsoletes/SNMPv2-TC.rfc19030100644000175000017500000010546607435074233021633 0ustar jdivejdive-- extracted from rfc1903.txt SNMPv2-TC DEFINITIONS ::= BEGIN IMPORTS ObjectSyntax, TimeTicks FROM SNMPv2-SMI; -- definition of textual conventions TEXTUAL-CONVENTION MACRO ::= BEGIN TYPE NOTATION ::= DisplayPart "STATUS" Status "DESCRIPTION" Text ReferPart "SYNTAX" Syntax VALUE NOTATION ::= value(VALUE Syntax) DisplayPart ::= "DISPLAY-HINT" Text | empty Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- uses the NVT ASCII character set Text ::= """" string """" Syntax ::= type(ObjectSyntax) | "BITS" "{" Kibbles "}" Kibbles ::= Kibble | Kibbles "," Kibble Kibble ::= identifier "(" nonNegativeNumber ")" END DisplayString ::= TEXTUAL-CONVENTION DISPLAY-HINT "255a" STATUS current DESCRIPTION "Represents textual information taken from the NVT ASCII character set, as defined in pages 4, 10-11 of RFC 854. To summarize RFC 854, the NVT ASCII repertoire specifies: - the use of character codes 0-127 (decimal) - the graphics characters (32-126) are interpreted as US ASCII - NUL, LF, CR, BEL, BS, HT, VT and FF have the special meanings specified in RFC 854 - the other 25 codes have no standard interpretation - the sequence 'CR LF' means newline - the sequence 'CR NUL' means carriage-return - an 'LF' not preceded by a 'CR' means moving to the same column on the next line. - the sequence 'CR x' for any x other than LF or NUL is illegal. (Note that this also means that a string may end with either 'CR LF' or 'CR NUL', but not with CR.) Any object defined using this syntax may not exceed 255 characters in length." SYNTAX OCTET STRING (SIZE (0..255)) PhysAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents media- or physical-level addresses." SYNTAX OCTET STRING MacAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents an 802 MAC address represented in the `canonical' order defined by IEEE 802.1a, i.e., as if it were transmitted least significant bit first, even though 802.5 (in contrast to other 802.x protocols) requires MAC addresses to be transmitted most significant bit first." SYNTAX OCTET STRING (SIZE (6)) TruthValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a boolean value." SYNTAX INTEGER { true(1), false(2) } TestAndIncr ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents integer-valued information used for atomic operations. When the management protocol is used to specify that an object instance having this syntax is to be modified, the new value supplied via the management protocol must precisely match the value presently held by the instance. If not, the management protocol set operation fails with an error of `inconsistentValue'. Otherwise, if the current value is the maximum value of 2^31-1 (2147483647 decimal), then the value held by the instance is wrapped to zero; otherwise, the value held by the instance is incremented by one. (Note that regardless of whether the management protocol set operation succeeds, the variable- binding in the request and response PDUs are identical.) The value of the ACCESS clause for objects having this syntax is either `read-write' or `read-create'. When an instance of a columnar object having this syntax is created, any value may be supplied via the management protocol. When the network management portion of the system is re- initialized, the value of every object instance having this syntax must either be incremented from its value prior to the re-initialization, or (if the value prior to the re- initialization is unknown) be set to a pseudo-randomly generated value." SYNTAX INTEGER (0..2147483647) AutonomousType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents an independently extensible type identification value. It may, for example, indicate a particular sub-tree with further MIB definitions, or define a particular type of protocol or hardware." SYNTAX OBJECT IDENTIFIER InstancePointer ::= TEXTUAL-CONVENTION STATUS obsolete DESCRIPTION "A pointer to either a specific instance of a MIB object or a conceptual row of a MIB table in the managed device. In the latter case, by convention, it is the name of the particular instance of the first accessible columnar object in the conceptual row. The two uses of this textual convention are replaced by VariablePointer and RowPointer, respectively." SYNTAX OBJECT IDENTIFIER VariablePointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A pointer to a specific object instance. For example, sysContact.0 or ifInOctets.3." SYNTAX OBJECT IDENTIFIER RowPointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a pointer to a conceptual row. The value is the name of the instance of the first accessible columnar object in the conceptual row. For example, ifIndex.3 would point to the 3rd row in the ifTable (note that if ifIndex were not-accessible, then ifDescr.3 would be used instead)." SYNTAX OBJECT IDENTIFIER RowStatus ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The RowStatus textual convention is used to manage the creation and deletion of conceptual rows, and is used as the value of the SYNTAX clause for the status column of a conceptual row (as described in Section 7.7.1 of [2].) The status column has six defined values: - `active', which indicates that the conceptual row is available for use by the managed device; - `notInService', which indicates that the conceptual row exists in the agent, but is unavailable for use by the managed device (see NOTE below); - `notReady', which indicates that the conceptual row exists in the agent, but is missing information necessary in order to be available for use by the managed device; - `createAndGo', which is supplied by a management station wishing to create a new instance of a conceptual row and to have its status automatically set to active, making it available for use by the managed device; - `createAndWait', which is supplied by a management station wishing to create a new instance of a conceptual row (but not make it available for use by the managed device); and, - `destroy', which is supplied by a management station wishing to delete all of the instances associated with an existing conceptual row. Whereas five of the six values (all except `notReady') may be specified in a management protocol set operation, only three values will be returned in response to a management protocol retrieval operation: `notReady', `notInService' or `active'. That is, when queried, an existing conceptual row has only three states: it is either available for use by the managed device (the status column has value `active'); it is not available for use by the managed device, though the agent has sufficient information to make it so (the status column has value `notInService'); or, it is not available for use by the managed device, and an attempt to make it so would fail because the agent has insufficient information (the state column has value `notReady'). NOTE WELL This textual convention may be used for a MIB table, irrespective of whether the values of that table's conceptual rows are able to be modified while it is active, or whether its conceptual rows must be taken out of service in order to be modified. That is, it is the responsibility of the DESCRIPTION clause of the status column to specify whether the status column must not be `active' in order for the value of some other column of the same conceptual row to be modified. If such a specification is made, affected columns may be changed by an SNMP set PDU if the RowStatus would not be equal to `active' either immediately before or after processing the PDU. In other words, if the PDU also contained a varbind that would change the RowStatus value, the column in question may be changed if the RowStatus was not equal to `active' as the PDU was received, or if the varbind sets the status to a value other than 'active'. Also note that whenever any elements of a row exist, the RowStatus column must also exist. To summarize the effect of having a conceptual row with a status column having a SYNTAX clause value of RowStatus, consider the following state diagram: STATE +--------------+-----------+-------------+------------- | A | B | C | D | |status col.|status column| |status column | is | is |status column ACTION |does not exist| notReady | notInService| is active --------------+--------------+-----------+-------------+------------- set status |noError ->D|inconsist- |inconsistent-|inconsistent- column to | or | entValue| Value| Value createAndGo |inconsistent- | | | | Value| | | --------------+--------------+-----------+-------------+------------- set status |noError see 1|inconsist- |inconsistent-|inconsistent- column to | or | entValue| Value| Value createAndWait |wrongValue | | | --------------+--------------+-----------+-------------+------------- set status |inconsistent- |inconsist- |noError |noError column to | Value| entValue| | active | | | | | | or | | | | | | | |see 2 ->D| ->D| ->D --------------+--------------+-----------+-------------+------------- set status |inconsistent- |inconsist- |noError |noError ->C column to | Value| entValue| | notInService | | | | | | or | | or | | | | | |see 3 ->C| ->C|wrongValue --------------+--------------+-----------+-------------+------------- set status |noError |noError |noError |noError column to | | | | destroy | ->A| ->A| ->A| ->A --------------+--------------+-----------+-------------+------------- set any other |see 4 |noError |noError |see 5 column to some| | | | value | | see 1| ->C| ->D --------------+--------------+-----------+-------------+------------- (1) goto B or C, depending on information available to the agent. (2) if other variable bindings included in the same PDU, provide values for all columns which are missing but required, then return noError and goto D. (3) if other variable bindings included in the same PDU, provide values for all columns which are missing but required, then return noError and goto C. (4) at the discretion of the agent, the return value may be either: inconsistentName: because the agent does not choose to create such an instance when the corresponding RowStatus instance does not exist, or inconsistentValue: if the supplied value is inconsistent with the state of some other MIB object's value, or noError: because the agent chooses to create the instance. If noError is returned, then the instance of the status column must also be created, and the new state is B or C, depending on the information available to the agent. If inconsistentName or inconsistentValue is returned, the row remains in state A. (5) depending on the MIB definition for the column/table, either noError or inconsistentValue may be returned. NOTE: Other processing of the set request may result in a response other than noError being returned, e.g., wrongValue, noCreation, etc. Conceptual Row Creation There are four potential interactions when creating a conceptual row: selecting an instance-identifier which is not in use; creating the conceptual row; initializing any objects for which the agent does not supply a default; and, making the conceptual row available for use by the managed device. Interaction 1: Selecting an Instance-Identifier The algorithm used to select an instance-identifier varies for each conceptual row. In some cases, the instance- identifier is semantically significant, e.g., the destination address of a route, and a management station selects the instance-identifier according to the semantics. In other cases, the instance-identifier is used solely to distinguish conceptual rows, and a management station without specific knowledge of the conceptual row might examine the instances present in order to determine an unused instance-identifier. (This approach may be used, but it is often highly sub-optimal; however, it is also a questionable practice for a naive management station to attempt conceptual row creation.) Alternately, the MIB module which defines the conceptual row might provide one or more objects which provide assistance in determining an unused instance-identifier. For example, if the conceptual row is indexed by an integer-value, then an object having an integer-valued SYNTAX clause might be defined for such a purpose, allowing a management station to issue a management protocol retrieval operation. In order to avoid unnecessary collisions between competing management stations, `adjacent' retrievals of this object should be different. Finally, the management station could select a pseudo-random number to use as the index. In the event that this index was already in use and an inconsistentValue was returned in response to the management protocol set operation, the management station should simply select a new pseudo-random number and retry the operation. A MIB designer should choose between the two latter algorithms based on the size of the table (and therefore the efficiency of each algorithm). For tables in which a large number of entries are expected, it is recommended that a MIB object be defined that returns an acceptable index for creation. For tables with small numbers of entries, it is recommended that the latter pseudo-random index mechanism be used. Interaction 2: Creating the Conceptual Row Once an unused instance-identifier has been selected, the management station determines if it wishes to create and activate the conceptual row in one transaction or in a negotiated set of interactions. Interaction 2a: Creating and Activating the Conceptual Row The management station must first determine the column requirements, i.e., it must determine those columns for which it must or must not provide values. Depending on the complexity of the table and the management station's knowledge of the agent's capabilities, this determination can be made locally by the management station. Alternately, the management station issues a management protocol get operation to examine all columns in the conceptual row that it wishes to create. In response, for each column, there are three possible outcomes: - a value is returned, indicating that some other management station has already created this conceptual row. We return to interaction 1. - the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it should supply a value for this column when the conceptual row is to be created. - the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column. Once the column requirements have been determined, a management protocol set operation is accordingly issued. This operation also sets the new instance of the status column to `createAndGo'. When the agent processes the set operation, it verifies that it has sufficient information to make the conceptual row available for use by the managed device. The information available to the agent is provided by two sources: the management protocol set operation which creates the conceptual row, and, implementation-specific defaults supplied by the agent (note that an agent must provide implementation-specific defaults for at least those objects which it implements as read-only). If there is sufficient information available, then the conceptual row is created, a `noError' response is returned, the status column is set to `active', and no further interactions are necessary (i.e., interactions 3 and 4 are skipped). If there is insufficient information, then the conceptual row is not created, and the set operation fails with an error of `inconsistentValue'. On this error, the management station can issue a management protocol retrieval operation to determine if this was because it failed to specify a value for a required column, or, because the selected instance of the status column already existed. In the latter case, we return to interaction 1. In the former case, the management station can re-issue the set operation with the additional information, or begin interaction 2 again using `createAndWait' in order to negotiate creation of the conceptual row. NOTE WELL Regardless of the method used to determine the column requirements, it is possible that the management station might deem a column necessary when, in fact, the agent will not allow that particular columnar instance to be created or written. In this case, the management protocol set operation will fail with an error such as `noCreation' or `notWritable'. In this case, the management station decides whether it needs to be able to set a value for that particular columnar instance. If not, the management station re-issues the management protocol set operation, but without setting a value for that particular columnar instance; otherwise, the management station aborts the row creation algorithm. Interaction 2b: Negotiating the Creation of the Conceptual Row The management station issues a management protocol set operation which sets the desired instance of the status column to `createAndWait'. If the agent is unwilling to process a request of this sort, the set operation fails with an error of `wrongValue'. (As a consequence, such an agent must be prepared to accept a single management protocol set operation, i.e., interaction 2a above, containing all of the columns indicated by its column requirements.) Otherwise, the conceptual row is created, a `noError' response is returned, and the status column is immediately set to either `notInService' or `notReady', depending on whether it has sufficient information to make the conceptual row available for use by the managed device. If there is sufficient information available, then the status column is set to `notInService'; otherwise, if there is insufficient information, then the status column is set to `notReady'. Regardless, we proceed to interaction 3. Interaction 3: Initializing non-defaulted Objects The management station must now determine the column requirements. It issues a management protocol get operation to examine all columns in the created conceptual row. In the response, for each column, there are three possible outcomes: - a value is returned, indicating that the agent implements the object-type associated with this column and had sufficient information to provide a value. For those columns to which the agent provides read-create access (and for which the agent allows their values to be changed after their creation), a value return tells the management station that it may issue additional management protocol set operations, if it desires, in order to change the value associated with this column. - the exception `noSuchInstance' is returned, indicating that the agent implements the object-type associated with this column, and that this column in at least one conceptual row would be accessible in the MIB view used by the retrieval were it to exist. However, the agent does not have sufficient information to provide a value, and until a value is provided, the conceptual row may not be made available for use by the managed device. For those columns to which the agent provides read-create access, the `noSuchInstance' exception tells the management station that it must issue additional management protocol set operations, in order to provide a value associated with this column. - the exception `noSuchObject' is returned, indicating that the agent does not implement the object-type associated with this column or that there is no conceptual row for which this column would be accessible in the MIB view used by the retrieval. As such, the management station can not issue any management protocol set operations to create an instance of this column. If the value associated with the status column is `notReady', then the management station must first deal with all `noSuchInstance' columns, if any. Having done so, the value of the status column becomes `notInService', and we proceed to interaction 4. Interaction 4: Making the Conceptual Row Available Once the management station is satisfied with the values associated with the columns of the conceptual row, it issues a management protocol set operation to set the status column to `active'. If the agent has sufficient information to make the conceptual row available for use by the managed device, the management protocol set operation succeeds (a `noError' response is returned). Otherwise, the management protocol set operation fails with an error of `inconsistentValue'. NOTE WELL A conceptual row having a status column with value `notInService' or `notReady' is unavailable to the managed device. As such, it is possible for the managed device to create its own instances during the time between the management protocol set operation which sets the status column to `createAndWait' and the management protocol set operation which sets the status column to `active'. In this case, when the management protocol set operation is issued to set the status column to `active', the values held in the agent supersede those used by the managed device. If the management station is prevented from setting the status column to `active' (e.g., due to management station or network failure) the conceptual row will be left in the `notInService' or `notReady' state, consuming resources indefinitely. The agent must detect conceptual rows that have been in either state for an abnormally long period of time and remove them. It is the responsibility of the DESCRIPTION clause of the status column to indicate what an abnormally long period of time would be. This period of time should be long enough to allow for human response time (including `think time') between the creation of the conceptual row and the setting of the status to `active'. In the absense of such information in the DESCRIPTION clause, it is suggested that this period be approximately 5 minutes in length. This removal action applies not only to newly-created rows, but also to previously active rows which are set to, and left in, the notInService state for a prolonged period exceeding that which is considered normal for such a conceptual row. Conceptual Row Suspension When a conceptual row is `active', the management station may issue a management protocol set operation which sets the instance of the status column to `notInService'. If the agent is unwilling to do so, the set operation fails with an error of `wrongValue'. Otherwise, the conceptual row is taken out of service, and a `noError' response is returned. It is the responsibility of the DESCRIPTION clause of the status column to indicate under what circumstances the status column should be taken out of service (e.g., in order for the value of some other column of the same conceptual row to be modified). Conceptual Row Deletion For deletion of conceptual rows, a management protocol set operation is issued which sets the instance of the status column to `destroy'. This request may be made regardless of the current value of the status column (e.g., it is possible to delete conceptual rows which are either `notReady', `notInService' or `active'.) If the operation succeeds, then all instances associated with the conceptual row are immediately removed." SYNTAX INTEGER { -- the following two values are states: -- these values may be read or written active(1), notInService(2), -- the following value is a state: -- this value may be read, but not written notReady(3), -- the following three values are -- actions: these values may be written, -- but are never read createAndGo(4), createAndWait(5), destroy(6) } TimeStamp ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The value of the sysUpTime object at which a specific occurrence happened. The specific occurrence must be defined in the description of any object defined using this type." SYNTAX TimeTicks TimeInterval ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A period of time, measured in units of 0.01 seconds." SYNTAX INTEGER (0..2147483647) DateAndTime ::= TEXTUAL-CONVENTION DISPLAY-HINT "2d-1d-1d,1d:1d:1d.1d,1a1d:1d" STATUS current DESCRIPTION "A date-time specification. field octets contents range ----- ------ -------- ----- 1 1-2 year 0..65536 2 3 month 1..12 3 4 day 1..31 4 5 hour 0..23 5 6 minutes 0..59 6 7 seconds 0..60 (use 60 for leap-second) 7 8 deci-seconds 0..9 8 9 direction from UTC '+' / '-' 9 10 hours from UTC 0..11 10 11 minutes from UTC 0..59 For example, Tuesday May 26, 1992 at 1:30:15 PM EDT would be displayed as: 1992-5-26,13:30:15.0,-4:0 Note that if only local time is known, then timezone information (fields 8-10) is not present." SYNTAX OCTET STRING (SIZE (8 | 11)) StorageType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Describes the memory realization of a conceptual row. A row which is volatile(2) is lost upon reboot. A row which is either nonVolatile(3), permanent(4) or readOnly(5), is backed up by stable storage. A row which is permanent(4) can be changed but not deleted. A row which is readOnly(5) cannot be changed nor deleted. If the value of an object with this syntax is either permanent(4) or readOnly(5), it cannot be modified. Conversely, if the value is either other(1), volatile(2) or nonVolatile(3), it cannot be modified to be permanent(4) or readOnly(5). Every usage of this textual convention is required to specify the columnar objects which a permanent(4) row must at a minimum allow to be writable." SYNTAX INTEGER { other(1), -- eh? volatile(2), -- e.g., in RAM nonVolatile(3), -- e.g., in NVRAM permanent(4), -- e.g., partially in ROM readOnly(5) -- e.g., completely in ROM } TDomain ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Denotes a kind of transport service. Some possible values, such as snmpUDPDomain, are defined in 'Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)'." SYNTAX OBJECT IDENTIFIER TAddress ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Denotes a transport service address. For snmpUDPDomain, a TAddress is 6 octets long, the initial 4 octets containing the IP-address in network-byte order and the last 2 containing the UDP port in network-byte order. Consult 'Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)' for further information on snmpUDPDomain." SYNTAX OCTET STRING (SIZE (1..255)) END SNMP-MIB-Compiler-0.06.orig/mibs/RFC1158-MIB0100644000175000017500000014637507435074233016557 0ustar jdivejdive-- extracted from rfc1158.txt RFC1158-MIB DEFINITIONS ::= BEGIN IMPORTS mgmt, OBJECT-TYPE, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks FROM RFC1155-SMI; DisplayString ::= OCTET STRING mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- MIB-II -- (same prefix as MIB-I) system OBJECT IDENTIFIER ::= { mib-2 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } at OBJECT IDENTIFIER ::= { mib-2 3 } ip OBJECT IDENTIFIER ::= { mib-2 4 } icmp OBJECT IDENTIFIER ::= { mib-2 5 } tcp OBJECT IDENTIFIER ::= { mib-2 6 } udp OBJECT IDENTIFIER ::= { mib-2 7 } egp OBJECT IDENTIFIER ::= { mib-2 8 } -- cmot OBJECT IDENTIFIER ::= { mib-2 9 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } snmp OBJECT IDENTIFIER ::= { mib-2 11 } -- object types -- the System group sysDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory ::= { system 1 } sysObjectID OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory ::= { system 2 } sysUpTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory ::= { system 3 } sysContact OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write STATUS mandatory ::= { system 4 } sysName OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-write STATUS mandatory ::= { system 5 } sysLocation OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory ::= { system 6 } sysServices OBJECT-TYPE SYNTAX INTEGER (0..127) ACCESS read-only STATUS mandatory ::= { system 7 } -- the Interfaces group ifNumber OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { interfaces 1 } -- the Interfaces table ifTable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry ACCESS read-only STATUS mandatory ::= { interfaces 2 } ifEntry OBJECT-TYPE SYNTAX IfEntry ACCESS read-only STATUS mandatory ::= { ifTable 1 } IfEntry ::= SEQUENCE { ifIndex INTEGER, ifDescr DisplayString, ifType INTEGER, ifMtu INTEGER, ifSpeed Gauge, ifPhysAddress OCTET STRING, ifAdminStatus INTEGER, ifOperStatus INTEGER, ifLastChange TimeTicks, ifInOctets Counter, ifInUcastPkts Counter, ifInNUcastPkts Counter, ifInDiscards Counter, ifInErrors Counter, ifInUnknownProtos Counter, ifOutOctets Counter, ifOutUcastPkts Counter, ifOutNUcastPkts Counter, ifOutDiscards Counter, ifOutErrors Counter, ifOutQLen Gauge, ifSpecific OBJECT IDENTIFIER } ifIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ifEntry 1 } ifDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) ACCESS read-only STATUS mandatory ::= { ifEntry 2 } ifType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the -- following regular1822(2), hdh1822(3), ddn-x25(4), rfc877-x25(5), ethernet-csmacd(6), iso88023-csmacd(7), iso88024-tokenBus(8), iso88025-tokenRing(9), iso88026-man(10), starLan(11), proteon-10Mbit(12), proteon-80Mbit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), t1-carrier(18), cept(19), -- european --equivalent of T-1 basicISDN(20), primaryISDN(21), -- proprietary -- serial propPointToPointSerial(22), terminalServer-asyncPort(23), softwareLoopback(24), eon(25), -- CLNP over IP ethernet-3Mbit(26), nsip(27), -- XNS over IP slip(28) -- generic SLIP } ACCESS read-only STATUS mandatory ::= { ifEntry 3 } ifMtu OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ifEntry 4 } ifSpeed OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { ifEntry 5 } ifPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory ::= { ifEntry 6 } ifAdminStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-write STATUS mandatory ::= { ifEntry 7 } ifOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } ACCESS read-only STATUS mandatory ::= { ifEntry 8 } ifLastChange OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory ::= { ifEntry 9 } ifInOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 10 } ifInUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 11 } ifInNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 12 } ifInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 13 } ifInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 14 } ifInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 15 } ifOutOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 16 } ifOutUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 17 } ifOutNUcastPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 18 } ifOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 19 } ifOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ifEntry 20 } ifOutQLen OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { ifEntry 21 } ifSpecific OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory ::= { ifEntry 22 } nullSpecific OBJECT IDENTIFIER ::= { 0 0 } -- the Address Translation group (deprecated) atTable OBJECT-TYPE SYNTAX SEQUENCE OF AtEntry ACCESS read-write STATUS deprecated ::= { at 1 } atEntry OBJECT-TYPE SYNTAX AtEntry ACCESS read-write STATUS deprecated ::= { atTable 1 } AtEntry ::= SEQUENCE { atIfIndex INTEGER, atPhysAddress OCTET STRING, atNetAddress NetworkAddress } atIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS deprecated ::= { atEntry 1 } atPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS deprecated ::= { atEntry 2 } atNetAddress OBJECT-TYPE SYNTAX NetworkAddress ACCESS read-write STATUS deprecated ::= { atEntry 3 } -- the IP group ipForwarding OBJECT-TYPE SYNTAX INTEGER { gateway(1), -- entity forwards -- datagrams host(2) -- entity does NOT -- forward datagrams } ACCESS read-write STATUS mandatory ::= { ip 1 } ipDefaultTTL OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ip 2 } ipInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 3 } ipInHdrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 4 } ipInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 5 } ipForwDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 6 } ipInUnknownProtos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 7 } ipInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 8 } ipInDelivers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 9 } ipOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 10 } ipOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 11 } ipOutNoRoutes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 12 } ipReasmTimeout OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ip 13 } ipReasmReqds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 14 } ipReasmOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 15 } ipReasmFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 16 } ipFragOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 17 } ipFragFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 18 } ipFragCreates OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { ip 19 } -- the IP Interface table ipAddrTable OBJECT-TYPE SYNTAX SEQUENCE OF IpAddrEntry ACCESS read-only STATUS mandatory ::= { ip 20 } ipAddrEntry OBJECT-TYPE SYNTAX IpAddrEntry ACCESS read-only STATUS mandatory ::= { ipAddrTable 1 } IpAddrEntry ::= SEQUENCE { ipAdEntAddr IpAddress, ipAdEntIfIndex INTEGER, ipAdEntNetMask IpAddress, ipAdEntBcastAddr INTEGER, ipAdEntReasmMaxSize INTEGER (0..65535) } ipAdEntAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { ipAddrEntry 1 } ipAdEntIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ipAddrEntry 2 } ipAdEntNetMask OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { ipAddrEntry 3 } ipAdEntBcastAddr OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { ipAddrEntry 4 } ipAdEntReasmMaxSiz OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { ipAddrEntry 5 } -- the IP Routing table ipRoutingTable OBJECT-TYPE SYNTAX SEQUENCE OF IpRouteEntry ACCESS read-write STATUS mandatory ::= { ip 21 } ipRouteEntry OBJECT-TYPE SYNTAX IpRouteEntry ACCESS read-write STATUS mandatory ::= { ipRoutingTable 1 } IpRouteEntry ::= SEQUENCE { ipRouteDest IpAddress, ipRouteIfIndex INTEGER, ipRouteMetric1 INTEGER, ipRouteMetric2 INTEGER, ipRouteMetric3 INTEGER, ipRouteMetric4 INTEGER, ipRouteNextHop IpAddress, ipRouteType INTEGER, ipRouteProto INTEGER, ipRouteAge INTEGER, ipRouteMask IpAddress } ipRouteDest OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipRouteEntry 1 } ipRouteIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 2 } ipRouteMetric1 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 3 } ipRouteMetric2 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 4 } ipRouteMetric3 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 5 } ipRouteMetric4 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 6 } ipRouteNextHop OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipRouteEntry 7 } ipRouteType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated route -- route to directly direct(3), -- connected -- (sub-)network -- route to a non-local remote(4) -- host/network/ -- sub-network } ACCESS read-write STATUS mandatory ::= { ipRouteEntry 8 } ipRouteProto OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following -- non-protocol -- information -- e.g., manually local(2), -- configured entries -- set via a network netmgmt(3), -- management protocol -- obtained via ICMP, icmp(4), -- e.g., Redirect -- the following are -- gateway routing -- protocols egp(5), ggp(6), hello(7), rip(8), is-is(9), es-is(10), ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14) } ACCESS read-only STATUS mandatory ::= { ipRouteEntry 9 } ipRouteAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipRouteEntry 10 } ipRouteMask OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipRouteEntry 11 } -- the IP Address Translation tables ipNetToMediaTable OBJECT-TYPE SYNTAX SEQUENCE OF IpNetToMediaEntry ACCESS read-write STATUS mandatory ::= { ip 22 } ipNetToMediaEntry OBJECT-TYPE SYNTAX IpNetToMediaEntry ACCESS read-write STATUS mandatory ::= { ipNetToMediaTable 1 } IpNetToMediaEntry ::= SEQUENCE { ipNetToMediaIfIndex INTEGER, ipNetToMediaPhysAddress OCTET STRING, ipNetToMediaNetAddress IpAddress, ipNetoToMediaType INTEGER } ipNetToMediaIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { ipNetToMediaEntry 1 } ipNetToMediaPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory ::= { ipNetToMediaEntry 2 } ipNetToMediaNetAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory ::= { ipNetToMediaEntry 3 } ipNetToMediaType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following invalid(2), -- an invalidated mapping dynamic(3), -- connected (sub-)network static(4) } ACCESS read-write STATUS mandatory ::= { ipNetToMediaEntry 4 } -- the ICMP group icmpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 1 } icmpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 2 } icmpInDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 3 } icmpInTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 4 } icmpInParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 5 } icmpInSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 6 } icmpInRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 7 } icmpInEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 8 } icmpInEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 9 } icmpInTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 10 } icmpInTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 11 } icmpInAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 12 } icmpInAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 13 } icmpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 14 } icmpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 15 } icmpOutDestUnreachs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 16 } icmpOutTimeExcds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 17 } icmpOutParmProbs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 18 } icmpOutSrcQuenchs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 19 } icmpOutRedirects OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 20 } icmpOutEchos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 21 } icmpOutEchoReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 22 } icmpOutTimestamps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 23 } icmpOutTimestampReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 24 } icmpOutAddrMasks OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 25 } icmpOutAddrMaskReps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { icmp 26 } -- the TCP group tcpRtoAlgorithm OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following constant(2), -- a constant rto rsre(3), -- MIL-STD-1778, -- Appendix B vanj(4) -- Van Jacobson's -- algorithm } ACCESS read-only STATUS mandatory ::= { tcp 1 } tcpRtoMin OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 2 } tcpRtoMax OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 3 } tcpMaxConn OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { tcp 4 } tcpActiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 5 } tcpPassiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 6 } tcpAttemptFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 7 } tcpEstabResets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 8 } tcpCurrEstab OBJECT-TYPE SYNTAX Gauge ACCESS read-only STATUS mandatory ::= { tcp 9 } tcpInSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 10 } tcpOutSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 11 } tcpRetransSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 12 } -- the TCP connections table tcpConnTable OBJECT-TYPE SYNTAX SEQUENCE OF TcpConnEntry ACCESS read-only STATUS mandatory ::= { tcp 13 } tcpConnEntry OBJECT-TYPE SYNTAX TcpConnEntry ACCESS read-only STATUS mandatory ::= { tcpConnTable 1 } TcpConnEntry ::= SEQUENCE { tcpConnState INTEGER, tcpConnLocalAddress IpAddress, tcpConnLocalPort INTEGER (0..65535), tcpConnRemAddress IpAddress, tcpConnRemPort INTEGER (0..65535) } tcpConnState OBJECT-TYPE SYNTAX INTEGER { closed(1), listen(2), synSent(3), synReceived(4), established(5), finWait1(6), finWait2(7), closeWait(8), lastAck(9), closing(10), timeWait(11) } ACCESS read-only STATUS mandatory ::= { tcpConnEntry 1 } tcpConnLocalAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { tcpConnEntry 2 } tcpConnLocalPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { tcpConnEntry 3 } tcpConnRemAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { tcpConnEntry 4 } tcpConnRemPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { tcpConnEntry 5 } -- additional TCP variables tcpInErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 14 } tcpOutRsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { tcp 15 } -- the UDP group udpInDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 1 } udpNoPorts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 2 } udpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 3 } udpOutDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { udp 4 } -- the UDP listener table udpTable OBJECT-TYPE SYNTAX SEQUENCE OF UdpEntry ACCESS read-only STATUS mandatory ::= { udp 5 } udpEntry OBJECT-TYPE SYNTAX UdpEntry ACCESS read-only STATUS mandatory ::= { udpTable 1 } UdpEntry ::= SEQUENCE { udpLocalAddress IpAddress, udpLocalPort INTEGER (0..65535) } udpLocalAddress OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { udpEntry 1 } udpLocalPort OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { udpEntry 2 } -- the EGP group egpInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 1 } egpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 2 } egpOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 3 } egpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egp 4 } -- the EGP Neighbor table egpNeighTable OBJECT-TYPE SYNTAX SEQUENCE OF EgpNeighEntry ACCESS read-only STATUS mandatory ::= { egp 5 } egpNeighEntry OBJECT-TYPE SYNTAX EgpNeighEntry ACCESS read-only STATUS mandatory ::= { egpNeighTable 1 } EgpNeighEntry ::= SEQUENCE { egpNeighState INTEGER, egpNeighAddr IpAddress, egpNeighAs INTEGER, egpNeighInMsgs Counter, egpNeighInErrs Counter, egpNeighOutMsgs Counter, egpNeighOutErrs Counter, egpNeighInErrMsgs Counter, egpNeighOutErrMsgs Counter, egpNeighStateUps Counter, egpNeighStateDowns Counter, egpNeighIntervalHello INTEGER, egpNeighIntervalPoll INTEGER, egpNeighMode INTEGER, egpNeighEventTrigger INTEGER } egpNeighState OBJECT-TYPE SYNTAX INTEGER { idle(1), acquisition(2), down(3), up(4), cease(5) } ACCESS read-only STATUS mandatory ::= { egpNeighEntry 1 } egpNeighAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory ::= { egpNeighEntry 2 } egpNeighAs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { egpNeighEntry 3 } egpNeighInMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 4 } egpNeighInErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 5 } egpNeighOutMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 6 } egpNeighOutErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 7 } egpNeighInErrMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 8 } egpNeighOutErrMsgs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 9 } egpNeighStateUps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 10 } egpNeighStateDowns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { egpNeighEntry 11 } egpNeighIntervalHello OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { egpNeighEntry 12 } egpNeighIntervalPoll OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { egpNeighEntry 13 } egpNeighMode OBJECT-TYPE SYNTAX INTEGER { active(1), passive(2) } ACCESS read-only STATUS mandatory ::= { egpNeighEntry 14 } egpNeighEventTrigger OBJECT-TYPE SYNTAX INTEGER { start(1), stop(2) } ACCESS read-write STATUS mandatory ::= { egpNeighEntry 15 } -- additional EGP variables egpAs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { egp 6 } -- the Transmission group (empty at present) -- the SNMP group snmpInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 1 } snmpOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 2 } snmpInBadVersions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 3 } snmpInBadCommunityNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 4 } snmpInBadCommunityUses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 5 } snmpInASNParseErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 6 } snmpInBadTypes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 7 } snmpInTooBigs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 8 } snmpInNoSuchNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 9 } snmpInBadValues OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 10 } snmpInReadOnlys OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 11 } snmpInGenErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 12 } snmpInTotalReqVars OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 13 } snmpInTotalSetVars OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 14 } snmpInGetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 15 } snmpInGetNexts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 16 } snmpInSetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 17 } snmpInGetResponses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 18 } snmpInTraps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 19 } snmpOutTooBigs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 20 } snmpOutNoSuchNames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 21 } snmpOutBadValues OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 22 } snmpOutReadOnlys OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 23 } snmpOutGenErrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 24 } snmpOutGetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 25 } snmpOutGetNexts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 26 } snmpOutSetRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 27 } snmpOutGetResponses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 28 } snmpOutTraps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { snmp 29 } snmpEnableAuthTraps OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } ACCESS read-write STATUS mandatory ::= { snmp 30 } END SNMP-MIB-Compiler-0.06.orig/mibs/RFC-12150100644000175000017500000000730207435074233016203 0ustar jdivejdive-- extracted from rfc1215.txt RFC-1215 DEFINITIONS ::= BEGIN IMPORTS ObjectName FROM RFC1155-SMI; TRAP-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "ENTERPRISE" value (enterprise OBJECT IDENTIFIER) VarPart DescrPart ReferPart VALUE NOTATION ::= value (VALUE INTEGER) VarPart ::= "VARIABLES" "{" VarTypes "}" | empty VarTypes ::= VarType | VarTypes "," VarType VarType ::= value (vartype ObjectName) DescrPart ::= "DESCRIPTION" value (description DisplayString) | empty ReferPart ::= "REFERENCE" value (reference DisplayString) | empty END coldStart TRAP-TYPE ENTERPRISE snmp DESCRIPTION "A coldStart trap signifies that the sending protocol entity is reinitializing itself such that the agent's configuration or the rotocol entity implementation may be altered." ::= 0 warmStart TRAP-TYPE ENTERPRISE snmp DESCRIPTION "A warmStart trap signifies that the sending protocol entity is reinitializing itself such that neither the agent configuration nor the protocol entity implementation is altered." ::= 1 linkDown TRAP-TYPE ENTERPRISE snmp VARIABLES { ifIndex } DESCRIPTION "A linkDown trap signifies that the sending protocol entity recognizes a failure in one of the communication links represented in the agent's configuration." ::= 2 linkUp TRAP-TYPE ENTERPRISE snmp VARIABLES { ifIndex } DESCRIPTION "A linkUp trap signifies that the sending protocol entity recognizes that one of the communication links represented in the agent's configuration has come up." ::= 3 authenticationFailure TRAP-TYPE ENTERPRISE snmp DESCRIPTION "An authenticationFailure trap signifies that the sending protocol entity is the addressee of a protocol message that is not properly authenticated. While implementations of the SNMP must be capable of generating this trap, they must also be capable of suppressing the emission of such traps via an implementation- specific mechanism." ::= 4 egpNeighborLoss TRAP-TYPE ENTERPRISE snmp VARIABLES { egpNeighAddr } DESCRIPTION "An egpNeighborLoss trap signifies that an EGP neighbor for whom the sending protocol entity was an EGP peer has been marked down and the peer relationship no longer obtains." ::= 5 END SNMP-MIB-Compiler-0.06.orig/mibs/BRIDGE-MIB0100644000175000017500000013317707435074233016556 0ustar jdivejdive-- extracted from rfc1493.txt BRIDGE-MIB DEFINITIONS ::= BEGIN IMPORTS Counter, TimeTicks FROM RFC1155-SMI mib-2 FROM RFC1213-MIB OBJECT-TYPE FROM RFC-1212 TRAP-TYPE FROM RFC-1215; -- All representations of MAC addresses in this MIB Module -- use, as a textual convention (i.e. this convention does -- not affect their encoding), the data type: MacAddress ::= OCTET STRING (SIZE (6)) -- a 6 octet address -- in the -- "canonical" -- order -- defined by IEEE 802.1a, i.e., as if it were transmitted -- least significant bit first, even though 802.5 (in -- contrast to other n802.x protocols) requires MAC -- addresses to be transmitted most significant bit first. -- -- 16-bit addresses, if needed, are represented by setting -- their upper 4 octets to all 0's, i.e., AAFF would be -- represented as 00000000AAFF. -- Similarly, all representations of Bridge-Id in this MIB -- Module use, as a textual convention (i.e. this -- convention does not affect their encoding), the data -- type: BridgeId ::= OCTET STRING (SIZE (8)) -- the -- Bridge-Identifier -- as used in the -- Spanning Tree -- Protocol to uniquely identify a bridge. Its first two -- octets (in network byte order) contain a priority -- value and its last 6 octets contain the MAC address -- used to refer to a bridge in a unique fashion -- (typically, the numerically smallest MAC address -- of all ports on the bridge). -- Several objects in this MIB module represent values of -- timers used by the Spanning Tree Protocol. In this -- MIB, these timers have values in units of hundreths of -- a second (i.e. 1/100 secs). -- These timers, when stored in a Spanning Tree Protocol's -- BPDU, are in units of 1/256 seconds. Note, however, -- that 802.1D-1990 specifies a settable granularity of -- no more than 1 second for these timers. To avoid -- ambiguity, a data type is defined here as a textual -- convention and all representation of these timers -- in this MIB module are defined using this data type. An -- algorithm is also defined for converting between the -- different units, to ensure a timer's value is not -- distorted by multiple conversions. -- The data type is: Timeout ::= INTEGER -- a STP timer in units of 1/100 seconds -- To convert a Timeout value into a value in units of -- 1/256 seconds, the following algorithm should be used: -- -- b = floor( (n * 256) / 100) -- -- where: -- floor = quotient [ignore remainder] -- n is the value in 1/100 second units -- b is the value in 1/256 second units -- -- To convert the value from 1/256 second units back to -- 1/100 seconds, the following algorithm should be used: -- -- n = ceiling( (b * 100) / 256) -- -- where: -- ceiling = quotient [if remainder is 0], or -- quotient + 1 [if remainder is non-zero] -- n is the value in 1/100 second units -- b is the value in 1/256 second units -- -- Note: it is important that the arithmetic operations are -- done in the order specified (i.e., multiply first, divide -- second). dot1dBridge OBJECT IDENTIFIER ::= { mib-2 17 } -- groups in the Bridge MIB dot1dBase OBJECT IDENTIFIER ::= { dot1dBridge 1 } dot1dStp OBJECT IDENTIFIER ::= { dot1dBridge 2 } dot1dSr OBJECT IDENTIFIER ::= { dot1dBridge 3 } -- separately documented dot1dTp OBJECT IDENTIFIER ::= { dot1dBridge 4 } dot1dStatic OBJECT IDENTIFIER ::= { dot1dBridge 5 } -- the dot1dBase group -- Implementation of the dot1dBase group is mandatory for all -- bridges. dot1dBaseBridgeAddress OBJECT-TYPE SYNTAX MacAddress ACCESS read-only STATUS mandatory DESCRIPTION "The MAC address used by this bridge when it must be referred to in a unique fashion. It is recommended that this be the numerically smallest MAC address of all ports that belong to this bridge. However it is only required to be unique. When concatenated with dot1dStpPriority a unique BridgeIdentifier is formed which is used in the Spanning Tree Protocol." REFERENCE "IEEE 802.1D-1990: Sections 6.4.1.1.3 and 3.12.5" ::= { dot1dBase 1 } dot1dBaseNumPorts OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of ports controlled by this bridging entity." REFERENCE "IEEE 802.1D-1990: Section 6.4.1.1.3" ::= { dot1dBase 2 } dot1dBaseType OBJECT-TYPE SYNTAX INTEGER { unknown(1), transparent-only(2), sourceroute-only(3), srt(4) } ACCESS read-only STATUS mandatory DESCRIPTION "Indicates what type of bridging this bridge can perform. If a bridge is actually performing a certain type of bridging this will be indicated by entries in the port table for the given type." ::= { dot1dBase 3 } -- The Generic Bridge Port Table dot1dBasePortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dBasePortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table that contains generic information about every port that is associated with this bridge. Transparent, source-route, and srt ports are included." ::= { dot1dBase 4 } dot1dBasePortEntry OBJECT-TYPE SYNTAX Dot1dBasePortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of information for each port of the bridge." REFERENCE "IEEE 802.1D-1990: Section 6.4.2, 6.6.1" INDEX { dot1dBasePort } ::= { dot1dBasePortTable 1 } Dot1dBasePortEntry ::= SEQUENCE { dot1dBasePort INTEGER, dot1dBasePortIfIndex INTEGER, dot1dBasePortCircuit OBJECT IDENTIFIER, dot1dBasePortDelayExceededDiscards Counter, dot1dBasePortMtuExceededDiscards Counter } dot1dBasePort OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The port number of the port for which this entry contains bridge management information." ::= { dot1dBasePortEntry 1 } dot1dBasePortIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The value of the instance of the ifIndex object, defined in MIB-II, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 } dot1dBasePortCircuit OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "For a port which (potentially) has the same value of dot1dBasePortIfIndex as another port on the same bridge, this object contains the name of an object instance unique to this port. For example, in the case where multiple ports correspond one- to-one with multiple X.25 virtual circuits, this value might identify an (e.g., the first) object instance associated with the X.25 virtual circuit corresponding to this port. For a port which has a unique value of dot1dBasePortIfIndex, this object can have the value { 0 0 }." ::= { dot1dBasePortEntry 3 } dot1dBasePortDelayExceededDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of frames discarded by this port due to excessive transit delay through the bridge. It is incremented by both transparent and source route bridges." REFERENCE "IEEE 802.1D-1990: Section 6.6.1.1.3" ::= { dot1dBasePortEntry 4 } dot1dBasePortMtuExceededDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of frames discarded by this port due to an excessive size. It is incremented by both transparent and source route bridges." REFERENCE "IEEE 802.1D-1990: Section 6.6.1.1.3" ::= { dot1dBasePortEntry 5 } -- the dot1dStp group -- Implementation of the dot1dStp group is optional. It is -- implemented by those bridges that support the Spanning Tree -- Protocol. dot1dStpProtocolSpecification OBJECT-TYPE SYNTAX INTEGER { unknown(1), decLb100(2), ieee8021d(3) } ACCESS read-only STATUS mandatory DESCRIPTION "An indication of what version of the Spanning Tree Protocol is being run. The value 'decLb100(2)' indicates the DEC LANbridge 100 Spanning Tree protocol. IEEE 802.1d implementations will return 'ieee8021d(3)'. If future versions of the IEEE Spanning Tree Protocol are released that are incompatible with the current version a new value will be defined." ::= { dot1dStp 1 } dot1dStpPriority OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-write STATUS mandatory DESCRIPTION "The value of the write-able portion of the Bridge ID, i.e., the first two octets of the (8 octet long) Bridge ID. The other (last) 6 octets of the Bridge ID are given by the value of dot1dBaseBridgeAddress." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.7" ::= { dot1dStp 2 } dot1dStpTimeSinceTopologyChange OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The time (in hundredths of a second) since the last time a topology change was detected by the bridge entity." REFERENCE "IEEE 802.1D-1990: Section 6.8.1.1.3" ::= { dot1dStp 3 } dot1dStpTopChanges OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of topology changes detected by this bridge since the management entity was last reset or initialized." REFERENCE "IEEE 802.1D-1990: Section 6.8.1.1.3" ::= { dot1dStp 4 } dot1dStpDesignatedRoot OBJECT-TYPE SYNTAX BridgeId ACCESS read-only STATUS mandatory DESCRIPTION "The bridge identifier of the root of the spanning tree as determined by the Spanning Tree Protocol as executed by this node. This value is used as the Root Identifier parameter in all Configuration Bridge PDUs originated by this node." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.1" ::= { dot1dStp 5 } dot1dStpRootCost OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The cost of the path to the root as seen from this bridge." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.2" ::= { dot1dStp 6 } dot1dStpRootPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The port number of the port which offers the lowest cost path from this bridge to the root bridge." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.3" ::= { dot1dStp 7 } dot1dStpMaxAge OBJECT-TYPE SYNTAX Timeout ACCESS read-only STATUS mandatory DESCRIPTION "The maximum age of Spanning Tree Protocol information learned from the network on any port before it is discarded, in units of hundredths of a second. This is the actual value that this bridge is currently using." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.4" ::= { dot1dStp 8 } dot1dStpHelloTime OBJECT-TYPE SYNTAX Timeout ACCESS read-only STATUS mandatory DESCRIPTION "The amount of time between the transmission of Configuration bridge PDUs by this node on any port when it is the root of the spanning tree or trying to become so, in units of hundredths of a second. This is the actual value that this bridge is currently using." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.5" ::= { dot1dStp 9 } dot1dStpHoldTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "This time value determines the interval length during which no more than two Configuration bridge PDUs shall be transmitted by this node, in units of hundredths of a second." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.14" ::= { dot1dStp 10 } dot1dStpForwardDelay OBJECT-TYPE SYNTAX Timeout ACCESS read-only STATUS mandatory DESCRIPTION "This time value, measured in units of hundredths of a second, controls how fast a port changes its spanning state when moving towards the Forwarding state. The value determines how long the port stays in each of the Listening and Learning states, which precede the Forwarding state. This value is also used, when a topology change has been detected and is underway, to age all dynamic entries in the Forwarding Database. [Note that this value is the one that this bridge is currently using, in contrast to dot1dStpBridgeForwardDelay which is the value that this bridge and all others would start using if/when this bridge were to become the root.]" REFERENCE "IEEE 802.1D-1990: Section 4.5.3.6" ::= { dot1dStp 11 } dot1dStpBridgeMaxAge OBJECT-TYPE SYNTAX Timeout (600..4000) ACCESS read-write STATUS mandatory DESCRIPTION "The value that all bridges use for MaxAge when this bridge is acting as the root. Note that 802.1D-1990 specifies that the range for this parameter is related to the value of dot1dStpBridgeHelloTime. The granularity of this timer is specified by 802.1D-1990 to be 1 second. An agent may return a badValue error if a set is attempted to a value which is not a whole number of seconds." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.8" ::= { dot1dStp 12 } dot1dStpBridgeHelloTime OBJECT-TYPE SYNTAX Timeout (100..1000) ACCESS read-write STATUS mandatory DESCRIPTION "The value that all bridges use for HelloTime when this bridge is acting as the root. The granularity of this timer is specified by 802.1D- 1990 to be 1 second. An agent may return a badValue error if a set is attempted to a value which is not a whole number of seconds." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.9" ::= { dot1dStp 13 } dot1dStpBridgeForwardDelay OBJECT-TYPE SYNTAX Timeout (400..3000) ACCESS read-write STATUS mandatory DESCRIPTION "The value that all bridges use for ForwardDelay when this bridge is acting as the root. Note that 802.1D-1990 specifies that the range for this parameter is related to the value of dot1dStpBridgeMaxAge. The granularity of this timer is specified by 802.1D-1990 to be 1 second. An agent may return a badValue error if a set is attempted to a value which is not a whole number of seconds." REFERENCE "IEEE 802.1D-1990: Section 4.5.3.10" ::= { dot1dStp 14 } -- The Spanning Tree Port Table dot1dStpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dStpPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table that contains port-specific information for the Spanning Tree Protocol." ::= { dot1dStp 15 } dot1dStpPortEntry OBJECT-TYPE SYNTAX Dot1dStpPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of information maintained by every port about the Spanning Tree Protocol state for that port." INDEX { dot1dStpPort } ::= { dot1dStpPortTable 1 } Dot1dStpPortEntry ::= SEQUENCE { dot1dStpPort INTEGER, dot1dStpPortPriority INTEGER, dot1dStpPortState INTEGER, dot1dStpPortEnable INTEGER, dot1dStpPortPathCost INTEGER, dot1dStpPortDesignatedRoot BridgeId, dot1dStpPortDesignatedCost INTEGER, dot1dStpPortDesignatedBridge BridgeId, dot1dStpPortDesignatedPort OCTET STRING, dot1dStpPortForwardTransitions Counter } dot1dStpPort OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The port number of the port for which this entry contains Spanning Tree Protocol management information." REFERENCE "IEEE 802.1D-1990: Section 6.8.2.1.2" ::= { dot1dStpPortEntry 1 } dot1dStpPortPriority OBJECT-TYPE SYNTAX INTEGER (0..255) ACCESS read-write STATUS mandatory DESCRIPTION "The value of the priority field which is contained in the first (in network byte order) octet of the (2 octet long) Port ID. The other octet of the Port ID is given by the value of dot1dStpPort." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.1" ::= { dot1dStpPortEntry 2 } dot1dStpPortState OBJECT-TYPE SYNTAX INTEGER { disabled(1), blocking(2), listening(3), learning(4), forwarding(5), broken(6) } ACCESS read-only STATUS mandatory DESCRIPTION "The port's current state as defined by application of the Spanning Tree Protocol. This state controls what action a port takes on reception of a frame. If the bridge has detected a port that is malfunctioning it will place that port into the broken(6) state. For ports which are disabled (see dot1dStpPortEnable), this object will have a value of disabled(1)." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.2" ::= { dot1dStpPortEntry 3 } dot1dStpPortEnable OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The enabled/disabled status of the port." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.2" ::= { dot1dStpPortEntry 4 } dot1dStpPortPathCost OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-write STATUS mandatory DESCRIPTION "The contribution of this port to the path cost of paths towards the spanning tree root which include this port. 802.1D-1990 recommends that the default value of this parameter be in inverse proportion to the speed of the attached LAN." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.3" ::= { dot1dStpPortEntry 5 } dot1dStpPortDesignatedRoot OBJECT-TYPE SYNTAX BridgeId ACCESS read-only STATUS mandatory DESCRIPTION "The unique Bridge Identifier of the Bridge recorded as the Root in the Configuration BPDUs transmitted by the Designated Bridge for the segment to which the port is attached." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.4" ::= { dot1dStpPortEntry 6 } dot1dStpPortDesignatedCost OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The path cost of the Designated Port of the segment connected to this port. This value is compared to the Root Path Cost field in received bridge PDUs." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.5" ::= { dot1dStpPortEntry 7 } dot1dStpPortDesignatedBridge OBJECT-TYPE SYNTAX BridgeId ACCESS read-only STATUS mandatory DESCRIPTION "The Bridge Identifier of the bridge which this port considers to be the Designated Bridge for this port's segment." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.6" ::= { dot1dStpPortEntry 8 } dot1dStpPortDesignatedPort OBJECT-TYPE SYNTAX OCTET STRING (SIZE (2)) ACCESS read-only STATUS mandatory DESCRIPTION "The Port Identifier of the port on the Designated Bridge for this port's segment." REFERENCE "IEEE 802.1D-1990: Section 4.5.5.7" ::= { dot1dStpPortEntry 9 } dot1dStpPortForwardTransitions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this port has transitioned from the Learning state to the Forwarding state." ::= { dot1dStpPortEntry 10 } -- the dot1dTp group -- Implementation of the dot1dTp group is optional. It is -- implemented by those bridges that support the transparent -- bridging mode. A transparent or SRT bridge will implement -- this group. dot1dTpLearnedEntryDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of Forwarding Database entries, which have been or would have been learnt, but have been discarded due to a lack of space to store them in the Forwarding Database. If this counter is increasing, it indicates that the Forwarding Database is regularly becoming full (a condition which has unpleasant performance effects on the subnetwork). If this counter has a significant value but is not presently increasing, it indicates that the problem has been occurring but is not persistent." REFERENCE "IEEE 802.1D-1990: Section 6.7.1.1.3" ::= { dot1dTp 1 } dot1dTpAgingTime OBJECT-TYPE SYNTAX INTEGER (10..1000000) ACCESS read-write STATUS mandatory DESCRIPTION "The timeout period in seconds for aging out dynamically learned forwarding information. 802.1D-1990 recommends a default of 300 seconds." REFERENCE "IEEE 802.1D-1990: Section 6.7.1.1.3" ::= { dot1dTp 2 } -- The Forwarding Database for Transparent Bridges dot1dTpFdbTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dTpFdbEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table that contains information about unicast entries for which the bridge has forwarding and/or filtering information. This information is used by the transparent bridging function in determining how to propagate a received frame." ::= { dot1dTp 3 } dot1dTpFdbEntry OBJECT-TYPE SYNTAX Dot1dTpFdbEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Information about a specific unicast MAC address for which the bridge has some forwarding and/or filtering information." INDEX { dot1dTpFdbAddress } ::= { dot1dTpFdbTable 1 } Dot1dTpFdbEntry ::= SEQUENCE { dot1dTpFdbAddress MacAddress, dot1dTpFdbPort INTEGER, dot1dTpFdbStatus INTEGER } dot1dTpFdbAddress OBJECT-TYPE SYNTAX MacAddress ACCESS read-only STATUS mandatory DESCRIPTION "A unicast MAC address for which the bridge has forwarding and/or filtering information." REFERENCE "IEEE 802.1D-1990: Section 3.9.1, 3.9.2" ::= { dot1dTpFdbEntry 1 } dot1dTpFdbPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "Either the value '0', or the port number of the port on which a frame having a source address equal to the value of the corresponding instance of dot1dTpFdbAddress has been seen. A value of '0' indicates that the port number has not been learned but that the bridge does have some forwarding/filtering information about this address (e.g. in the dot1dStaticTable). Implementors are encouraged to assign the port value to this object whenever it is learned even for addresses for which the corresponding value of dot1dTpFdbStatus is not learned(3)." ::= { dot1dTpFdbEntry 2 } dot1dTpFdbStatus OBJECT-TYPE SYNTAX INTEGER { other(1), invalid(2), learned(3), self(4), mgmt(5) } ACCESS read-only STATUS mandatory DESCRIPTION "The status of this entry. The meanings of the values are: other(1) : none of the following. This would include the case where some other MIB object (not the corresponding instance of dot1dTpFdbPort, nor an entry in the dot1dStaticTable) is being used to determine if and how frames addressed to the value of the corresponding instance of dot1dTpFdbAddress are being forwarded. invalid(2) : this entry is not longer valid (e.g., it was learned but has since aged-out), but has not yet been flushed from the table. learned(3) : the value of the corresponding instance of dot1dTpFdbPort was learned, and is being used. self(4) : the value of the corresponding instance of dot1dTpFdbAddress represents one of the bridge's addresses. The corresponding instance of dot1dTpFdbPort indicates which of the bridge's ports has this address. mgmt(5) : the value of the corresponding instance of dot1dTpFdbAddress is also the value of an existing instance of dot1dStaticAddress." ::= { dot1dTpFdbEntry 3 } -- Port Table for Transparent Bridges dot1dTpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dTpPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table that contains information about every port that is associated with this transparent bridge." ::= { dot1dTp 4 } dot1dTpPortEntry OBJECT-TYPE SYNTAX Dot1dTpPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of information for each port of a transparent bridge." INDEX { dot1dTpPort } ::= { dot1dTpPortTable 1 } Dot1dTpPortEntry ::= SEQUENCE { dot1dTpPort INTEGER, dot1dTpPortMaxInfo INTEGER, dot1dTpPortInFrames Counter, dot1dTpPortOutFrames Counter, dot1dTpPortInDiscards Counter } dot1dTpPort OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The port number of the port for which this entry contains Transparent bridging management information." ::= { dot1dTpPortEntry 1 } -- It would be nice if we could use ifMtu as the size of the -- largest INFO field, but we can't because ifMtu is defined -- to be the size that the (inter-)network layer can use which -- can differ from the MAC layer (especially if several layers -- of encapsulation are used). dot1dTpPortMaxInfo OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The maximum size of the INFO (non-MAC) field that this port will receive or transmit." ::= { dot1dTpPortEntry 2 } dot1dTpPortInFrames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of frames that have been received by this port from its segment. Note that a frame received on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." REFERENCE "IEEE 802.1D-1990: Section 6.6.1.1.3" ::= { dot1dTpPortEntry 3 } dot1dTpPortOutFrames OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of frames that have been transmitted by this port to its segment. Note that a frame transmitted on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." REFERENCE "IEEE 802.1D-1990: Section 6.6.1.1.3" ::= { dot1dTpPortEntry 4 } dot1dTpPortInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "Count of valid frames received which were discarded (i.e., filtered) by the Forwarding Process." REFERENCE "IEEE 802.1D-1990: Section 6.6.1.1.3" ::= { dot1dTpPortEntry 5 } -- The Static (Destination-Address Filtering) Database -- Implementation of this group is optional. dot1dStaticTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dStaticEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table containing filtering information configured into the bridge by (local or network) management specifying the set of ports to which frames received from specific ports and containing specific destination addresses are allowed to be forwarded. The value of zero in this table as the port number from which frames with a specific destination address are received, is used to specify all ports for which there is no specific entry in this table for that particular destination address. Entries are valid for unicast and for group/broadcast addresses." REFERENCE "IEEE 802.1D-1990: Section 6.7.2" ::= { dot1dStatic 1 } dot1dStaticEntry OBJECT-TYPE SYNTAX Dot1dStaticEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Filtering information configured into the bridge by (local or network) management specifying the set of ports to which frames received from a specific port and containing a specific destination address are allowed to be forwarded." REFERENCE "IEEE 802.1D-1990: Section 6.7.2" INDEX { dot1dStaticAddress, dot1dStaticReceivePort } ::= { dot1dStaticTable 1 } Dot1dStaticEntry ::= SEQUENCE { dot1dStaticAddress MacAddress, dot1dStaticReceivePort INTEGER, dot1dStaticAllowedToGoTo OCTET STRING, dot1dStaticStatus INTEGER } dot1dStaticAddress OBJECT-TYPE SYNTAX MacAddress ACCESS read-write STATUS mandatory DESCRIPTION "The destination MAC address in a frame to which this entry's filtering information applies. This object can take the value of a unicast address, a group address or the broadcast address." REFERENCE "IEEE 802.1D-1990: Section 3.9.1, 3.9.2" ::= { dot1dStaticEntry 1 } dot1dStaticReceivePort OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "Either the value '0', or the port number of the port from which a frame must be received in order for this entry's filtering information to apply. A value of zero indicates that this entry applies on all ports of the bridge for which there is no other applicable entry." ::= { dot1dStaticEntry 2 } dot1dStaticAllowedToGoTo OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory DESCRIPTION "The set of ports to which frames received from a specific port and destined for a specific MAC address, are allowed to be forwarded. Each octet within the value of this object specifies a set of eight ports, with the first octet specifying ports 1 through 8, the second octet specifying ports 9 through 16, etc. Within each octet, the most significant bit represents the lowest numbered port, and the least significant bit represents the highest numbered port. Thus, each port of the bridge is represented by a single bit within the value of this object. If that bit has a value of '1' then that port is included in the set of ports; the port is not included if its bit has a value of '0'. (Note that the setting of the bit corresponding to the port from which a frame is received is irrelevant.) The default value of this object is a string of ones of appropriate length." ::= { dot1dStaticEntry 3 } dot1dStaticStatus OBJECT-TYPE SYNTAX INTEGER { other(1), invalid(2), permanent(3), deleteOnReset(4), deleteOnTimeout(5) } ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry. The default value is permanent(3). other(1) - this entry is currently in use but the conditions under which it will remain so are different from each of the following values. invalid(2) - writing this value to the object removes the corresponding entry. permanent(3) - this entry is currently in use and will remain so after the next reset of the bridge. deleteOnReset(4) - this entry is currently in use and will remain so until the next reset of the bridge. deleteOnTimeout(5) - this entry is currently in use and will remain so until it is aged out." ::= { dot1dStaticEntry 4 } -- Traps for use by Bridges -- Traps for the Spanning Tree Protocol newRoot TRAP-TYPE ENTERPRISE dot1dBridge DESCRIPTION "The newRoot trap indicates that the sending agent has become the new root of the Spanning Tree; the trap is sent by a bridge soon after its election as the new root, e.g., upon expiration of the Topology Change Timer immediately subsequent to its election. Implementation of this trap is optional." ::= 1 topologyChange TRAP-TYPE ENTERPRISE dot1dBridge DESCRIPTION "A topologyChange trap is sent by a bridge when any of its configured ports transitions from the Learning state to the Forwarding state, or from the Forwarding state to the Blocking state. The trap is not sent if a newRoot trap is sent for the same transition. Implementation of this trap is optional." ::= 2 END SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-TM0100644000175000017500000000766007435074233016555 0ustar jdivejdive-- extracted from rfc1906.txt SNMPv2-TM DEFINITIONS ::= BEGIN IMPORTS OBJECT-IDENTITY, snmpDomains, snmpProxys FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC; -- SNMPv2 over UDP over IPv4 snmpUDPDomain OBJECT-IDENTITY STATUS current DESCRIPTION "The SNMPv2 over UDP transport domain. The corresponding transport address is of type SnmpUDPAddress." ::= { snmpDomains 1 } SnmpUDPAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1d.1d.1d.1d/2d" STATUS current DESCRIPTION "Represents a UDP address: octets contents encoding 1-4 IP-address network-byte order 5-6 UDP-port network-byte order " SYNTAX OCTET STRING (SIZE (6)) -- SNMPv2 over OSI snmpCLNSDomain OBJECT-IDENTITY STATUS current DESCRIPTION "The SNMPv2 over CLNS transport domain. The corresponding transport address is of type SnmpOSIAddress." ::= { snmpDomains 2 } snmpCONSDomain OBJECT-IDENTITY STATUS current DESCRIPTION "The SNMPv2 over CONS transport domain. The corresponding transport address is of type SnmpOSIAddress." ::= { snmpDomains 3 } SnmpOSIAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "*1x:/1x:" STATUS current DESCRIPTION "Represents an OSI transport-address: octets contents encoding 1 length of NSAP 'n' as an unsigned-integer (either 0 or from 3 to 20) 2..(n+1) NSAP concrete binary representation (n+2)..m TSEL string of (up to 64) octets " SYNTAX OCTET STRING (SIZE (1 | 4..85)) -- SNMPv2 over DDP snmpDDPDomain OBJECT-IDENTITY STATUS current DESCRIPTION "The SNMPv2 over DDP transport domain. The corresponding transport address is of type SnmpNBPAddress." ::= { snmpDomains 4 } SnmpNBPAddress ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents an NBP name: octets contents encoding 1 length of object 'n' as an unsigned integer 2..(n+1) object string of (up to 32) octets n+2 length of type 'p' as an unsigned integer (n+3)..(n+2+p) type string of (up to 32) octets n+3+p length of zone 'q' as an unsigned integer (n+4+p)..(n+3+p+q) zone string of (up to 32) octets For comparison purposes, strings are case-insensitive All strings may contain any octet other than 255 (hex ff)." SYNTAX OCTET STRING (SIZE (3..99)) -- SNMPv2 over IPX snmpIPXDomain OBJECT-IDENTITY STATUS current DESCRIPTION "The SNMPv2 over IPX transport domain. The corresponding transport address is of type SnmpIPXAddress." ::= { snmpDomains 5 } SnmpIPXAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d" STATUS current DESCRIPTION "Represents an IPX address: octets contents encoding 1-4 network-number network-byte order 5-10 physical-address network-byte order 11-12 socket-number network-byte order " SYNTAX OCTET STRING (SIZE (12)) -- for proxy to SNMPv1 (RFC 1157) rfc1157Proxy OBJECT IDENTIFIER ::= { snmpProxys 1 } rfc1157Domain OBJECT-IDENTITY STATUS current DESCRIPTION "The transport domain for SNMPv1 over UDP. The corresponding transport address is of type SnmpUDPAddress." ::= { rfc1157Proxy 1 } -- ::= { rfc1157Proxy 2 } this OID is obsolete END SNMP-MIB-Compiler-0.06.orig/mibs/RFC1157-SNMP0100644000175000017500000001005607435074233016706 0ustar jdivejdive-- extracted from rfc1157.txt RFC1157-SNMP DEFINITIONS ::= BEGIN IMPORTS ObjectName, ObjectSyntax, NetworkAddress, IpAddress, TimeTicks FROM RFC1155-SMI; -- top-level message Message ::= SEQUENCE { version -- version-1 for this RFC INTEGER { version-1(0) }, community -- community name OCTET STRING, data -- e.g., PDUs if trivial ANY -- authentication is being used } -- protocol data units PDUs ::= CHOICE { get-request GetRequest-PDU, get-next-request GetNextRequest-PDU, get-response GetResponse-PDU, set-request SetRequest-PDU, trap Trap-PDU } -- PDUs GetRequest-PDU ::= [0] IMPLICIT PDU GetNextRequest-PDU ::= [1] IMPLICIT PDU GetResponse-PDU ::= [2] IMPLICIT PDU SetRequest-PDU ::= [3] IMPLICIT PDU PDU ::= SEQUENCE { request-id INTEGER, error-status -- sometimes ignored INTEGER { noError(0), tooBig(1), noSuchName(2), badValue(3), readOnly(4), genErr(5) }, error-index -- sometimes ignored INTEGER, variable-bindings -- values are sometimes ignored VarBindList } Trap-PDU ::= [4] IMPLICIT SEQUENCE { enterprise -- type of object generating -- trap, see sysObjectID in [5] OBJECT IDENTIFIER, agent-addr -- address of object generating NetworkAddress, -- trap generic-trap -- generic trap type INTEGER { coldStart(0), warmStart(1), linkDown(2), linkUp(3), authenticationFailure(4), egpNeighborLoss(5), enterpriseSpecific(6) }, specific-trap -- specific code, present even INTEGER, -- if generic-trap is not -- enterpriseSpecific time-stamp -- time elapsed between the last TimeTicks, -- (re)initialization of the -- network -- entity and the generation of the -- trap variable-bindings -- "interesting" information VarBindList } -- variable bindings VarBind ::= SEQUENCE { name ObjectName, value ObjectSyntax } VarBindList ::= SEQUENCE OF VarBind END SNMP-MIB-Compiler-0.06.orig/mibs/IF-MIB0100644000175000017500000021526407435074233016116 0ustar jdivejdive-- extracted from rfc2233.txt IF-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Counter32, Gauge32, Counter64, Integer32, TimeTicks, mib-2, NOTIFICATION-TYPE FROM SNMPv2-SMI TEXTUAL-CONVENTION, DisplayString, PhysAddress, TruthValue, RowStatus, TimeStamp, AutonomousType, TestAndIncr FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF snmpTraps FROM SNMPv2-MIB IANAifType FROM IANAifType-MIB; ifMIB MODULE-IDENTITY LAST-UPDATED "9611031355Z" ORGANIZATION "IETF Interfaces MIB Working Group" CONTACT-INFO " Keith McCloghrie Cisco Systems, Inc. 170 West Tasman Drive San Jose, CA 95134-1706 US 408-526-5260 kzm@cisco.com" DESCRIPTION "The MIB module to describe generic objects for network interface sub-layers. This MIB is an updated version of MIB-II's ifTable, and incorporates the extensions defined in RFC 1229." REVISION "9602282155Z" DESCRIPTION "Revisions made by the Interfaces MIB WG." REVISION "9311082155Z" DESCRIPTION "Initial revision, published as part of RFC 1573." ::= { mib-2 31 } ifMIBObjects OBJECT IDENTIFIER ::= { ifMIB 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } OwnerString ::= TEXTUAL-CONVENTION DISPLAY-HINT "255a" STATUS current DESCRIPTION "This data type is used to model an administratively assigned name of the owner of a resource. This information is taken from the NVT ASCII character set. It is suggested that this name contain one or more of the following: ASCII form of the manager station's transport address, management station name (e.g., domain name), network management personnel's name, location, or phone number. In some cases the agent itself will be the owner of an entry. In these cases, this string shall be set to a string starting with 'agent'." SYNTAX OCTET STRING (SIZE(0..255)) -- InterfaceIndex contains the semantics of ifIndex and -- should be used for any objects defined on other mib -- modules that need these semantics. InterfaceIndex ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "A unique value, greater than zero, for each interface or interface sub-layer in the managed system. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub- layer must remain constant at least from one re- initialization of the entity's network management system to the next re-initialization." SYNTAX Integer32 (1..2147483647) InterfaceIndexOrZero ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "This textual convention is an extension of the InterfaceIndex convention. The latter defines a greater than zero value used to identify an interface or interface sub-layer in the managed system. This extension permits the additional value of zero. the value zero is object-specific and must therefore be defined as part of the description of any object which uses this syntax. Examples of the usage of zero might include situations where interface was unknown, or when none or all interfaces need to be referenced." SYNTAX Integer32 (0..2147483647) ifNumber OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of network interfaces (regardless of their current state) present on this system." ::= { interfaces 1 } ifTableLastChange OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time of the last creation or deletion of an entry in the ifTable. If the number of entries has been unchanged since the last re-initialization of the local network management subsystem, then this object contains a zero value." ::= { ifMIBObjects 5 } -- the Interfaces table -- The Interfaces table contains information on the entity's -- interfaces. Each sub-layer below the internetwork-layer -- of a network interface is considered to be an interface. ifTable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of interface entries. The number of entries is given by the value of ifNumber." ::= { interfaces 2 } ifEntry OBJECT-TYPE SYNTAX IfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry containing management information applicable to a particular interface." INDEX { ifIndex } ::= { ifTable 1 } IfEntry ::= SEQUENCE { ifIndex InterfaceIndex, ifDescr DisplayString, ifType IANAifType, ifMtu Integer32, ifSpeed Gauge32, ifPhysAddress PhysAddress, ifAdminStatus INTEGER, ifOperStatus INTEGER, ifLastChange TimeTicks, ifInOctets Counter32, ifInUcastPkts Counter32, ifInNUcastPkts Counter32, -- deprecated ifInDiscards Counter32, ifInErrors Counter32, ifInUnknownProtos Counter32, ifOutOctets Counter32, ifOutUcastPkts Counter32, ifOutNUcastPkts Counter32, -- deprecated ifOutDiscards Counter32, ifOutErrors Counter32, ifOutQLen Gauge32, -- deprecated ifSpecific OBJECT IDENTIFIER -- deprecated } ifIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "A unique value, greater than zero, for each interface. It is recommended that values are assigned contiguously starting from 1. The value for each interface sub-layer must remain constant at least from one re-initialization of the entity's network management system to the next re-initialization." ::= { ifEntry 1 } ifDescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0..255)) MAX-ACCESS read-only STATUS current DESCRIPTION "A textual string containing information about the interface. This string should include the name of the manufacturer, the product name and the version of the interface hardware/software." ::= { ifEntry 2 } ifType OBJECT-TYPE SYNTAX IANAifType MAX-ACCESS read-only STATUS current DESCRIPTION "The type of interface. Additional values for ifType are assigned by the Internet Assigned Numbers Authority (IANA), through updating the syntax of the IANAifType textual convention." ::= { ifEntry 3 } ifMtu OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The size of the largest packet which can be sent/received on the interface, specified in octets. For interfaces that are used for transmitting network datagrams, this is the size of the largest network datagram that can be sent on the interface." ::= { ifEntry 4 } ifSpeed OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "An estimate of the interface's current bandwidth in bits per second. For interfaces which do not vary in bandwidth or for those where no accurate estimation can be made, this object should contain the nominal bandwidth. If the bandwidth of the interface is greater than the maximum value reportable by this object then this object should report its maximum value (4,294,967,295) and ifHighSpeed must be used to report the interace's speed. For a sub-layer which has no concept of bandwidth, this object should be zero." ::= { ifEntry 5 } ifPhysAddress OBJECT-TYPE SYNTAX PhysAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The interface's address at its protocol sub-layer. For example, for an 802.x interface, this object normally contains a MAC address. The interface's media-specific MIB must define the bit and byte ordering and the format of the value of this object. For interfaces which do not have such an address (e.g., a serial line), this object should contain an octet string of zero length." ::= { ifEntry 6 } ifAdminStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3) -- in some test mode } MAX-ACCESS read-write STATUS current DESCRIPTION "The desired state of the interface. The testing(3) state indicates that no operational packets can be passed. When a managed system initializes, all interfaces start with ifAdminStatus in the down(2) state. As a result of either explicit management action or per configuration information retained by the managed system, ifAdminStatus is then changed to either the up(1) or testing(3) states (or remains in the down(2) state)." ::= { ifEntry 7 } ifOperStatus OBJECT-TYPE SYNTAX INTEGER { up(1), -- ready to pass packets down(2), testing(3), -- in some test mode unknown(4), -- status can not be determined -- for some reason. dormant(5), notPresent(6), -- some component is missing lowerLayerDown(7) -- down due to state of -- lower-layer interface(s) } MAX-ACCESS read-only STATUS current DESCRIPTION "The current operational state of the interface. The testing(3) state indicates that no operational packets can be passed. If ifAdminStatus is down(2) then ifOperStatus should be down(2). If ifAdminStatus is changed to up(1) then ifOperStatus should change to up(1) if the interface is ready to transmit and receive network traffic; it should change to dormant(5) if the interface is waiting for external actions (such as a serial line waiting for an incoming connection); it should remain in the down(2) state if and only if there is a fault that prevents it from going to the up(1) state; it should remain in the notPresent(6) state if the interface has missing (typically, hardware) components." ::= { ifEntry 8 } ifLastChange OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time the interface entered its current operational state. If the current state was entered prior to the last re-initialization of the local network management subsystem, then this object contains a zero value." ::= { ifEntry 9 } ifInOctets OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of octets received on the interface, including framing characters. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 10 } ifInUcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were not addressed to a multicast or broadcast address at this sub-layer. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 11 } ifInNUcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS deprecated DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a multicast or broadcast address at this sub-layer. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime. This object is deprecated in favour of ifInMulticastPkts and ifInBroadcastPkts." ::= { ifEntry 12 } ifInDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of inbound packets which were chosen to be discarded even though no errors had been detected to prevent their being deliverable to a higher-layer protocol. One possible reason for discarding such a packet could be to free up buffer space. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 13 } ifInErrors OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "For packet-oriented interfaces, the number of inbound packets that contained errors preventing them from being deliverable to a higher-layer protocol. For character-oriented or fixed-length interfaces, the number of inbound transmission units that contained errors preventing them from being deliverable to a higher-layer protocol. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 14 } ifInUnknownProtos OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "For packet-oriented interfaces, the number of packets received via the interface which were discarded because of an unknown or unsupported protocol. For character-oriented or fixed-length interfaces that support protocol multiplexing the number of transmission units received via the interface which were discarded because of an unknown or unsupported protocol. For any interface that does not support protocol multiplexing, this counter will always be 0. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 15 } ifOutOctets OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of octets transmitted out of the interface, including framing characters. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 16 } ifOutUcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were not addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 17 } ifOutNUcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS deprecated DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime. This object is deprecated in favour of ifOutMulticastPkts and ifOutBroadcastPkts." ::= { ifEntry 18 } ifOutDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outbound packets which were chosen to be discarded even though no errors had been detected to prevent their being transmitted. One possible reason for discarding such a packet could be to free up buffer space. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 19 } ifOutErrors OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "For packet-oriented interfaces, the number of outbound packets that could not be transmitted because of errors. For character-oriented or fixed-length interfaces, the number of outbound transmission units that could not be transmitted because of errors. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifEntry 20 } ifOutQLen OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS deprecated DESCRIPTION "The length of the output packet queue (in packets)." ::= { ifEntry 21 } ifSpecific OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS deprecated DESCRIPTION "A reference to MIB definitions specific to the particular media being used to realize the interface. It is recommended that this value point to an instance of a MIB object in the media-specific MIB, i.e., that this object have the semantics associated with the InstancePointer textual convention defined in RFC 1903. In fact, it is recommended that the media- specific MIB specify what value ifSpecific should/can take for values of ifType. If no MIB definitions specific to the particular media are available, the value should be set to the OBJECT IDENTIFIER { 0 0 }." ::= { ifEntry 22 } -- -- Extension to the interface table -- -- This table replaces the ifExtnsTable table. -- ifXTable OBJECT-TYPE SYNTAX SEQUENCE OF IfXEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of interface entries. The number of entries is given by the value of ifNumber. This table contains additional objects for the interface table." ::= { ifMIBObjects 1 } ifXEntry OBJECT-TYPE SYNTAX IfXEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry containing additional management information applicable to a particular interface." AUGMENTS { ifEntry } ::= { ifXTable 1 } IfXEntry ::= SEQUENCE { ifName DisplayString, ifInMulticastPkts Counter32, ifInBroadcastPkts Counter32, ifOutMulticastPkts Counter32, ifOutBroadcastPkts Counter32, ifHCInOctets Counter64, ifHCInUcastPkts Counter64, ifHCInMulticastPkts Counter64, ifHCInBroadcastPkts Counter64, ifHCOutOctets Counter64, ifHCOutUcastPkts Counter64, ifHCOutMulticastPkts Counter64, ifHCOutBroadcastPkts Counter64, ifLinkUpDownTrapEnable INTEGER, ifHighSpeed Gauge32, ifPromiscuousMode TruthValue, ifConnectorPresent TruthValue, ifAlias DisplayString, ifCounterDiscontinuityTime TimeStamp } ifName OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The textual name of the interface. The value of this object should be the name of the interface as assigned by the local device and should be suitable for use in commands entered at the device's `console'. This might be a text name, such as `le0' or a simple port number, such as `1', depending on the interface naming syntax of the device. If several entries in the ifTable together represent a single interface as named by the device, then each will have the same value of ifName. Note that for an agent which responds to SNMP queries concerning an interface on some other (proxied) device, then the value of ifName for such an interface is the proxied device's local name for it. If there is no local name, or this object is otherwise not applicable, then this object contains a zero- length string." ::= { ifXEntry 1 } ifInMulticastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a multicast address at this sub-layer. For a MAC layer protocol, this includes both Group and Functional addresses. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 2 } ifInBroadcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a broadcast address at this sub-layer. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 3 } ifOutMulticastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a multicast address at this sub-layer, including those that were discarded or not sent. For a MAC layer protocol, this includes both Group and Functional addresses. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 4 } ifOutBroadcastPkts OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a broadcast address at this sub-layer, including those that were discarded or not sent. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 5 } -- -- High Capacity Counter objects. These objects are all -- 64 bit versions of the "basic" ifTable counters. These -- objects all have the same basic semantics as their 32-bit -- counterparts, however, their syntax has been extended -- to 64 bits. -- ifHCInOctets OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of octets received on the interface, including framing characters. This object is a 64-bit version of ifInOctets. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 6 } ifHCInUcastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were not addressed to a multicast or broadcast address at this sub-layer. This object is a 64-bit version of ifInUcastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 7 } ifHCInMulticastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a multicast address at this sub-layer. For a MAC layer protocol, this includes both Group and Functional addresses. This object is a 64-bit version of ifInMulticastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 8 } ifHCInBroadcastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets, delivered by this sub-layer to a higher (sub-)layer, which were addressed to a broadcast address at this sub-layer. This object is a 64-bit version of ifInBroadcastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 9 } ifHCOutOctets OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of octets transmitted out of the interface, including framing characters. This object is a 64-bit version of ifOutOctets. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 10 } ifHCOutUcastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were not addressed to a multicast or broadcast address at this sub-layer, including those that were discarded or not sent. This object is a 64-bit version of ifOutUcastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 11 } ifHCOutMulticastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a multicast address at this sub-layer, including those that were discarded or not sent. For a MAC layer protocol, this includes both Group and Functional addresses. This object is a 64-bit version of ifOutMulticastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 12 } ifHCOutBroadcastPkts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of packets that higher-level protocols requested be transmitted, and which were addressed to a broadcast address at this sub-layer, including those that were discarded or not sent. This object is a 64-bit version of ifOutBroadcastPkts. Discontinuities in the value of this counter can occur at re-initialization of the management system, and at other times as indicated by the value of ifCounterDiscontinuityTime." ::= { ifXEntry 13 } ifLinkUpDownTrapEnable OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "Indicates whether linkUp/linkDown traps should be generated for this interface. By default, this object should have the value enabled(1) for interfaces which do not operate on 'top' of any other interface (as defined in the ifStackTable), and disabled(2) otherwise." ::= { ifXEntry 14 } ifHighSpeed OBJECT-TYPE SYNTAX Gauge32 MAX-ACCESS read-only STATUS current DESCRIPTION "An estimate of the interface's current bandwidth in units of 1,000,000 bits per second. If this object reports a value of `n' then the speed of the interface is somewhere in the range of `n-500,000' to `n+499,999'. For interfaces which do not vary in bandwidth or for those where no accurate estimation can be made, this object should contain the nominal bandwidth. For a sub-layer which has no concept of bandwidth, this object should be zero." ::= { ifXEntry 15 } ifPromiscuousMode OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This object has a value of false(2) if this interface only accepts packets/frames that are addressed to this station. This object has a value of true(1) when the station accepts all packets/frames transmitted on the media. The value true(1) is only legal on certain types of media. If legal, setting this object to a value of true(1) may require the interface to be reset before becoming effective. The value of ifPromiscuousMode does not affect the reception of broadcast and multicast packets/frames by the interface." ::= { ifXEntry 16 } ifConnectorPresent OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "This object has the value 'true(1)' if the interface sublayer has a physical connector and the value 'false(2)' otherwise." ::= { ifXEntry 17 } ifAlias OBJECT-TYPE SYNTAX DisplayString (SIZE(0..64)) MAX-ACCESS read-write STATUS current DESCRIPTION "This object is an 'alias' name for the interface as specified by a network manager, and provides a non- volatile 'handle' for the interface. On the first instantiation of an interface, the value of ifAlias associated with that interface is the zero-length string. As and when a value is written into an instance of ifAlias through a network management set operation, then the agent must retain the supplied value in the ifAlias instance associated with the same interface for as long as that interface remains instantiated, including across all re- initializations/reboots of the network management system, including those which result in a change of the interface's ifIndex value. An example of the value which a network manager might store in this object for a WAN interface is the (Telco's) circuit number/identifier of the interface. Some agents may support write-access only for interfaces having particular values of ifType. An agent which supports write access to this object is required to keep the value in non-volatile storage, but it may limit the length of new values depending on how much storage is already occupied by the current values for other interfaces." ::= { ifXEntry 18 } ifCounterDiscontinuityTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime on the most recent occasion at which any one or more of this interface's counters suffered a discontinuity. The relevant counters are the specific instances associated with this interface of any Counter32 or Counter64 object contained in the ifTable or ifXTable. If no such discontinuities have occurred since the last re-initialization of the local management subsystem, then this object contains a zero value." ::= { ifXEntry 19 } -- The Interface Stack Group -- -- Implementation of this group is mandatory for all systems -- ifStackTable OBJECT-TYPE SYNTAX SEQUENCE OF IfStackEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The table containing information on the relationships between the multiple sub-layers of network interfaces. In particular, it contains information on which sub- layers run 'on top of' which other sub-layers, where each sub-layer corresponds to a conceptual row in the ifTable. For example, when the sub-layer with ifIndex value x runs over the sub-layer with ifIndex value y, then this table contains: ifStackStatus.x.y=active For each ifIndex value, I, which identifies an active interface, there are always at least two instantiated rows in this table associated with I. For one of these rows, I is the value of ifStackHigherLayer; for the other, I is the value of ifStackLowerLayer. (If I is not involved in multiplexing, then these are the only two rows associated with I.) For example, two rows exist even for an interface which has no others stacked on top or below it: ifStackStatus.0.x=active ifStackStatus.x.0=active " ::= { ifMIBObjects 2 } ifStackEntry OBJECT-TYPE SYNTAX IfStackEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information on a particular relationship between two sub-layers, specifying that one sub-layer runs on 'top' of the other sub-layer. Each sub-layer corresponds to a conceptual row in the ifTable." INDEX { ifStackHigherLayer, ifStackLowerLayer } ::= { ifStackTable 1 } IfStackEntry ::= SEQUENCE { ifStackHigherLayer Integer32, ifStackLowerLayer Integer32, ifStackStatus RowStatus } ifStackHigherLayer OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS not-accessible STATUS current DESCRIPTION "The value of ifIndex corresponding to the higher sub-layer of the relationship, i.e., the sub-layer which runs on 'top' of the sub-layer identified by the corresponding instance of ifStackLowerLayer. If there is no higher sub-layer (below the internetwork layer), then this object has the value 0." ::= { ifStackEntry 1 } ifStackLowerLayer OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS not-accessible STATUS current DESCRIPTION "The value of ifIndex corresponding to the lower sub- layer of the relationship, i.e., the sub-layer which runs 'below' the sub-layer identified by the corresponding instance of ifStackHigherLayer. If there is no lower sub-layer, then this object has the value 0." ::= { ifStackEntry 2 } ifStackStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "The status of the relationship between two sub- layers. Changing the value of this object from 'active' to 'notInService' or 'destroy' will likely have consequences up and down the interface stack. Thus, write access to this object is likely to be inappropriate for some types of interfaces, and many implementations will choose not to support write- access for any type of interface." ::= { ifStackEntry 3 } ifStackLastChange OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUpTime at the time of the last change of the (whole) interface stack. A change of the interface stack is defined to be any creation, deletion, or change in value of any instance of ifStackStatus. If the interface stack has been unchanged since the last re-initialization of the local network management subsystem, then this object contains a zero value." ::= { ifMIBObjects 6 } -- Generic Receive Address Table -- -- This group of objects is mandatory for all types of -- interfaces which can receive packets/frames addressed to -- more than one address. -- -- This table replaces the ifExtnsRcvAddr table. The main -- difference is that this table makes use of the RowStatus -- textual convention, while ifExtnsRcvAddr did not. ifRcvAddressTable OBJECT-TYPE SYNTAX SEQUENCE OF IfRcvAddressEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This table contains an entry for each address (broadcast, multicast, or uni-cast) for which the system will receive packets/frames on a particular interface, except as follows: - for an interface operating in promiscuous mode, entries are only required for those addresses for which the system would receive frames were it not operating in promiscuous mode. - for 802.5 functional addresses, only one entry is required, for the address which has the functional address bit ANDed with the bit mask of all functional addresses for which the interface will accept frames. A system is normally able to use any unicast address which corresponds to an entry in this table as a source address." ::= { ifMIBObjects 4 } ifRcvAddressEntry OBJECT-TYPE SYNTAX IfRcvAddressEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of objects identifying an address for which the system will accept packets/frames on the particular interface identified by the index value ifIndex." INDEX { ifIndex, ifRcvAddressAddress } ::= { ifRcvAddressTable 1 } IfRcvAddressEntry ::= SEQUENCE { ifRcvAddressAddress PhysAddress, ifRcvAddressStatus RowStatus, ifRcvAddressType INTEGER } ifRcvAddressAddress OBJECT-TYPE SYNTAX PhysAddress MAX-ACCESS not-accessible STATUS current DESCRIPTION "An address for which the system will accept packets/frames on this entry's interface." ::= { ifRcvAddressEntry 1 } ifRcvAddressStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object is used to create and delete rows in the ifRcvAddressTable." ::= { ifRcvAddressEntry 2 } ifRcvAddressType OBJECT-TYPE SYNTAX INTEGER { other(1), volatile(2), nonVolatile(3) } MAX-ACCESS read-create STATUS current DESCRIPTION "This object has the value nonVolatile(3) for those entries in the table which are valid and will not be deleted by the next restart of the managed system. Entries having the value volatile(2) are valid and exist, but have not been saved, so that will not exist after the next restart of the managed system. Entries having the value other(1) are valid and exist but are not classified as to whether they will continue to exist after the next restart." DEFVAL { volatile } ::= { ifRcvAddressEntry 3 } -- definition of interface-related traps. linkDown NOTIFICATION-TYPE OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } STATUS current DESCRIPTION "A linkDown trap signifies that the SNMPv2 entity, acting in an agent role, has detected that the ifOperStatus object for one of its communication links is about to enter the down state from some other state (but not from the notPresent state). This other state is indicated by the included value of ifOperStatus." ::= { snmpTraps 3 } linkUp NOTIFICATION-TYPE OBJECTS { ifIndex, ifAdminStatus, ifOperStatus } STATUS current DESCRIPTION "A linkDown trap signifies that the SNMPv2 entity, acting in an agent role, has detected that the ifOperStatus object for one of its communication links left the down state and transitioned into some other state (but not into the notPresent state). This other state is indicated by the included value of ifOperStatus." ::= { snmpTraps 4 } -- conformance information ifConformance OBJECT IDENTIFIER ::= { ifMIB 2 } ifGroups OBJECT IDENTIFIER ::= { ifConformance 1 } ifCompliances OBJECT IDENTIFIER ::= { ifConformance 2 } -- compliance statements ifCompliance2 MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMPv2 entities which have network interfaces." MODULE -- this module MANDATORY-GROUPS { ifGeneralInformationGroup, ifStackGroup2, ifCounterDiscontinuityGroup } GROUP ifFixedLengthGroup DESCRIPTION "This group is mandatory for all network interfaces which are character-oriented or transmit data in fixed-length transmission units." GROUP ifHCFixedLengthGroup DESCRIPTION "This group is mandatory only for those network interfaces which are character-oriented or transmit data in fixed-length transmission units, and for which the value of the corresponding instance of ifSpeed is greater than 20,000,000 bits/second." GROUP ifPacketGroup DESCRIPTION "This group is mandatory for all network interfaces which are packet-oriented." GROUP ifHCPacketGroup DESCRIPTION "This group is mandatory only for those network interfaces which are packet-oriented and for which the value of the corresponding instance of ifSpeed is greater than 650,000,000 bits/second." GROUP ifRcvAddressGroup DESCRIPTION "The applicability of this group MUST be defined by the media-specific MIBs. Media-specific MIBs must define the exact meaning, use, and semantics of the addresses in this group." OBJECT ifLinkUpDownTrapEnable MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ifPromiscuousMode MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ifStackStatus SYNTAX INTEGER { active(1) } -- subset of RowStatus MIN-ACCESS read-only DESCRIPTION "Write access is not required, and only one of the six enumerated values for the RowStatus textual convention need be supported, specifically: active(1)." OBJECT ifAdminStatus SYNTAX INTEGER { up(1), down(2) } MIN-ACCESS read-only DESCRIPTION "Write access is not required, nor is support for the value testing(3)." OBJECT ifAlias MIN-ACCESS read-only DESCRIPTION "Write access is not required." ::= { ifCompliances 2 } -- units of conformance ifGeneralInformationGroup OBJECT-GROUP OBJECTS { ifIndex, ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus, ifLastChange, ifLinkUpDownTrapEnable, ifConnectorPresent, ifHighSpeed, ifName, ifNumber, ifAlias, ifTableLastChange } STATUS current DESCRIPTION "A collection of objects providing information applicable to all network interfaces." ::= { ifGroups 10 } -- the following five groups are mutually exclusive; at most -- one of these groups is implemented for any interface ifFixedLengthGroup OBJECT-GROUP OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, ifOutErrors } STATUS current DESCRIPTION "A collection of objects providing information specific to non-high speed (non-high speed interfaces transmit and receive at speeds less than or equal to 20,000,000 bits/second) character-oriented or fixed- length-transmission network interfaces." ::= { ifGroups 2 } ifHCFixedLengthGroup OBJECT-GROUP OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, ifOutErrors } STATUS current DESCRIPTION "A collection of objects providing information specific to high speed (greater than 20,000,000 bits/second) character-oriented or fixed-length- transmission network interfaces." ::= { ifGroups 3 } ifPacketGroup OBJECT-GROUP OBJECTS { ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } STATUS current DESCRIPTION "A collection of objects providing information specific to non-high speed (non-high speed interfaces transmit and receive at speeds less than or equal to 20,000,000 bits/second) packet-oriented network interfaces." ::= { ifGroups 4 } ifHCPacketGroup OBJECT-GROUP OBJECTS { ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } STATUS current DESCRIPTION "A collection of objects providing information specific to high speed (greater than 20,000,000 bits/second but less than or equal to 650,000,000 bits/second) packet-oriented network interfaces." ::= { ifGroups 5 } ifVHCPacketGroup OBJECT-GROUP OBJECTS { ifHCInUcastPkts, ifHCInMulticastPkts, ifHCInBroadcastPkts, ifHCOutUcastPkts, ifHCOutMulticastPkts, ifHCOutBroadcastPkts, ifHCInOctets, ifHCOutOctets, ifInOctets, ifOutOctets, ifInUnknownProtos, ifInErrors, ifOutErrors, ifMtu, ifInUcastPkts, ifInMulticastPkts, ifInBroadcastPkts, ifInDiscards, ifOutUcastPkts, ifOutMulticastPkts, ifOutBroadcastPkts, ifOutDiscards, ifPromiscuousMode } STATUS current DESCRIPTION "A collection of objects providing information specific to higher speed (greater than 650,000,000 bits/second) packet-oriented network interfaces." ::= { ifGroups 6 } ifRcvAddressGroup OBJECT-GROUP OBJECTS { ifRcvAddressStatus, ifRcvAddressType } STATUS current DESCRIPTION "A collection of objects providing information on the multiple addresses which an interface receives." ::= { ifGroups 7 } ifStackGroup2 OBJECT-GROUP OBJECTS { ifStackStatus, ifStackLastChange } STATUS current DESCRIPTION "A collection of objects providing information on the layering of MIB-II interfaces." ::= { ifGroups 11 } ifCounterDiscontinuityGroup OBJECT-GROUP OBJECTS { ifCounterDiscontinuityTime } STATUS current DESCRIPTION "A collection of objects providing information specific to interface counter discontinuities." ::= { ifGroups 13 } -- Deprecated Definitions - Objects -- -- The Interface Test Table -- -- This group of objects is optional. However, a media-specific -- MIB may make implementation of this group mandatory. -- -- This table replaces the ifExtnsTestTable -- ifTestTable OBJECT-TYPE SYNTAX SEQUENCE OF IfTestEntry MAX-ACCESS not-accessible STATUS deprecated DESCRIPTION "This table contains one entry per interface. It defines objects which allow a network manager to instruct an agent to test an interface for various faults. Tests for an interface are defined in the media-specific MIB for that interface. After invoking a test, the object ifTestResult can be read to determine the outcome. If an agent can not perform the test, ifTestResult is set to so indicate. The object ifTestCode can be used to provide further test-specific or interface-specific (or even enterprise-specific) information concerning the outcome of the test. Only one test can be in progress on each interface at any one time. If one test is in progress when another test is invoked, the second test is rejected. Some agents may reject a test when a prior test is active on another interface. Before starting a test, a manager-station must first obtain 'ownership' of the entry in the ifTestTable for the interface to be tested. This is accomplished with the ifTestId and ifTestStatus objects as follows: try_again: get (ifTestId, ifTestStatus) while (ifTestStatus != notInUse) /* * Loop while a test is running or some other * manager is configuring a test. */ short delay get (ifTestId, ifTestStatus) } /* * Is not being used right now -- let's compete * to see who gets it. */ lock_value = ifTestId if ( set(ifTestId = lock_value, ifTestStatus = inUse, ifTestOwner = 'my-IP-address') == FAILURE) /* * Another manager got the ifTestEntry -- go * try again */ goto try_again; /* * I have the lock */ set up any test parameters. /* * This starts the test */ set(ifTestType = test_to_run); wait for test completion by polling ifTestResult when test completes, agent sets ifTestResult agent also sets ifTestStatus = 'notInUse' retrieve any additional test results, and ifTestId if (ifTestId == lock_value+1) results are valid A manager station first retrieves the value of the appropriate ifTestId and ifTestStatus objects, periodically repeating the retrieval if necessary, until the value of ifTestStatus is 'notInUse'. The manager station then tries to set the same ifTestId object to the value it just retrieved, the same ifTestStatus object to 'inUse', and the corresponding ifTestOwner object to a value indicating itself. If the set operation succeeds then the manager has obtained ownership of the ifTestEntry, and the value of the ifTestId object is incremented by the agent (per the semantics of TestAndIncr). Failure of the set operation indicates that some other manager has obtained ownership of the ifTestEntry. Once ownership is obtained, any test parameters can be setup, and then the test is initiated by setting ifTestType. On completion of the test, the agent sets ifTestStatus to 'notInUse'. Once this occurs, the manager can retrieve the results. In the (rare) event that the invocation of tests by two network managers were to overlap, then there would be a possibility that the first test's results might be overwritten by the second test's results prior to the first results being read. This unlikely circumstance can be detected by a network manager retrieving ifTestId at the same time as retrieving the test results, and ensuring that the results are for the desired request. If ifTestType is not set within an abnormally long period of time after ownership is obtained, the agent should time-out the manager, and reset the value of the ifTestStatus object back to 'notInUse'. It is suggested that this time-out period be 5 minutes. In general, a management station must not retransmit a request to invoke a test for which it does not receive a response; instead, it properly inspects an agent's MIB to determine if the invocation was successful. Only if the invocation was unsuccessful, is the invocation request retransmitted. Some tests may require the interface to be taken off- line in order to execute them, or may even require the agent to reboot after completion of the test. In these circumstances, communication with the management station invoking the test may be lost until after completion of the test. An agent is not required to support such tests. However, if such tests are supported, then the agent should make every effort to transmit a response to the request which invoked the test prior to losing communication. When the agent is restored to normal service, the results of the test are properly made available in the appropriate objects. Note that this requires that the ifIndex value assigned to an interface must be unchanged even if the test causes a reboot. An agent must reject any test for which it cannot, perhaps due to resource constraints, make available at least the minimum amount of information after that test completes." ::= { ifMIBObjects 3 } ifTestEntry OBJECT-TYPE SYNTAX IfTestEntry MAX-ACCESS not-accessible STATUS deprecated DESCRIPTION "An entry containing objects for invoking tests on an interface." AUGMENTS { ifEntry } ::= { ifTestTable 1 } IfTestEntry ::= SEQUENCE { ifTestId TestAndIncr, ifTestStatus INTEGER, ifTestType AutonomousType, ifTestResult INTEGER, ifTestCode OBJECT IDENTIFIER, ifTestOwner OwnerString } ifTestId OBJECT-TYPE SYNTAX TestAndIncr MAX-ACCESS read-write STATUS deprecated DESCRIPTION "This object identifies the current invocation of the interface's test." ::= { ifTestEntry 1 } ifTestStatus OBJECT-TYPE SYNTAX INTEGER { notInUse(1), inUse(2) } MAX-ACCESS read-write STATUS deprecated DESCRIPTION "This object indicates whether or not some manager currently has the necessary 'ownership' required to invoke a test on this interface. A write to this object is only successful when it changes its value from 'notInUse(1)' to 'inUse(2)'. After completion of a test, the agent resets the value back to 'notInUse(1)'." ::= { ifTestEntry 2 } ifTestType OBJECT-TYPE SYNTAX AutonomousType MAX-ACCESS read-write STATUS deprecated DESCRIPTION "A control variable used to start and stop operator- initiated interface tests. Most OBJECT IDENTIFIER values assigned to tests are defined elsewhere, in association with specific types of interface. However, this document assigns a value for a full- duplex loopback test, and defines the special meanings of the subject identifier: noTest OBJECT IDENTIFIER ::= { 0 0 } When the value noTest is written to this object, no action is taken unless a test is in progress, in which case the test is aborted. Writing any other value to this object is only valid when no test is currently in progress, in which case the indicated test is initiated. When read, this object always returns the most recent value that ifTestType was set to. If it has not been set since the last initialization of the network management subsystem on the agent, a value of noTest is returned." ::= { ifTestEntry 3 } ifTestResult OBJECT-TYPE SYNTAX INTEGER { none(1), -- no test yet requested success(2), inProgress(3), notSupported(4), unAbleToRun(5), -- due to state of system aborted(6), failed(7) } MAX-ACCESS read-only STATUS deprecated DESCRIPTION "This object contains the result of the most recently requested test, or the value none(1) if no tests have been requested since the last reset. Note that this facility provides no provision for saving the results of one test when starting another, as could be required if used by multiple managers concurrently." ::= { ifTestEntry 4 } ifTestCode OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS deprecated DESCRIPTION "This object contains a code which contains more specific information on the test result, for example an error-code after a failed test. Error codes and other values this object may take are specific to the type of interface and/or test. The value may have the semantics of either the AutonomousType or InstancePointer textual conventions as defined in RFC 1903. The identifier: testCodeUnknown OBJECT IDENTIFIER ::= { 0 0 } is defined for use if no additional result code is available." ::= { ifTestEntry 5 } ifTestOwner OBJECT-TYPE SYNTAX OwnerString MAX-ACCESS read-write STATUS deprecated DESCRIPTION "The entity which currently has the 'ownership' required to invoke a test on this interface." ::= { ifTestEntry 6 } -- Deprecated Definitions - Groups ifGeneralGroup OBJECT-GROUP OBJECTS { ifDescr, ifType, ifSpeed, ifPhysAddress, ifAdminStatus, ifOperStatus, ifLastChange, ifLinkUpDownTrapEnable, ifConnectorPresent, ifHighSpeed, ifName } STATUS deprecated DESCRIPTION "A collection of objects deprecated in favour of ifGeneralInformationGroup." ::= { ifGroups 1 } ifTestGroup OBJECT-GROUP OBJECTS { ifTestId, ifTestStatus, ifTestType, ifTestResult, ifTestCode, ifTestOwner } STATUS deprecated DESCRIPTION "A collection of objects providing the ability to invoke tests on an interface." ::= { ifGroups 8 } ifStackGroup OBJECT-GROUP OBJECTS { ifStackStatus } STATUS deprecated DESCRIPTION "The previous collection of objects providing information on the layering of MIB-II interfaces." ::= { ifGroups 9 } ifOldObjectsGroup OBJECT-GROUP OBJECTS { ifInNUcastPkts, ifOutNUcastPkts, ifOutQLen, ifSpecific } STATUS deprecated DESCRIPTION "The collection of objects deprecated from the original MIB-II interfaces group." ::= { ifGroups 12 } -- Deprecated Definitions - Compliance ifCompliance MODULE-COMPLIANCE STATUS deprecated DESCRIPTION "The previous compliance statement for SNMPv2 entities which have network interfaces." MODULE -- this module MANDATORY-GROUPS { ifGeneralGroup, ifStackGroup } GROUP ifFixedLengthGroup DESCRIPTION "This group is mandatory for all network interfaces which are character-oriented or transmit data in fixed-length transmission units." GROUP ifHCFixedLengthGroup DESCRIPTION "This group is mandatory only for those network interfaces which are character-oriented or transmit data in fixed-length transmission units, and for which the value of the corresponding instance of ifSpeed is greater than 20,000,000 bits/second." GROUP ifPacketGroup DESCRIPTION "This group is mandatory for all network interfaces which are packet-oriented." GROUP ifHCPacketGroup DESCRIPTION "This group is mandatory only for those network interfaces which are packet-oriented and for which the value of the corresponding instance of ifSpeed is greater than 650,000,000 bits/second." GROUP ifTestGroup DESCRIPTION "This group is optional. Media-specific MIBs which require interface tests are strongly encouraged to use this group for invoking tests and reporting results. A medium specific MIB which has mandatory tests may make implementation of this group mandatory." GROUP ifRcvAddressGroup DESCRIPTION "The applicability of this group MUST be defined by the media-specific MIBs. Media-specific MIBs must define the exact meaning, use, and semantics of the addresses in this group." OBJECT ifLinkUpDownTrapEnable MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ifPromiscuousMode MIN-ACCESS read-only DESCRIPTION "Write access is not required." OBJECT ifStackStatus SYNTAX INTEGER { active(1) } -- subset of RowStatus MIN-ACCESS read-only DESCRIPTION "Write access is not required, and only one of the six enumerated values for the RowStatus textual convention need be supported, specifically: active(1)." OBJECT ifAdminStatus SYNTAX INTEGER { up(1), down(2) } MIN-ACCESS read-only DESCRIPTION "Write access is not required, nor is support for the value testing(3)." ::= { ifCompliances 1 } END SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-SMI0100644000175000017500000002140407435074233016655 0ustar jdivejdive-- extracted from rfc2578.txt SNMPv2-SMI DEFINITIONS ::= BEGIN -- the path to the root org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1 dod OBJECT IDENTIFIER ::= { org 6 } internet OBJECT IDENTIFIER ::= { dod 1 } directory OBJECT IDENTIFIER ::= { internet 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } security OBJECT IDENTIFIER ::= { internet 5 } snmpV2 OBJECT IDENTIFIER ::= { internet 6 } -- transport domains snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 } -- transport proxies snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 } -- module identities snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 } -- Extended UTCTime, to allow dates with four-digit years -- (Note that this definition of ExtUTCTime is not to be IMPORTed -- by MIB modules.) ExtUTCTime ::= OCTET STRING(SIZE(11 | 13)) -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ -- where: YY - last two digits of year (only years -- between 1900-1999) -- YYYY - last four digits of the year (any year) -- MM - month (01 through 12) -- DD - day of month (01 through 31) -- HH - hours (00 through 23) -- MM - minutes (00 through 59) -- Z - denotes GMT (the ASCII character Z) -- -- For example, "9502192015Z" and "199502192015Z" represent -- 8:15pm GMT on 19 February 1995. Years after 1999 must use -- the four digit year format. Years 1900-1999 may use the -- two or four digit format. -- definitions for information modules MODULE-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "LAST-UPDATED" value(Update ExtUTCTime) "ORGANIZATION" Text "CONTACT-INFO" Text "DESCRIPTION" Text RevisionPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) RevisionPart ::= Revisions | empty Revisions ::= Revision | Revisions Revision Revision ::= "REVISION" value(Update ExtUTCTime) "DESCRIPTION" Text -- a character string as defined in section 3.1.1 Text ::= value(IA5String) END OBJECT-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in section 3.1.1 Text ::= value(IA5String) END -- names of objects -- (Note that these definitions of ObjectName and NotificationName -- are not to be IMPORTed by MIB modules.) ObjectName ::= OBJECT IDENTIFIER NotificationName ::= OBJECT IDENTIFIER -- syntax of objects -- the "base types" defined here are: -- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER -- 8 application-defined types: Integer32, IpAddress, Counter32, -- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64 ObjectSyntax ::= CHOICE { simple SimpleSyntax, -- note that SEQUENCEs for conceptual tables and -- rows are not mentioned here... application-wide ApplicationSyntax } -- built-in ASN.1 types SimpleSyntax ::= CHOICE { -- INTEGERs with a more restrictive range -- may also be used integer-value -- includes Integer32 INTEGER (-2147483648..2147483647), -- OCTET STRINGs with a more restrictive size -- may also be used string-value OCTET STRING (SIZE (0..65535)), objectID-value OBJECT IDENTIFIER } -- indistinguishable from INTEGER, but never needs more than -- 32-bits for a two's complement representation Integer32 ::= INTEGER (-2147483648..2147483647) -- application-wide types ApplicationSyntax ::= CHOICE { ipAddress-value IpAddress, counter-value Counter32, timeticks-value TimeTicks, arbitrary-value Opaque, big-counter-value Counter64, unsigned-integer-value -- includes Gauge32 Unsigned32 } -- in network-byte order -- (this is a tagged type for historical reasons) IpAddress ::= [APPLICATION 0] IMPLICIT OCTET STRING (SIZE (4)) -- this wraps Counter32 ::= [APPLICATION 1] IMPLICIT INTEGER (0..4294967295) -- this doesn't wrap Gauge32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- an unsigned 32-bit quantity -- indistinguishable from Gauge32 Unsigned32 ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) -- hundredths of seconds since an epoch TimeTicks ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) -- for backward-compatibility only Opaque ::= [APPLICATION 4] IMPLICIT OCTET STRING -- for counters that wrap in less than one hour with only 32 bits Counter64 ::= [APPLICATION 6] IMPLICIT INTEGER (0..18446744073709551615) -- definition for objects OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access "STATUS" Status "DESCRIPTION" Text ReferPart IndexPart DefValPart VALUE NOTATION ::= value(VALUE ObjectName) Syntax ::= -- Must be one of the following: -- a base type (or its refinement), -- a textual convention (or its refinement), or -- a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBits ::= NamedBit | NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative UnitsPart ::= "UNITS" Text | empty Access ::= "not-accessible" | "accessible-for-notify" | "read-only" | "read-write" | "read-create" Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty IndexPart ::= "INDEX" "{" IndexTypes "}" | "AUGMENTS" "{" Entry "}" | empty IndexTypes ::= IndexType | IndexTypes "," IndexType IndexType ::= "IMPLIED" Index | Index Index ::= -- use the SYNTAX value of the -- correspondent OBJECT-TYPE invocation value(ObjectName) Entry ::= -- use the INDEX value of the -- correspondent OBJECT-TYPE invocation value(ObjectName) DefValPart ::= "DEFVAL" "{" Defvalue "}" | empty Defvalue ::= -- must be valid for the type specified in -- SYNTAX clause of same OBJECT-TYPE macro value(ObjectSyntax) | "{" BitsValue "}" BitsValue ::= BitNames | empty BitNames ::= BitName | BitNames "," BitName BitName ::= identifier -- a character string as defined in section 3.1.1 Text ::= value(IA5String) END -- definitions for notifications NOTIFICATION-TYPE MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE NotificationName) ObjectsPart ::= "OBJECTS" "{" Objects "}" | empty Objects ::= Object | Objects "," Object Object ::= value(ObjectName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in section 3.1.1 Text ::= value(IA5String) END -- definitions of administrative identifiers zeroDotZero OBJECT-IDENTITY STATUS current DESCRIPTION "A value used for null identifiers." ::= { 0 0 } END SNMP-MIB-Compiler-0.06.orig/mibs/RFC1155-SMI0100644000175000017500000001004407435074233016554 0ustar jdivejdive-- extracted from rfc1155.txt RFC1155-SMI DEFINITIONS ::= BEGIN EXPORTS -- EVERYTHING internet, directory, mgmt, experimental, private, enterprises, OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax, ApplicationSyntax, NetworkAddress, IpAddress, Counter, Gauge, TimeTicks, Opaque; -- the path to the root internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } directory OBJECT IDENTIFIER ::= { internet 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } -- definition of object types OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax) "ACCESS" Access "STATUS" Status VALUE NOTATION ::= value (VALUE ObjectName) Access ::= "read-only" | "read-write" | "write-only" | "not-accessible" Status ::= "mandatory" | "optional" | "obsolete" END -- names of objects in the MIB ObjectName ::= OBJECT IDENTIFIER -- syntax of objects in the MIB ObjectSyntax ::= CHOICE { simple SimpleSyntax, -- note that simple SEQUENCEs are not directly -- mentioned here to keep things simple (i.e., -- prevent mis-use). However, application-wide -- types which are IMPLICITly encoded simple -- SEQUENCEs may appear in the following CHOICE application-wide ApplicationSyntax } SimpleSyntax ::= CHOICE { number INTEGER, string OCTET STRING, object OBJECT IDENTIFIER, empty NULL } ApplicationSyntax ::= CHOICE { address NetworkAddress, counter Counter, gauge Gauge, ticks TimeTicks, arbitrary Opaque -- other application-wide types, as they are -- defined, will be added here } -- application-wide types NetworkAddress ::= CHOICE { internet IpAddress } IpAddress ::= [APPLICATION 0] -- in network-byte order IMPLICIT OCTET STRING (SIZE (4)) Counter ::= [APPLICATION 1] IMPLICIT INTEGER (0..4294967295) Gauge ::= [APPLICATION 2] IMPLICIT INTEGER (0..4294967295) TimeTicks ::= [APPLICATION 3] IMPLICIT INTEGER (0..4294967295) Opaque ::= [APPLICATION 4] -- arbitrary ASN.1 value, IMPLICIT OCTET STRING -- "double-wrapped" END SNMP-MIB-Compiler-0.06.orig/mibs/SIT-CTR0100644000175000017500000002103307435074233016265 0ustar jdivejdive-- file: sit-ctr.mib -- SIT-CTR DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Counter32, Counter64, Unsigned32, Opaque, enterprises FROM SNMPv2-SMI DisplayString, TimeStamp FROM SNMPv2-TC OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF; sitCtrModule MODULE-IDENTITY LAST-UPDATED "9806220000Z" ORGANIZATION "SNMPinfo" CONTACT-INFO "Email: info@snmpinfo.com" DESCRIPTION "This module defines objects that are used to test high capacity counters. This consists of objects to set the 'initial value' of counters, set the time period of counter value change, and to set the size of the counter increment. Each high capacity counter is implemented as a pair of 32-bit counters and a 64-bit counter. And additionally, there is an ASCII and Opaque representation of each 64-bit counter. Please note that the 64-bit counters are not accessible by SNMPv1 operations, and multi-lingual agents must treat objects with data type of 'Counter64' as not existing. The behavior of such agents is described in detain in RFC 2089, 'V2ToV1 Mapping SNMPv2 onto SNMPv1 within a bi-lingual SNMP agent'." ::= { sitModules 2 } siRoot OBJECT IDENTIFIER ::= { enterprises 1194 } sitRoot OBJECT IDENTIFIER ::= { siRoot 2 } sitReg OBJECT IDENTIFIER ::= { sitRoot 1 } sitModules OBJECT IDENTIFIER ::= { sitReg 1 } sitItems OBJECT IDENTIFIER ::= { sitRoot 2 } -- root for items in the Counter MIB module sitCtrMIB OBJECT IDENTIFIER ::= { sitItems 1 } -- conformance area containing group and compliance specifications sitCtrConfs OBJECT IDENTIFIER ::= { sitCtrMIB 1 } sitCtrGroups OBJECT IDENTIFIER ::= { sitCtrConfs 1 } sitCtrCompls OBJECT IDENTIFIER ::= { sitCtrConfs 2 } -- sub-tree for objects, and for each functional area sitCtrObjs OBJECT IDENTIFIER ::= { sitCtrMIB 2 } sitCtrTest1Objs OBJECT IDENTIFIER ::= { sitCtrObjs 1 } -- sub-tree for events sitCtrEvents OBJECT IDENTIFIER ::= { sitCtrMIB 3 } sitCtrEventsV2 OBJECT IDENTIFIER ::= { sitCtrEvents 0 } -- the test objects sitCtrDiscont OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The value of sysUptime when the value of objects sitCtrInitLow or sitCtrInitHigh are changed. The value is zero if the objects have not been changed." ::= { sitCtrTest1Objs 1 } sitCtrInitHigh OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The 'initial' value for the high 32 bits of the counter objects. The initial value is zero. When the value is changed, the value of the counters is changed." ::= { sitCtrTest1Objs 2 } sitCtrInitLow OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The 'initial' value for the low 32 bits of the counter objects. The initial value is zero. When the value is changed, the value of the counters is changed." ::= { sitCtrTest1Objs 3 } sitCtrPeriodLen OBJECT-TYPE SYNTAX Unsigned32(1..60) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "How often the value of counters sitCtrT1c64 and sitCtrT2c64 are updated." ::= { sitCtrTest1Objs 4 } sitCtrPeriods OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of time periods that have occurred. Note the length of a period may be changed." ::= { sitCtrTest1Objs 5 } sitCtrIncr OBJECT-TYPE SYNTAX Unsigned32(1..'ffffffff'h) MAX-ACCESS read-write STATUS current DESCRIPTION "The amount that the counter sitCtrT1c64 will be incremented each time period. The 'initial' value is '40000001'h, which will cause a 32-bit counter to rollover every fourth period." ::= { sitCtrTest1Objs 6 } sitCtrSplit1High OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The high 32-bits of a 64-bit counter, sitCtrT1c64. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 7 } sitCtrSplit1Low OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The low 32-bits of a 64-bit counter, sitCtrT1c64. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 8 } sitCtrT1c64 OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "A 64-bit counter. Every time period, the value is incremented by the value of object sitCtrIncr. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 9 } sitCtrSplit2High OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The high 32-bits of a 64-bit counter, sitCtrT2c64. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 10 } sitCtrSplit2Low OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The low 32-bits of a 64-bit counter, sitCtrT2c64. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 11 } sitCtrT2c64 OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "A 64-bit counter. Every time period, the value is incremented by 2 raised to the power of the value of object sitCtrPeriods mod 64. Thus, this counter will roll over every 64 or 65 periods. The object sitCtrDiscont has the value of sysUptime when the last discontinuity for this object occured." ::= { sitCtrTest1Objs 12 } sitCtrT1A OBJECT-TYPE SYNTAX DisplayString(SIZE(1..20)) MAX-ACCESS read-only STATUS current DESCRIPTION "The value for counter sitCtrT1c64 as an ASCII string." ::= { sitCtrTest1Objs 13 } sitCtrT1O OBJECT-TYPE SYNTAX Opaque(SIZE(4..12)) MAX-ACCESS read-only STATUS current DESCRIPTION "The value for counter sitCtrT1c64 as an OPAQUE. The value is the BER serialization of type COUNTER64 ::= [118] IMPLICIT Counter64 (Note 118 is 0x76, which is 0x30 plus 0x46. Value 0x46 is the normal tag for Counter64.) For example, the BER serialization of the value 56782 of type COUNTER64 is '9f760300ddce'h. The BER serialization of the value '9f760300ddce'h of type Opaque is '44069f760300ddce'h." ::= { sitCtrTest1Objs 14 } sitCtrT2A OBJECT-TYPE SYNTAX DisplayString(SIZE(1..20)) MAX-ACCESS read-only STATUS current DESCRIPTION "The value for counter sitCtrT2c64 as an ASCII string." ::= { sitCtrTest1Objs 15 } sitCtrT2O OBJECT-TYPE SYNTAX Opaque(SIZE(4..12)) MAX-ACCESS read-only STATUS current DESCRIPTION "The value for counter sitCtrT2c64 as an OPAQUE. The value is the BER serialization of type COUNTER64 ::= [118] IMPLICIT Counter64 (Note 118 is 0x76, which is 0x30 plus 0x46. Value 0x46 is the normal tag for Counter64.) For example, the BER serialization of the value 56782 of type COUNTER64 is '9f760300ddce'h. The BER serialization of the value '9f760300ddce'h of type Opaque is '44069f760300ddce'h." ::= { sitCtrTest1Objs 16 } -- object and event groups sitCtr1Group OBJECT-GROUP OBJECTS { sitCtrDiscont, sitCtrInitHigh, sitCtrInitLow, sitCtrPeriodLen, sitCtrPeriods, sitCtrIncr, sitCtrSplit1High, sitCtrSplit1Low, sitCtrT1c64, sitCtrSplit2High, sitCtrSplit2Low, sitCtrT2c64, sitCtrT1A, sitCtrT1O, sitCtrT2A, sitCtrT2O } STATUS current DESCRIPTION "Objects for the first test." ::= { sitCtrGroups 1 } -- compliance specifications sitCtrComplV1 MODULE-COMPLIANCE STATUS current DESCRIPTION "All objects are required." MODULE -- this module MANDATORY-GROUPS { sitCtr1Group } ::= { sitCtrCompls 1 } END SNMP-MIB-Compiler-0.06.orig/mibs/IMPLIED-MIB0100644000175000017500000000033207435074233016667 0ustar jdivejdiveIMPLIED-MIB DEFINITIONS ::= BEGIN impliedEntry OBJECT-TYPE SYNTAX impliedEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION " " INDEX { IMPLIED impliedName } ::= { impliedTable 1 } END SNMP-MIB-Compiler-0.06.orig/mibs/IANAifType-MIB0100644000175000017500000001102307435074233017474 0ustar jdivejdive-- extracted from rfc1573.txt IANAifType-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC; ianaifType MODULE-IDENTITY LAST-UPDATED "9311082155Z" ORGANIZATION "IANA" CONTACT-INFO " Internet Assigned Numbers Authority Postal: USC/Information Sciences Institute 4676 Admiralty Way, Marina del Rey, CA 90292 Tel: +1 310 822 1511 E-Mail: iana@isi.edu" DESCRIPTION "The MIB module which defines the IANAifType textual convention, and thus the enumerated values of the ifType object defined in MIB-II's ifTable." ::= { mib-2 30 } IANAifType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This data type is used as the syntax of the ifType object in the (updated) definition of MIB-II's ifTable. The definition of this textual convention with the addition of newly assigned values is published periodically by the IANA, in either the Assigned Numbers RFC, or some derivative of it specific to Internet Network Management number assignments. (The latest arrangements can be obtained by contacting the IANA.) Requests for new values should be made to IANA via email (iana@isi.edu). The relationship between the assignment of ifType values and of OIDs to particular media-specific MIBs is solely the purview of IANA and is subject to change without notice. Quite often, a media-specific MIB's OID-subtree assignment within MIB-II's 'transmission' subtree will be the same as its ifType value. However, in some circumstances this will not be the case, and implementors must not pre-assume any specific relationship between ifType values and transmission subtree OIDs." SYNTAX INTEGER { other(1), -- none of the following regular1822(2), hdh1822(3), ddnX25(4), rfc877x25(5), ethernetCsmacd(6), iso88023Csmacd(7), iso88024TokenBus(8), iso88025TokenRing(9), iso88026Man(10), starLan(11), proteon10Mbit(12), proteon80Mbit(13), hyperchannel(14), fddi(15), lapb(16), sdlc(17), ds1(18), -- DS1/E1 (RFC 1406) e1(19), -- obsolete basicISDN(20), primaryISDN(21), propPointToPointSerial(22), -- proprietary serial ppp(23), softwareLoopback(24), eon(25), -- CLNP over IP (RFC 1070) ethernet3Mbit(26), nsip(27), -- XNS over IP slip(28), -- generic SLIP ultra(29), -- ULTRA technologies ds3(30), -- T-3 sip(31), -- SMDS frameRelay(32), -- DTE only rs232(33), para(34), -- parallel-port arcnet(35), -- arcnet arcnetPlus(36), -- arcnet plus atm(37), -- ATM cells miox25(38), sonet(39), -- SONET or SDH x25ple(40), iso88022llc(41), localTalk(42), smdsDxi(43), frameRelayService(44), -- Frame relay DCE v35(45), hssi(46), hippi(47), modem(48), -- Generic modem aal5(49), -- AAL5 over ATM sonetPath(50), sonetVT(51), smdsIcip(52), -- SMDS InterCarrier Interface propVirtual(53), -- proprietary virtual/internal propMultiplexor(54) -- proprietary multiplexing } END SNMP-MIB-Compiler-0.06.orig/mibs/CLNS-MIB0100644000175000017500000007055107435074233016355 0ustar jdivejdive-- extracted from rfc1162.txt CLNS-MIB DEFINITIONS ::= BEGIN IMPORTS experimental, OBJECT-TYPE, Counter FROM RFC1155-SMI; -- new type of NetworkAddress ClnpAddress ::= [APPLICATION 5] IMPLICIT OCTET STRING (SIZE (1..21)) clns OBJECT IDENTIFIER ::= { experimental 1 } clnp OBJECT IDENTIFIER ::= { clns 1 } error OBJECT IDENTIFIER ::= { clns 2 } echo OBJECT IDENTIFIER ::= { clns 3 } es-is OBJECT IDENTIFIER ::= { clns 4 } -- the General CLNP group clnpForwarding OBJECT-TYPE SYNTAX INTEGER { is(1), -- entity is an -- intermediate system es(2) -- entity is an end system -- and does not forward pdus } ACCESS read-write STATUS mandatory ::= { clnp 1 } clnpDefaultLifeTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnp 2 } clnpInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 3 } clnpInHdrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 4 } clnpInAddrErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 5 } clnpForwPDUs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 6 } clnpInUnknownNLPs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 7 } clnpInUnknownULPs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 8 } clnpInDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 9 } clnpInDelivers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 10 } clnpOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 11 } clnpOutDiscards OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 12 } clnpOutNoRoutes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 13 } clnpReasmTimeout OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { clnp 14 } clnpReasmReqds OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 15 } clnpReasmOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 16 } clnpReasmFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 17 } clnpSegOKs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 18 } clnpSegFails OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 19 } clnpSegCreates OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 20 } clnpInOpts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 25 } clnpOutOpts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { clnp 26 } -- the CLNP Interface table clnpAddrTable OBJECT-TYPE SYNTAX SEQUENCE OF ClnpAddrEntry ACCESS not-accessible STATUS mandatory ::= { clnp 21 } clnpAddrEntry OBJECT-TYPE SYNTAX ClnpAddrEntry ACCESS not-accessible STATUS mandatory -- INDEX { clnpAdEntAddr } ::= { clnpAddrTable 1 } ClnpAddrEntry ::= SEQUENCE { clnpAdEntAddr ClnpAddress, clnpAdEntIfIndex INTEGER, clnpAdEntReasmMaxSize INTEGER (0..65535) } clnpAdEntAddr OBJECT-TYPE SYNTAX ClnpAddress ACCESS read-only STATUS mandatory ::= { clnpAddrEntry 1 } clnpAdEntIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory ::= { clnpAddrEntry 2 } clnpAdEntReasmMaxSize OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory ::= { clnpAddrEntry 3 } -- the CLNP Routing table clnpRoutingTable OBJECT-TYPE SYNTAX SEQUENCE OF ClnpRouteEntry ACCESS not-accessible STATUS mandatory ::= { clnp 22 } clnpRouteEntry OBJECT-TYPE SYNTAX ClnpRouteEntry ACCESS not-accessible STATUS mandatory -- INDEX { clnpRouteDest } ::= { clnpRoutingTable 1 } ClnpRouteEntry ::= SEQUENCE { clnpRouteDest ClnpAddress, clnpRouteIfIndex INTEGER, clnpRouteMetric1 INTEGER, clnpRouteMetric2 INTEGER, clnpRouteMetric3 INTEGER, clnpRouteMetric4 INTEGER, clnpRouteNextHop ClnpAddress, clnpRouteType INTEGER, clnpRouteProto INTEGER, clnpRouteAge INTEGER } clnpRouteDest OBJECT-TYPE SYNTAX ClnpAddress ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 1 } clnpRouteIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 2 } clnpRouteMetric1 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 3 } clnpRouteMetric2 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 4 } clnpRouteMetric3 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 5 } clnpRouteMetric4 OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 6 } clnpRouteNextHop OBJECT-TYPE SYNTAX ClnpAddress ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 7 } clnpRouteType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the -- following invalid(2), -- an invalidated -- route -- route to directly direct(3), -- connected -- (sub-)network -- route to a -- non-local remote(4) -- host/network -- /sub-network } ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 8 } clnpRouteProto OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the -- following -- non-protocol -- information -- e.g., manually local(2), -- configured entries -- set via a network netmgmt(3), -- management -- protocol -- similar to -- ipRouteProto -- but omits several -- IP-specific -- protocols is-is(9), ciscoIgrp(11), bbnSpfIgp(12), ospf(13), bgp(14) } ACCESS read-only STATUS mandatory ::= { clnpRouteEntry 9 } clnpRouteAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpRouteEntry 10 } -- the CLNP Address Translation tables clnpNetToMediaTable OBJECT-TYPE SYNTAX SEQUENCE OF ClnpNetToMediaEntry ACCESS not-accessible STATUS mandatory ::= { clnp 23 } clnpNetToMediaEntry OBJECT-TYPE SYNTAX ClnpNetToMediaEntry ACCESS not-accessible STATUS mandatory -- INDEX { clnpNetToMediaIfIndex, -- clnpNetToMediaNetAddress } ::= { clnpNetToMediaTable 1 } ClnpNetToMediaEntry ::= SEQUENCE { clnpNetToMediaIfIndex INTEGER, clnpNetToMediaPhysAddress OCTET STRING, clnpNetToMediaNetAddress ClnpAddress, clnpNetToMediaType INTEGER, clnpNetToMediaAge INTEGER, clnpNetToMediaHoldTime INTEGER } clnpNetToMediaIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 1 } clnpNetToMediaPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 2 } clnpNetToMediaNetAddress OBJECT-TYPE SYNTAX ClnpAddress ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 3 } clnpNetToMediaType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the -- following invalid(2), -- an invalidated -- mapping dynamic(3), static(4) } ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 4 } clnpNetToMediaAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 5 } clnpNetToMediaHoldTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpNetToMediaEntry 6 } clnpMediaToNetTable OBJECT-TYPE SYNTAX SEQUENCE OF ClnpMediaToNetEntry ACCESS not-accessible STATUS mandatory ::= { clnp 24 } clnpMediaToNetEntry OBJECT-TYPE SYNTAX ClnpMediaToNetEntry ACCESS not-accessible STATUS mandatory -- INDEX { clnpMediaToNetIfIndex, -- clnpMediaToNetPhysAddress } ::= { clnpMediaToNetTable 1 } ClnpMediaToNetEntry ::= SEQUENCE { clnpMediaToNetIfIndex INTEGER, clnpMediaToNetNetAddress ClnpAddress, clnpMediaToNetPhysAddress OCTET STRING, clnpMediaToNetType INTEGER, clnpMediaToNetAge INTEGER, clnpMediaToNetHoldTime INTEGER } clnpMediaToNetIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 1 } clnpMediaToNetNetAddress OBJECT-TYPE SYNTAX ClnpAddress ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 2 } clnpMediaToNetPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 3 } clnpMediaToNetType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the -- following invalid(2), -- an invalidated -- mapping dynamic(3), static(4) } ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 4 } clnpMediaToNetAge OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 5 } clnpMediaToNetHoldTime OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory ::= { clnpMediaToNetEntry 6 } -- the CLNP Error Group clnpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 1 } clnpOutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 2 } clnpInErrUnspecs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 3 } clnpInErrProcs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 4 } clnpInErrCksums OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 5 } clnpInErrCongests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 6 } clnpInErrHdrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 7 } clnpInErrSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 8 } clnpInErrIncomps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 9 } clnpInErrDups OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 10 } clnpInErrUnreachDsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 11 } clnpInErrUnknownDsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 12 } clnpInErrSRUnspecs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 13 } clnpInErrSRSyntaxes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 14 } clnpInErrSRUnkAddrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 15 } clnpInErrSRBadPaths OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 16 } clnpInErrHops OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 17 } clnpInErrHopReassms OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 18 } clnpInErrUnsOptions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 19 } clnpInErrUnsVersions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 20 } clnpInErrUnsSecurities OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 21 } clnpInErrUnsSRs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 22 } clnpInErrUnsRRs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 23 } clnpInErrInterferences OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 24 } clnpOutErrUnspecs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 25 } clnpOutErrProcs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 26 } clnpOutErrCksums OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 27 } clnpOutErrCongests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 28 } clnpOutErrHdrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 29 } clnpOutErrSegs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 30 } clnpOutErrIncomps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 31 } clnpOutErrDups OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 32 } clnpOutErrUnreachDsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 33 } clnpOutErrUnknownDsts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 34 } clnpOutErrSRUnspecs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 35 } clnpOutErrSRSyntaxes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 36 } clnpOutErrSRUnkAddrs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 37 } clnpOutErrSRBadPaths OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 38 } clnpOutErrHops OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 39 } clnpOutErrHopReassms OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 40 } clnpOutErrUnsOptions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 41 } clnpOutErrUnsVersions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 42 } clnpOutErrUnsSecurities OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 43 } clnpOutErrUnsSRs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 44 } clnpOutErrUnsRRs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 45 } clnpOutErrInterferences OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { error 46 } -- the CLNP Echo Group -- the ES-IS Group esisESHins OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 1 } esisESHouts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 2 } esisISHins OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 3 } esisISHouts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 4 } esisRDUins OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 5 } esisRDUouts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory ::= { es-is 6 } END SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-CONF0100644000175000017500000002014207435074233016750 0ustar jdivejdive-- extracted from rfc2580.txt SNMPv2-CONF DEFINITIONS ::= BEGIN IMPORTS ObjectName, NotificationName, ObjectSyntax FROM SNMPv2-SMI; -- definitions for conformance groups OBJECT-GROUP MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) ObjectsPart ::= "OBJECTS" "{" Objects "}" Objects ::= Object | Objects "," Object Object ::= value(ObjectName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in [2] Text ::= value(IA5String) END -- more definitions for conformance groups NOTIFICATION-GROUP MACRO ::= BEGIN TYPE NOTATION ::= NotificationsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) NotificationsPart ::= "NOTIFICATIONS" "{" Notifications "}" Notifications ::= Notification | Notifications "," Notification Notification ::= value(NotificationName) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty -- a character string as defined in [2] Text ::= value(IA5String) END -- definitions for compliance statements MODULE-COMPLIANCE MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "deprecated" | "obsolete" ReferPart ::= "REFERENCE" Text | empty ModulePart ::= Modules Modules ::= Module | Modules Module Module ::= -- name of module -- "MODULE" ModuleName MandatoryPart CompliancePart ModuleName ::= -- identifier must start with uppercase letter identifier ModuleIdentifier -- must not be empty unless contained -- in MIB Module | empty ModuleIdentifier ::= value(OBJECT IDENTIFIER) | empty MandatoryPart ::= "MANDATORY-GROUPS" "{" Groups "}" | empty Groups ::= Group | Groups "," Group Group ::= value(OBJECT IDENTIFIER) CompliancePart ::= Compliances | empty Compliances ::= Compliance | Compliances Compliance Compliance ::= ComplianceGroup | Object ComplianceGroup ::= "GROUP" value(OBJECT IDENTIFIER) "DESCRIPTION" Text Object ::= "OBJECT" value(ObjectName) SyntaxPart WriteSyntaxPart AccessPart "DESCRIPTION" Text -- must be a refinement for object's SYNTAX clause SyntaxPart ::= "SYNTAX" Syntax | empty -- must be a refinement for object's SYNTAX clause WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax | empty Syntax ::= -- Must be one of the following: -- a base type (or its refinement), -- a textual convention (or its refinement), or -- a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBits ::= NamedBit | NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative AccessPart ::= "MIN-ACCESS" Access | empty Access ::= "not-accessible" | "accessible-for-notify" | "read-only" | "read-write" | "read-create" -- a character string as defined in [2] Text ::= value(IA5String) END -- definitions for capabilities statements AGENT-CAPABILITIES MACRO ::= BEGIN TYPE NOTATION ::= "PRODUCT-RELEASE" Text "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(VALUE OBJECT IDENTIFIER) Status ::= "current" | "obsolete" ReferPart ::= "REFERENCE" Text | empty ModulePart ::= Modules | empty Modules ::= Module | Modules Module Module ::= -- name of module -- "SUPPORTS" ModuleName "INCLUDES" "{" Groups "}" VariationPart ModuleName ::= -- identifier must start with uppercase letter identifier ModuleIdentifier ModuleIdentifier ::= value(OBJECT IDENTIFIER) | empty Groups ::= Group | Groups "," Group Group ::= value(OBJECT IDENTIFIER) VariationPart ::= Variations | empty Variations ::= Variation | Variations Variation Variation ::= ObjectVariation | NotificationVariation NotificationVariation ::= "VARIATION" value(NotificationName) AccessPart "DESCRIPTION" Text ObjectVariation ::= "VARIATION" value(ObjectName) SyntaxPart WriteSyntaxPart AccessPart CreationPart DefValPart "DESCRIPTION" Text -- must be a refinement for object's SYNTAX clause SyntaxPart ::= "SYNTAX" Syntax | empty WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax | empty Syntax ::= -- Must be one of the following: -- a base type (or its refinement), -- a textual convention (or its refinement), or -- a BITS pseudo-type type | "BITS" "{" NamedBits "}" NamedBits ::= NamedBit | NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative AccessPart ::= "ACCESS" Access | empty Access ::= "not-implemented" -- only "not-implemented" for notifications | "accessible-for-notify" | "read-only" | "read-write" | "read-create" -- following is for backward-compatibility only | "write-only" CreationPart ::= "CREATION-REQUIRES" "{" Cells "}" | empty Cells ::= Cell | Cells "," Cell Cell ::= value(ObjectName) DefValPart ::= "DEFVAL" "{" Defvalue "}" | empty Defvalue ::= -- must be valid for the object's syntax -- in this macro's SYNTAX clause, if present, -- or if not, in object's OBJECT-TYPE macro value(ObjectSyntax) | "{" BitsValue "}" BitsValue ::= BitNames | empty BitNames ::= BitName | BitNames "," BitName BitName ::= identifier -- a character string as defined in [2] Text ::= value(IA5String) END END SNMP-MIB-Compiler-0.06.orig/mibs/SNMPv2-PDU0100644000175000017500000000744507435074233016666 0ustar jdivejdive-- extracted from rfc1905.txt SNMPv2-PDU DEFINITIONS ::= BEGIN IMPORTS ObjectName, ObjectSyntax, Integer32 FROM SNMPv2-SMI; -- protocol data units PDUs ::= CHOICE { get-request GetRequest-PDU, get-next-request GetNextRequest-PDU, get-bulk-request GetBulkRequest-PDU, response Response-PDU, set-request SetRequest-PDU, inform-request InformRequest-PDU, snmpV2-trap SNMPv2-Trap-PDU, report Report-PDU -- , } -- PDUs GetRequest-PDU ::= [0] IMPLICIT PDU GetNextRequest-PDU ::= [1] IMPLICIT PDU Response-PDU ::= [2] IMPLICIT PDU SetRequest-PDU ::= [3] IMPLICIT PDU -- [4] is obsolete GetBulkRequest-PDU ::= [5] IMPLICIT BulkPDU InformRequest-PDU ::= [6] IMPLICIT PDU SNMPv2-Trap-PDU ::= [7] IMPLICIT PDU -- Usage and precise semantics of Report-PDU are not presently -- defined. Any SNMP administrative framework making use of -- this PDU must define its usage and semantics. Report-PDU ::= [8] IMPLICIT PDU max-bindings INTEGER ::= 2147483647 PDU ::= SEQUENCE { request-id Integer32, error-status -- sometimes ignored INTEGER { noError(0), tooBig(1), noSuchName(2), -- for proxy compatibility badValue(3), -- for proxy compatibility readOnly(4), -- for proxy compatibility genErr(5), noAccess(6), wrongType(7), wrongLength(8), wrongEncoding(9), wrongValue(10), noCreation(11), inconsistentValue(12), resourceUnavailable(13), commitFailed(14), undoFailed(15), authorizationError(16), notWritable(17), inconsistentName(18) }, error-index -- sometimes ignored INTEGER (0..max-bindings), variable-bindings -- values are sometimes ignored VarBindList } BulkPDU ::= -- MUST be identical in SEQUENCE { -- structure to PDU request-id Integer32, non-repeaters INTEGER (0..max-bindings), max-repetitions INTEGER (0..max-bindings), variable-bindings -- values are ignored VarBindList } -- variable binding VarBind ::= SEQUENCE { name ObjectName, CHOICE { value ObjectSyntax, unSpecified -- in retrieval requests NULL, -- exceptions in responses noSuchObject[0] IMPLICIT NULL, noSuchInstance[1] IMPLICIT NULL, endOfMibView[2] IMPLICIT NULL } } -- variable-binding list VarBindList ::= SEQUENCE (SIZE (0..max-bindings)) OF VarBind END SNMP-MIB-Compiler-0.06.orig/mibs/SIT-NT0100644000175000017500000001727407435074233016172 0ustar jdivejdive-- file: sit-nt.mib -- SIT-NT DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Opaque, enterprises FROM SNMPv2-SMI TEXTUAL-CONVENTION, DisplayString FROM SNMPv2-TC OBJECT-GROUP, MODULE-COMPLIANCE FROM SNMPv2-CONF; sitNtModule MODULE-IDENTITY LAST-UPDATED "9805060000Z" ORGANIZATION "SNMPinfo" CONTACT-INFO "Email: info@snmpinfo.com" DESCRIPTION "This module defines objects to test out the following new types: Unsigned64 Int64 Float Double" ::= { sitModules 3 } siRoot OBJECT IDENTIFIER ::= { enterprises 1194 } sitRoot OBJECT IDENTIFIER ::= { siRoot 2 } sitReg OBJECT IDENTIFIER ::= { sitRoot 1 } sitModules OBJECT IDENTIFIER ::= { sitReg 1 } sitItems OBJECT IDENTIFIER ::= { sitRoot 2 } -- root for items in the Counter MIB module sitNtMIB OBJECT IDENTIFIER ::= { sitItems 2 } -- conformance area containing group and compliance specifications sitNtConfs OBJECT IDENTIFIER ::= { sitNtMIB 1 } sitNtGroups OBJECT IDENTIFIER ::= { sitNtConfs 1 } sitNtCompls OBJECT IDENTIFIER ::= { sitNtConfs 2 } -- sub-tree for objects, and for each functional area sitNtObjs OBJECT IDENTIFIER ::= { sitNtMIB 2 } sitNtTest1Objs OBJECT IDENTIFIER ::= { sitNtObjs 1 } -- sub-tree for events sitNtEvents OBJECT IDENTIFIER ::= { sitNtMIB 3 } sitNtEventsV2 OBJECT IDENTIFIER ::= { sitNtEvents 0 } -- Some TCs for the Types Integer64 ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A 64-bit signed integer. The value is restricted to the BER serialization of the following ASN.1 type: I64TYPE ::= [122] IMPLICIT I64Type (note: the value 122 is the sum of '30'h and '4a'h) The BER serialization of the length for values of this type must use the definite length, short encoding form. For example, the BER serialization of value 129 of type I64TYPE is '9f7a020081'h. (The tag is '9f7a'h; the length is '02'h; and the value is '0081'h.) The BER serialization of value '9f7a020081'h of data type Opaque is '44059f7a020081'h. (The tag is '44'h; the length is '05'h; and the value is '9f7a020081'h.) Also for example, the BER serialization of value -129 of type I64TYPE is '9f7a02ff7f'h. (The tag is '9f7a'h; the length is '02'h; and the value is 'ff7f'h.) The BER serialization of value '9f7a02ff7f'h of data type Opaque is '44059f7a02ff7f'h. (The tag is '44'h; the length is '05'h; and the value is '9f7a02ff7f'h.)" SYNTAX Opaque (SIZE(4..11)) Unsigned64 ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A 64-bit unsigned signed integer. The value is restricted to the BER serialization of the following ASN.1 type: U64TYPE ::= [123] IMPLICIT U64Type (note: the value 123 is the sum of '30'h and '4b'h) The BER serialization of the length for values of this type must use the definite length, short encoding form. For example, the BER serialization of value 129 of type U64TYPE is '9f7b020081'h. (The tag is '9f7b'h; the length is '02'h; and the value is '0081'h.) The BER serialization of value '9f7b020081'h of data type Opaque is '44059f7b020081'h. (The tag is '44'h; the length is '05'h; and the value is '9f7b020081'h.)" SYNTAX Opaque (SIZE(4..12)) Float ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A single precision floating-point number. The semantics and encoding are identical for type 'single' defined in IEEE Standard for Binary Floating-Point, ANSI/IEEE Std 754-1985. The value is restricted to the BER serialization of the following ASN.1 type: FLOATTYPE ::= [120] IMPLICIT FloatType (note: the value 120 is the sum of '30'h and '48'h) The BER serialization of the length for values of this type must use the definite length, short encoding form. For example, the BER serialization of value 123 of type FLOATTYPE is '9f780442f60000'h. (The tag is '9f78'h; the length is '04'h; and the value is '42f60000'h.) The BER serialization of value '9f780442f60000'h of data type Opaque is '44079f780442f60000'h. (The tag is '44'h; the length is '07'h; and the value is '9f780442f60000'h." SYNTAX Opaque (SIZE(7)) Double ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A double precision floating-point number. The semantics and encoding are identical for type 'double' defined in IEEE Standard for Binary Floating-Point, ANSI/IEEE Std 754-1985. The value is restricted to the BER serialization of the following ASN.1 type: DOUBLETYPE ::= [121] IMPLICIT DoubleType (note: the value 121 is the sum of '30'h and '49'h) The BER serialization of the length for values of this type must use the definite length, short encoding form. For example, the BER serialization of value 123 of type DOUBLETYPE is '9f7908405ec00000000000'h. (The tag is '9f79'h; the length is '08'h; and the value is '405ec00000000000'h.) The BER serialization of value '9f7908405ec00000000000'h of data type Opaque is '440b9f7908405ec00000000000'h. (The tag is '44'h; the length is '07'h; and the value is '9f7908405ec00000000000'h.)" SYNTAX Opaque (SIZE(11)) -- the test objects sitNtI64 OBJECT-TYPE SYNTAX Integer64 MAX-ACCESS read-write STATUS current DESCRIPTION "A test object that is a 64-bit signed integer." ::= { sitNtTest1Objs 1 } sitNtI64A OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The value of object sitNtI64 in ASCII." ::= { sitNtTest1Objs 2 } sitNtU64 OBJECT-TYPE SYNTAX Unsigned64 MAX-ACCESS read-write STATUS current DESCRIPTION "A test object that is a 64-bit unsigned integer." ::= { sitNtTest1Objs 3 } sitNtU64A OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The value of object sitNtU64 in ASCII." ::= { sitNtTest1Objs 4 } sitNtFloat OBJECT-TYPE SYNTAX Float MAX-ACCESS read-write STATUS current DESCRIPTION "A test object that is a 'single' floating point number." ::= { sitNtTest1Objs 5 } sitNtFloatA OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The value of object sitNtFloat in ASCII." ::= { sitNtTest1Objs 6 } sitNtDouble OBJECT-TYPE SYNTAX Double MAX-ACCESS read-write STATUS current DESCRIPTION "A test object that is a 'double' floating point number." ::= { sitNtTest1Objs 7 } sitNtDoubleA OBJECT-TYPE SYNTAX DisplayString MAX-ACCESS read-only STATUS current DESCRIPTION "The value of object sitNtDouble in ASCII." ::= { sitNtTest1Objs 8 } -- object and event groups sitNt1Group OBJECT-GROUP OBJECTS { sitNtI64, sitNtI64A, sitNtU64, sitNtU64A, sitNtFloat, sitNtFloatA, sitNtDouble, sitNtDoubleA } STATUS current DESCRIPTION "Objects for the first test." ::= { sitNtGroups 1 } -- compliance specifications sitNtComplV1 MODULE-COMPLIANCE STATUS current DESCRIPTION "All objects are required." MODULE -- this module MANDATORY-GROUPS { sitNt1Group } ::= { sitNtCompls 1 } END SNMP-MIB-Compiler-0.06.orig/mibs/APPLETALK-MIB0100644000175000017500000040343607435074233017135 0ustar jdivejdive-- extracted from rfc1742.txt APPLETALK-MIB DEFINITIONS ::= BEGIN IMPORTS Counter, IpAddress, TimeTicks FROM RFC1155-SMI DisplayString, mib-2 FROM RFC1213-MIB OBJECT-TYPE FROM RFC-1212; -- This MIB module uses the extended OBJECT-TYPE macro as -- defined in RFC-1212. -- The following reference is used in this MIB: -- [Inside AppleTalk] -- This refers to Gursharan S. Sidhu, Richard F. Andrews, and -- Alan B. Oppenheimer, Inside AppleTalk, Second Edition, -- Addison Wesley, (1990). -- AppleTalk MIB appletalk OBJECT IDENTIFIER ::= { mib-2 13 } ATNetworkNumber ::= -- 2 octets of net number -- in network byte order OCTET STRING (SIZE (2)) DdpNodeAddress ::= -- 2 octets of net number -- in network byte order, -- 1 octet of node number OCTET STRING (SIZE (3)) DdpSocketAddress ::= -- 2 octets of net number -- in network byte order, -- 1 octet of node number, -- 1 octet of socket number -- (0..255) OCTET STRING (SIZE (4)) ATName ::= -- 0 to 32 octets of AppleTalk -- ASCII [Inside AppleTalk] OCTET STRING (SIZE (0..32)) llap OBJECT IDENTIFIER ::= { appletalk 1 } aarp OBJECT IDENTIFIER ::= { appletalk 2 } atport OBJECT IDENTIFIER ::= { appletalk 3 } ddp OBJECT IDENTIFIER ::= { appletalk 4 } rtmp OBJECT IDENTIFIER ::= { appletalk 5 } kip OBJECT IDENTIFIER ::= { appletalk 6 } zipRouter OBJECT IDENTIFIER ::= { appletalk 7 } nbp OBJECT IDENTIFIER ::= { appletalk 8 } atecho OBJECT IDENTIFIER ::= { appletalk 9 } atp OBJECT IDENTIFIER ::= { appletalk 10 } pap OBJECT IDENTIFIER ::= { appletalk 11 } asp OBJECT IDENTIFIER ::= { appletalk 12 } adsp OBJECT IDENTIFIER ::= { appletalk 13 } atportptop OBJECT IDENTIFIER ::= { appletalk 14 } rtmpStub OBJECT IDENTIFIER ::= { appletalk 16 } zipEndNode OBJECT IDENTIFIER ::= { appletalk 17 } perPort OBJECT IDENTIFIER ::= { appletalk 18 } -- The LLAP Group -- -- Implementation of this group is mandatory for all -- entities that implement LLAP -- -- Notes for the interfaces group -- -- When implementing the Interfaces Group of MIB-II, it is -- suggested that the following values be used for any -- LocalTalk interfaces: -- ifMtu: 600 -- ifSpeed: 230000 -- ifPhysAddress: the one octet node number for the -- particular interface -- -- Note also that LLAP control packets should not be -- included in the Interfaces Group packet or octet -- counters. llapTable OBJECT-TYPE SYNTAX SEQUENCE OF LlapEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The list of LLAP entries." ::= { llap 1 } llapEntry OBJECT-TYPE SYNTAX LlapEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An LLAP entry containing objects for the LocalTalk Link Access Protocol for a particular LocalTalk interface. As an example, an instance of the llapOutPkts object might be named llapOutPks.1" INDEX { llapIfIndex } ::= { llapTable 1 } LlapEntry ::= SEQUENCE { llapIfIndex INTEGER, llapInPkts Counter, llapOutPkts Counter, llapInNoHandlers Counter, llapInLengthErrors Counter, llapInErrors Counter, llapCollisions Counter, llapDefers Counter, llapNoDataErrors Counter, llapRandomCTSErrors Counter, llapFCSErrors Counter } llapIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The LLAP interface to which this entry pertains. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { llapEntry 1 } -- this object has been deprecated because it duplicates the -- sum of the MIB-II variables ifInUcastPkts and -- ifInNUcastPkts llapInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS deprecated DESCRIPTION "The total number of good data packets received on this LocalTalk interface." ::= { llapEntry 2 } -- this object has been deprecated because it duplicates the -- sum of the MIB-II variables ifOutUcastPkts and -- ifOutNUcastPkts llapOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS deprecated DESCRIPTION "The total number of data packets transmitted on this LocalTalk interface." ::= { llapEntry 3 } -- this object has been deprecated because it duplicates the -- MIB-II variable ifInUnknownProtos llapInNoHandlers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS deprecated DESCRIPTION "The total number of good packets received on this LocalTalk interface for which there was no protocol handler." ::= { llapEntry 4 } llapInLengthErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of packets received on this LocalTalk interface whose actual length did not match the length in the header." ::= { llapEntry 5 } -- this object has been deprecated because it duplicates the -- MIB-II variable ifInErrors llapInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS deprecated DESCRIPTION "The total number of packets containing errors received on this LocalTalk interface." ::= { llapEntry 6 } llapCollisions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of collisions assumed on this LocalTalk interface due to the lack of a lapCTS reply." ::= { llapEntry 7 } llapDefers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of times this LocalTalk interface deferred to other packets." ::= { llapEntry 8 } llapNoDataErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of times this LocalTalk interface received a lapRTS packet and expected a data packet, but did not receive any data packet." ::= { llapEntry 9 } llapRandomCTSErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of times this LocalTalk interface received a lapCTS packet that was not solicited by a lapRTS packet." ::= { llapEntry 10 } llapFCSErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of times this LocalTalk interface received a packet with an FCS (Frame Check Sequence) error." ::= { llapEntry 11 } -- The AARP Group -- -- Implementation of this group is mandatory for all entities -- that implement AARP aarpTable OBJECT-TYPE SYNTAX SEQUENCE OF AarpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The AppleTalk Address Translation Table contains an equivalence of AppleTalk Network Addresses to the link layer physical address." ::= { aarp 1 } aarpEntry OBJECT-TYPE SYNTAX AarpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Each entry contains one AppleTalk Network Address to physical address equivalence. As an example, an instance of the aarpPhysAddress object might be named aarpPhysAddress.1.0.80.234" INDEX { aarpIfIndex, aarpNetAddress } ::= { aarpTable 1 } AarpEntry ::= SEQUENCE { aarpIfIndex INTEGER, aarpPhysAddress OCTET STRING, aarpNetAddress DdpNodeAddress, aarpStatus INTEGER } aarpIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The interface on which this entry's equivalence is effective. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { aarpEntry 1 } aarpPhysAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory DESCRIPTION "The media-dependent physical address." ::= { aarpEntry 2 } aarpNetAddress OBJECT-TYPE SYNTAX DdpNodeAddress ACCESS read-only STATUS mandatory DESCRIPTION "The AppleTalk Network Address corresponding to the media-dependent physical address." ::= { aarpEntry 3 } aarpStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of this AARP entry. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the aarpTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant aarpStatus object." ::= { aarpEntry 4 } aarpLookups OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the AARP cache for this entity was searched." ::= { aarp 2 } aarpHits OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times an entry was searched for and found in the AARP cache for this entity." ::= { aarp 3 } -- The ATPort Group -- -- Implementation of this group is mandatory for all entities -- that implement AppleTalk ports -- -- Note that to be compliant with this group, all variables -- that have read-write access must be implemented as -- read-write. atportTable OBJECT-TYPE SYNTAX SEQUENCE OF AtportEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of AppleTalk ports for this entity." ::= { atport 1 } atportEntry OBJECT-TYPE SYNTAX AtportEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The description of one of the AppleTalk ports on this entity. As an example, an instance of the atportNetFrom object might be named atportNetFrom.2" INDEX { atportIndex } ::= { atportTable 1 } AtportEntry ::= SEQUENCE { atportIndex INTEGER, atportDescr DisplayString, atportType INTEGER, atportNetStart ATNetworkNumber, atportNetEnd ATNetworkNumber, atportNetAddress DdpNodeAddress, atportStatus INTEGER, atportNetConfig INTEGER, atportZoneConfig INTEGER, atportZoneDefault ATName, atportIfIndex INTEGER, atportNetFrom DdpNodeAddress, atportZoneFrom DdpNodeAddress, atportInPkts Counter, atportOutPkts Counter, atportHome INTEGER, atportCurrentZone ATName, atportConflictPhysAddr OCTET STRING } atportIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "A unique value for each AppleTalk port. Its value is between 1 and the total number of AppleTalk ports. The value for each port must remain constant at least from the re-initialization of the entity's network management system to the next re-initialization." ::= { atportEntry 1 } atportDescr OBJECT-TYPE SYNTAX DisplayString ACCESS read-write STATUS mandatory DESCRIPTION "A text string containing information about the port. This string is intended for presentation to a human; it must not contain anything but printable ASCII characters." ::= { atportEntry 2 } -- Several objects throughout the MIB key off of atportType to -- determine the format of OCTET STRING addresses of peers. -- The address formats are as follows: -- localtalk, ethertalk1, ethertalk2, tokentalk, iptalk, -- fdditalk, smdstalk, arctalk, and virtual take the -- format of DdpNodeAddress -- serialPPP: null OCTET STRING -- serialNonstandard: vendor specific -- aurp: see AURP MIB to determine format -- frameRelay: 32 bit DLCI in network byte order -- (OCTET STRING (SIZE (4))) -- x25: X121Address (see RFC 1382) -- ip: IP address (OCTET STRING (SIZE (4))) -- osi: NSAP (OCTET STRING (SIZE (3..20))) -- decnetIV: 6 bit area, 10 bit host in network byte order -- (OCTET STRING (SIZE (2))) -- arap: ??? -- nonAppleTalk3Com: based on ifType -- ipx: 32 bit network number in network byte order -- followed by datalink address of host -- arns: 32 bit ARNS header -- hdlc: DdpNodeAddress or null OCTET STRING atportType OBJECT-TYPE SYNTAX INTEGER { other(1), -- none of the following localtalk(2), ethertalk1(3), ethertalk2(4), tokentalk(5), iptalk(6), serialPPP(7), serialNonstandard(8), virtual(9), -- an internal interface fdditalk(10), arctalk(11), smdstalk(12), aurp(13), frameRelay(14), x25(15), ip(16), osi(17), decnetIV(18), arap(19), isdnInThePacketMode(20), nonAppleTalk3Com(21), ipx(22), arns(23), hdlc(24) } ACCESS read-write STATUS mandatory DESCRIPTION "The type of port, distinguished by the protocol immediately below DDP in the protocol stack." ::= { atportEntry 3 } atportNetStart OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-write STATUS mandatory DESCRIPTION "The first AppleTalk network address in the range configured for this port. If this port is not a native AppleTalk port, this object shall have the value of two octets of zero." ::= { atportEntry 4 } atportNetEnd OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-write STATUS mandatory DESCRIPTION "The last AppleTalk network address in the range configured for this port. If the network to which this AppleTalk port is connected is a non-extended network, or if it is not a native AppleTalk port, the value for atportNetEnd shall be two octets of zero." ::= { atportEntry 5 } atportNetAddress OBJECT-TYPE SYNTAX DdpNodeAddress ACCESS read-write STATUS mandatory DESCRIPTION "The AppleTalk network address configured for this port. In addition, this value may be used as a hint for an initial node number used during node-finding. If this port is not a native AppleTalk port, this object shall have the value of three octets of zero." ::= { atportEntry 6 } atportStatus OBJECT-TYPE SYNTAX INTEGER { routing(1), --this port is fully configured & routing unconfigured(2), off(3), invalid(4), endNode(5), -- this port is acting as an end node offDueToConflict(6), -- port is off due to -- configuration conflict other(7) -- none of the states defined above } ACCESS read-write STATUS mandatory DESCRIPTION "The configuration status of this port. Setting this object to the value invalid(4) has the effect of invalidating the corresponding entry in the atportTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant atportStatus object." ::= { atportEntry 7 } atportNetConfig OBJECT-TYPE SYNTAX INTEGER { conflictOrientedSeed(1), -- use configured network -- range even if it conflicts with another -- AppleTalk device garnered(2), -- acquire from another AppleTalk device guessed(3), -- generate a "random" network range unconfigured(4), -- no other value applies conflictAverseSeed(5), -- use configured network -- range, but don't come up if it conflicts softSeed(6) -- attempt to use configured network -- range, but use network range from another -- router if our configuration conflicts } ACCESS read-write STATUS mandatory DESCRIPTION "The status of the network information for this port. If this port is not a native AppleTalk port, this object shall have the value unconfigured(4)." ::= { atportEntry 8 } atportZoneConfig OBJECT-TYPE SYNTAX INTEGER { conflictOrientedSeed(1), -- use configured zone -- information even if it conflicts with -- another AppleTalk device garnered(2), -- acquire from another AppleTalk device guessed(3), -- generate "random" zone information unconfigured(4), -- no other value applies conflictAverseSeed(5), -- use configured zone -- information, but don't come up if it -- conflicts softSeed(6) -- attempt to use configured zone -- information, but use zone information -- from another router if our configuration -- conflicts } ACCESS read-write STATUS mandatory DESCRIPTION "The status of the zone information for this port. If this port is not a native AppleTalk port, this object shall have the value unconfigured(4)." ::= { atportEntry 9 } atportZoneDefault OBJECT-TYPE SYNTAX ATName ACCESS read-write STATUS mandatory DESCRIPTION "The name of the default zone for this port. If this port only has one zone, that zone is represented here. If this port is not a native AppleTalk port, this object shall contain an octet string of zero length. When this value is changed in a router, the router must send a zipNotify packet on the associated network." ::= { atportEntry 10 } atportIfIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The physical interface associated with this AppleTalk port. The interface identified by a particular value of this index is the same interface as identified by the same value of ifIndex." ::= { atportEntry 11 } atportNetFrom OBJECT-TYPE SYNTAX DdpNodeAddress ACCESS read-only STATUS mandatory DESCRIPTION "When atportNetConfig is set to garnered(2), this variable contains the DDP address of an entity from which the AppleTalk network number was garnered. When atportNetConfig is set to conflictOrientedSeed(1), conflictAverseSeed(5), or softSeed(6), this variable contains the DDP address of an entity which confirmed or supplied our AppleTalk network number, for example by replying to a ZIP GetNetInfo request. If atportNetConfig is set to guessed(3) or unconfigured(4), or if the entity has not received any network number confirmation, this variable should be set to three octets of zero." ::= { atportEntry 12 } atportZoneFrom OBJECT-TYPE SYNTAX DdpNodeAddress ACCESS read-only STATUS mandatory DESCRIPTION "When atportZoneConfig is set to garnered(2), this variable contains the DDP address of an entity from which the AppleTalk zone list was garnered. When atportZoneConfig is set to conflictOrientedSeed(1), conflictAverseSeed(5), or softSeed(6), this variable contains the DDP address of an entity which confirmed or supplied our AppleTalk zone information, for example by replying to a ZIP GetNetInfo request or a ZIP Query. If atportZoneConfig is set to guessed(3) or unconfigured(4), or if the entity has not received any zone confirmation, this variable should be set to three octets of zero." ::= { atportEntry 13 } atportInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of packets received by this entity on this port." ::= { atportEntry 14 } atportOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of packets transmitted by this entity on this port." ::= { atportEntry 15 } atportHome OBJECT-TYPE SYNTAX INTEGER { home(1), notHome(2) } ACCESS read-only STATUS mandatory DESCRIPTION "An indication of whether or not the entity is homed on this port, that is to say, a port on which the entity could perform NBP registrations for services that it chooses to advertise." ::= { atportEntry 16 } atportCurrentZone OBJECT-TYPE SYNTAX ATName ACCESS read-write STATUS mandatory DESCRIPTION "The current zone for the port. In general, this is the zone name in which services on this port will be registered. If this port is not a native AppleTalk port, this object shall contain an octet string of zero length. Note that modifications to this object do not affect the nbpTable." ::= { atportEntry 17 } atportConflictPhysAddr OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory DESCRIPTION "The link-layer address of a device which caused this entity to set atportStatus to offDueToConflict(6). If this address is not available, or if the entity has not set atportStatus to offDueToConflict, this object shall be a zero length OCTET STRING." ::= { atportEntry 18 } -- The atportZoneTable stores information about the zones -- associated with each port. The default zone for each -- port is stored in the port's atportZoneDefault variable; -- all other zones for the port are listed in this table. -- If a port only has one zone, it should be stored in the -- port's atportZoneDefault variable, and this table should -- be empty. -- -- One of the indexes for this table is atportZoneName. -- Even though AppleTalk zone name matches are -- case-insensitive, this table will store zone names -- regardless of case. SNMP Get, GetNext and Set operations -- are performed on these (potentially) mixed case strings -- according to the normal SNMP rules with the following -- caveat: in processing a SET request, the agent shall -- perform a case-insensitive search and a case-sensitive -- search. If the case-insensitive search matches and the -- case-sensitive search does not match, the "equivalent" -- zone name exists in another entry with a different -- capitalization and the SET request shall fail due -- to the name being inconsistent (SNMPv1 should return a -- genErr.) This insures that only one version of a zone -- name will appear in each agent, at the expense of forcing -- a management station to query using that exact name. atportZoneTable OBJECT-TYPE SYNTAX SEQUENCE OF AtportZoneEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of zone information for non-default zones on ports." ::= { atport 2 } atportZoneEntry OBJECT-TYPE SYNTAX AtportZoneEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An entry of zone information for a port. As an example, an instance of the atportZoneStatus object might be named atportZoneStatus.2.8.84.119.105.108.105.103.104.116" INDEX { atportZonePort, atportZoneName } ::= { atportZoneTable 1 } AtportZoneEntry ::= SEQUENCE { atportZonePort INTEGER, atportZoneName ATName (SIZE (1..32)), atportZoneStatus INTEGER } atportZonePort OBJECT-TYPE SYNTAX INTEGER ACCESS not-accessible STATUS mandatory DESCRIPTION "An integer representing the port to which this zone belongs. The port identified by a particular value of this object is the same port as identified by the same value of atportIndex." ::= { atportZoneEntry 1 } atportZoneName OBJECT-TYPE SYNTAX ATName (SIZE (1..32)) ACCESS not-accessible STATUS mandatory DESCRIPTION "A zone name configured for the AppleTalk port referred to in the corresponding entry of atportZonePort. When this value is changed in a router, the router must send a zipNotify packet on the associated network." ::= { atportZoneEntry 2 } atportZoneStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of this zone entry. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the atportZoneTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant atportZoneStatus object." ::= { atportZoneEntry 3 } -- The DDP Group -- -- Implementation of this group is mandatory for all -- entities that implement DDP -- -- This group consists of DDP variables that would be -- implemented by either a router or an end node. The -- following variables are included: -- ddpOutRequests -- ddpOutShorts -- ddpOutLongs -- ddpInReceives -- ddpInLocalDatagrams -- ddpNoProtocolHandlers -- ddpTooShortErrors -- ddpTooLongErrors -- ddpShortDDPErrors -- ddpChecksumErrors -- ddpListenerTable -- -- Note that the variables in this group are not numbered -- sequentially. This was done so that it was not necessary -- to deprecate variables from RFC 1243. ddpOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of DDP datagrams which were supplied to DDP by local DDP clients in requests for transmission. Note that this counter does not include any datagrams counted in ddpForwRequests." ::= { ddp 1 } ddpOutShorts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of short DDP datagrams which were transmitted from this entity." ::= { ddp 2 } ddpOutLongs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of long DDP datagrams which were transmitted from this entity." ::= { ddp 3 } ddpInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input datagrams received by DDP, including those received in error." ::= { ddp 4 } ddpInLocalDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams for which this entity was their final DDP destination." ::= { ddp 6 } ddpNoProtocolHandlers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of DDP datagrams addressed to this entity that were addressed to an upper layer protocol for which no protocol handler existed." ::= { ddp 7 } ddpTooShortErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams dropped because the received data length was less than the data length specified in the DDP header or the received data length was less than the length of the expected DDP header." ::= { ddp 9 } ddpTooLongErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams dropped because they exceeded the maximum DDP datagram size." ::= { ddp 10 } ddpShortDDPErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams dropped because this entity was not their final destination and their type was short DDP." ::= { ddp 12 } ddpChecksumErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams for which this DDP entity was their final destination, and which were dropped because of a checksum error." ::= { ddp 14 } ddpListenerTable OBJECT-TYPE SYNTAX SEQUENCE OF DdpListenerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The ddpListenerTable stores information for each DDP socket that has a listener." ::= { ddp 15 } ddpListenerEntry OBJECT-TYPE SYNTAX DdpListenerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This ddpListenerEntry contains information about a particular socket that has a socket listener. As an example, an instance of the ddpListenerStatus object might be named ddpListenerStatus.0.80.220.1" INDEX { ddpListenerAddress } ::= { ddpListenerTable 1 } DdpListenerEntry ::= SEQUENCE { ddpListenerAddress DdpSocketAddress, ddpListenerInPkts Counter, ddpListenerStatus INTEGER } ddpListenerAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The DDP address that this socket listener is bound to. If this socket listener isn't bound to a particular address, for instance if it is intended for all interfaces, this object shall have the value of three octets of zero followed by one octet of socket number. The socket number must not equal zero." ::= { ddpListenerEntry 1 } ddpListenerInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of packets received for this listener." ::= { ddpListenerEntry 2 } ddpListenerStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of this socket listener. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the ddpListenerTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant ddpListenerStatus object." ::= { ddpListenerEntry 3 } -- The DDP Router Group -- -- Implementation of this group is required for all routers -- which implement DDP -- -- This group consists of DDP variables that only a router -- would implement. The following variables are included: -- ddpForwRequests -- ddpOutNoRoutes -- ddpBroadcastErrors -- ddpHopCountErrors -- ddpForwardingTable -- -- Note that the variables in this group are not numbered -- sequentially. This was done so that variables from -- RFC 1243 did not need to be deprecated. ddpForwRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input datagrams for which this entity was not their final DDP destination, as a result of which an attempt was made to find a route to forward them to that final destination." ::= { ddp 5 } ddpOutNoRoutes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of DDP datagrams dropped because a route could not be found to their final destination." ::= { ddp 8 } ddpBroadcastErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams dropped because this entity was not their final destination and they were addressed to the link level broadcast." ::= { ddp 11 } ddpHopCountErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams dropped because this entity was not their final destination and their hop count would exceed 15." ::= { ddp 13 } -- The ddpForwardingTable is a read-only table which shows the -- next hop that a datagram will take when being routed to a -- specific network. If a manager wishes to change data in -- this table via SNMP, he must change it in the MIB for the -- routing protocol itself (by incrementing hop counts, -- etc), rather than in this table. This table is derived -- by the managed entity from the information it receives -- from the routing protocols that it supports. -- -- This table also shows the routing table from which the next -- hop was derived. When a MIB is written for an AppleTalk -- routing protocol, it should include the definition of an -- object identifier which will be used in the -- ddpForwardingProto variable defined here. (For example, -- a value for RTMP is defined as { ddp-forw-proto-oids 1 } -- below.) -- -- To look for a specific net N in this table, it is suggested -- that the management station perform a get-next query for -- ddpForwardingNetEnd.(N-1). This will retrieve the correct -- row if it exists in the table. ddpForwardingTable OBJECT-TYPE SYNTAX SEQUENCE OF DdpForwardingEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A table of forwarding entries for DDP. This table contains a route for each AppleTalk network currently known to the entity." ::= { ddp 16 } ddpForwardingEntry OBJECT-TYPE SYNTAX DdpForwardingEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A forwarding entry for a particular AppleTalk network. As an example, an instance of the ddpForwardingPort object might be named ddpForwardingPort.0.90" INDEX { ddpForwardingNetEnd } ::= { ddpForwardingTable 1 } DdpForwardingEntry ::= SEQUENCE { ddpForwardingNetEnd ATNetworkNumber, ddpForwardingNetStart ATNetworkNumber, ddpForwardingNextHop OCTET STRING, ddpForwardingProto OBJECT IDENTIFIER, ddpForwardingModifiedTime TimeTicks, ddpForwardingUseCounts Counter, ddpForwardingPort INTEGER } ddpForwardingNetEnd OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS not-accessible STATUS mandatory DESCRIPTION "The last network number in the network range matched by this forwarding entry. This will not be zero even if this corresponds to a non-extended net." ::= { ddpForwardingEntry 1 } ddpForwardingNetStart OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The first network number in the network range matched by this forwarding entry." ::= { ddpForwardingEntry 2 } ddpForwardingNextHop OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory DESCRIPTION "The next hop in the route to this entry's destination network. The format of this address can be determined by examinating the atportType corresponding to this entry." ::= { ddpForwardingEntry 3 } ddpForwardingProto OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "The routing mechanism by which this route was learned." ::= { ddpForwardingEntry 4 } ddpForwardingModifiedTime OBJECT-TYPE SYNTAX TimeTicks ACCESS read-only STATUS mandatory DESCRIPTION "The value of sysUpTime at the time of the last modification to this entry. The initial value of ddpForwardingModified time shall be the value of sysUpTime at the time the entry is created." ::= { ddpForwardingEntry 5 } ddpForwardingUseCounts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this entry has been used to route a packet to the destination network. Note that this counter is not cleared when the corresponding ddpForwardingNextHop variable changes." ::= { ddpForwardingEntry 6 } ddpForwardingPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The AppleTalk port through which ddpForwardingNextHop is reached. The interface identified by a particular value of this variable is the same interface as identified by the same value of atportIndex." ::= { ddpForwardingEntry 7 } ddpForwProtoOids OBJECT IDENTIFIER ::= { ddp 17 } -- The value to be assigned to ddpForwardingProto when the -- routing protocol is RTMP. rtmpRoutingProto OBJECT IDENTIFIER ::= { ddpForwProtoOids 1 } -- The value to be assigned to ddpForwardingProto when the -- routing protocol is KIP. kipRoutingProto OBJECT IDENTIFIER ::= { ddpForwProtoOids 2 } ddpForwardingTableOverflows OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the entity attempted to add an entry to the forwarding table but failed due to overflow." ::= { ddp 18 } -- The RTMP Group -- -- Implementation of this group is required for all routers -- which implement RTMP rtmpTable OBJECT-TYPE SYNTAX SEQUENCE OF RtmpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of Routing Table Maintenance Protocol entries for this entity." ::= { rtmp 1 } rtmpEntry OBJECT-TYPE SYNTAX RtmpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The route entry to a particular network range. As an example, an instance of the rtmpPort object might be named rtmpPort.0.80" INDEX { rtmpRangeStart } ::= { rtmpTable 1 } RtmpEntry ::= SEQUENCE { rtmpRangeStart ATNetworkNumber, rtmpRangeEnd ATNetworkNumber, rtmpNextHop OCTET STRING, rtmpType INTEGER, rtmpPort INTEGER, rtmpHops INTEGER, rtmpState INTEGER } rtmpRangeStart OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The first DDP network address in the network range to which this routing entry pertains. This is a two octet DDP network address in network byte order." ::= { rtmpEntry 1 } rtmpRangeEnd OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The last DDP network address in the network range to which this routing entry pertains. This is a two octet DDP network address in network byte order. If the network to which this routing entry pertains is a non-extended network, the value for rtmpRangeEnd shall be two octets of zero." ::= { rtmpEntry 2 } rtmpNextHop OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory DESCRIPTION "The next internet router in the route to this entry's destination network. The format of this address can be determined by examinating the atportType corresponding to this entry." ::= { rtmpEntry 3 } rtmpType OBJECT-TYPE SYNTAX INTEGER { other(1), appletalk(2), serialPPP(3), serialNonstandard(4) } ACCESS read-only STATUS mandatory DESCRIPTION "The type of network over which this route points." ::= { rtmpEntry 4 } rtmpPort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The AppleTalk port over which this route points. The interface identified by a particular value of this variable is the same interface as identified by the same value of atportIndex." ::= { rtmpEntry 5 } rtmpHops OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of hops required to reach the destination network to which this routing entry pertains." ::= { rtmpEntry 6 } rtmpState OBJECT-TYPE SYNTAX INTEGER { good(1), suspect(2), badZero(3), badOne(4), invalid(5) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of the information contained in this route entry. Setting this object to the value invalid(5) has the effect of invalidating the corresponding entry in the rtmpTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant rtmpState object." ::= { rtmpEntry 7 } rtmpInDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of good RTMP data packets received by this entity." ::= { rtmp 2 } rtmpOutDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of RTMP packets sent by this entity." ::= { rtmp 3 } rtmpInRequestPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of good RTMP Request packets received by this entity." ::= { rtmp 4 } rtmpNextIREqualChanges OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of times RTMP changes the Next Internet Router in a routing entry because the hop count advertised in a routing tuple was equal to the current hop count for a particular network." ::= { rtmp 5 } rtmpNextIRLessChanges OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of times RTMP changes the Next Internet Router in a routing entry because the hop count advertised in a routing tuple was less than the current hop count for a particular network." ::= { rtmp 6 } rtmpRouteDeletes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of times RTMP deletes a route because it was aged out of the table. This can help to detect routing problems." ::= { rtmp 7 } rtmpRoutingTableOverflows OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times RTMP attempted to add a route to the RTMP table but failed due to lack of space." ::= { rtmp 8 } -- The RTMP Stub Group -- -- Implementation of this group is mandatory for all -- entities that implement RTMP -- -- It is intended that this group be implemented by routers -- and end nodes. rtmpOutRequestPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of RTMP Request packets sent by this entity." ::= { rtmpStub 1 } rtmpInVersionMismatches OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of RTMP packets received by this entity that were rejected due to a version mismatch." ::= { rtmpStub 2 } rtmpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of RTMP packets received by this entity that were rejected for an error other than version mismatch." ::= { rtmpStub 3 } -- The KIP Group -- -- Implementation of this group is mandatory for all -- entities that implement KIP kipTable OBJECT-TYPE SYNTAX SEQUENCE OF KipEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of routing information for KIP networks." ::= { kip 1 } kipEntry OBJECT-TYPE SYNTAX KipEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An entry in the routing table for KIP networks. As an example, an instance of the kipCore object might be named kipCore.0.80" INDEX { kipNetStart } ::= { kipTable 1 } KipEntry ::= SEQUENCE { kipNetStart ATNetworkNumber, kipNetEnd ATNetworkNumber, kipNextHop IpAddress, kipHopCount INTEGER, kipBCastAddr IpAddress, kipCore INTEGER, kipType INTEGER, kipState INTEGER, kipShare INTEGER, kipFrom IpAddress } kipNetStart OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The first AppleTalk network address in the range for this routing entry. This address is a two octet DDP network address in network byte order." ::= { kipEntry 1 } kipNetEnd OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-write STATUS mandatory DESCRIPTION "The last AppleTalk network address in the range for this routing entry. This address is a two octet DDP network address in network byte order. If the network to which this AppleTalk port is connected is a non-extended network, the value for kipNetEnd shall be two octets of zero." ::= { kipEntry 2 } kipNextHop OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The IP address of the next hop in the route to this entry's destination network." ::= { kipEntry 3 } kipHopCount OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The number of hops required to reach the destination network to which this entry pertains." ::= { kipEntry 4 } kipBCastAddr OBJECT-TYPE SYNTAX IpAddress ACCESS read-write STATUS mandatory DESCRIPTION "The form of the IP address used to broadcast on this network." ::= { kipEntry 5 } kipCore OBJECT-TYPE SYNTAX INTEGER { core(1), notcore(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of kipNextHop as a core gateway." ::= { kipEntry 6 } kipType OBJECT-TYPE SYNTAX INTEGER { kipRouter(1), net(2), host(3), other(4), async(5) } ACCESS read-write STATUS mandatory DESCRIPTION "The type of the entity that this route points to." ::= { kipEntry 7 } kipState OBJECT-TYPE SYNTAX INTEGER { configured(1), -- this entry is not aged learned(2), invalid(3) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this network entry. Setting this object to the value invalid(3) has the effect of invalidating the corresponding entry in the kipTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant kipState object." ::= { kipEntry 8 } kipShare OBJECT-TYPE SYNTAX INTEGER { shared(1), private(2) } ACCESS read-write STATUS mandatory DESCRIPTION "If the information in this entry is propagated to other routers as part of the AA routing protocol, the value of this variable is equal to shared(1). Otherwise its value is private(2)." ::= { kipEntry 9 } kipFrom OBJECT-TYPE SYNTAX IpAddress ACCESS read-only STATUS mandatory DESCRIPTION "The IP address from which the routing entry was learned via the AA protocol. If this entry was not created via the AA protocol, it should contain IP address 0.0.0.0." ::= { kipEntry 10 } -- The ZIP Router Group -- -- Implementation of this group is required for all routers -- which implement ZIP -- -- This group consists of ZIP variables that would be -- implemented by a router. zipTable OBJECT-TYPE SYNTAX SEQUENCE OF ZipEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of zone information for reachable AppleTalk networks." ::= { zipRouter 1 } zipEntry OBJECT-TYPE SYNTAX ZipEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An entry of zone information for a particular zone and network combination. As an example, an instance of the zipZoneState object might be named zipZoneState.0.80.4" INDEX { zipZoneNetStart, zipZoneIndex } ::= { zipTable 1 } ZipEntry ::= SEQUENCE { zipZoneName ATName, zipZoneIndex INTEGER, zipZoneNetStart ATNetworkNumber, zipZoneNetEnd ATNetworkNumber, zipZoneState INTEGER, zipZoneFrom OCTET STRING, zipZonePort INTEGER } zipZoneName OBJECT-TYPE SYNTAX ATName ACCESS read-only STATUS mandatory DESCRIPTION "The zone name of this entry. This is stored in Mac ASCII format. If the full zone list for the entry is not known, the value for zipZoneName shall be a zero length octet string." ::= { zipEntry 1 } zipZoneIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "An integer that is unique to the zipZoneName that is present in this entry. For any given zone name, every zipEntry that has an equal zone name will have the same zipZoneIndex. When a zone name is discovered which is not currently in the table, it will be assigned an index greater than any previously assigned index." ::= { zipEntry 2 } zipZoneNetStart OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The network that starts the range for this entry. This address is a two octet DDP network address in network byte order." ::= { zipEntry 3 } zipZoneNetEnd OBJECT-TYPE SYNTAX ATNetworkNumber ACCESS read-only STATUS mandatory DESCRIPTION "The network that ends the range for this entry. This address is a two octet DDP network address in network byte order. If the network to which this zip entry pertains is a non-extended network, the value for zipZoneNetEnd shall be two octets of zero." ::= { zipEntry 4 } zipZoneState OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this zip entry. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the zipTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant zipZoneState object." ::= { zipEntry 5 } zipZoneFrom OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-only STATUS mandatory DESCRIPTION "The address from which this zone name to network number mapping was learned. The format of this address can be determined by examining the atportType corresponding to this entry. When this mapping is learned from the entity itself, this object shall have the value of three octets of zero." ::= { zipEntry 6 } zipZonePort OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The AppleTalk port through which this zone name to network number mapping was learned. The interface identified by a particular value of this variable is the same interface as identified by the same value of atportIndex." ::= { zipEntry 7 } zipInZipQueries OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Queries received by this entity." ::= { zipRouter 2 } zipInZipReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Replies received by this entity." ::= { zipRouter 3 } zipInZipExtendedReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Extended Replies received by this entity." ::= { zipRouter 4 } zipZoneConflictErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times a conflict has been detected between this entity's zone information and another entity's zone information." ::= { zipRouter 5 } zipInObsoletes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Takedown or ZIP Bringup packets received by this entity. Note that as the ZIP Takedown and ZIP Bringup packets have been obsoleted, the receipt of one of these packets indicates that a node sent it in error." ::= { zipRouter 6 } -- The zipRouterNetInfoTable is used to record information -- about zipGetNetInfo and zipGetNetInfo Reply packets that -- were received on each port for a router. This table -- augments the atportTable. zipRouterNetInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF ZipRouterNetInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of Net Info packets received by each port on this entity." ::= { zipRouter 7 } zipRouterNetInfoEntry OBJECT-TYPE SYNTAX ZipRouterNetInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The description of the Net Info packets received on a particular port on this entity. One such entry shall exist for each atport on this router entity. As an example, an instance of the zipInGetNetInfos object might be named zipInGetNetInfos.2" INDEX { atportIndex } ::= { zipRouterNetInfoTable 1 } ZipRouterNetInfoEntry ::= SEQUENCE { zipInGetNetInfos Counter, zipOutGetNetInfoReplies Counter, zipZoneOutInvalids Counter, zipAddressInvalids Counter } zipInGetNetInfos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP GetNetInfo packets received on this port by this entity." ::= { zipRouterNetInfoEntry 1 } zipOutGetNetInfoReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP GetNetInfo Reply packets sent out this port by this entity." ::= { zipRouterNetInfoEntry 2 } zipZoneOutInvalids OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this entity has sent a ZIP GetNetInfo Reply with the zone invalid bit set in response to a GetNetInfo Request with an invalid zone name." ::= { zipRouterNetInfoEntry 3 } zipAddressInvalids OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this entity had to broadcast a ZIP GetNetInfo Reply because the GetNetInfo Request had an invalid address." ::= { zipRouterNetInfoEntry 4 } -- The ZIP End Node Group -- -- Implementation of this group is mandatory for all entities -- that implement ZIP -- -- This group consists of ZIP variables that would be -- implemented by either a router or an end node. -- The zipNetInfoTable is used to record information about -- zipGetNetInfo and zipGetNetInfo Reply packets that were -- received on each port of an entity. This table augments -- the atportTable. zipNetInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF ZipNetInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of Net Info packets received by each port on this entity." ::= { zipEndNode 1 } zipNetInfoEntry OBJECT-TYPE SYNTAX ZipNetInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The description of the Net Info packets received on a particular port on this entity. One such entry shall exist for each atport on this entity. As an example, an instance of the zipOutGetNetInfos object might be named zipOutGetNetInfos.2" INDEX { atportIndex } ::= { zipNetInfoTable 1 } ZipNetInfoEntry ::= SEQUENCE { zipOutGetNetInfos Counter, zipInGetNetInfoReplies Counter, zipZoneInInvalids Counter } zipOutGetNetInfos OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP GetNetInfo packets sent out this port by this entity." ::= { zipNetInfoEntry 1 } zipInGetNetInfoReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP GetNetInfo Reply packets received on this port by this entity." ::= { zipNetInfoEntry 2 } zipZoneInInvalids OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this entity has received a ZIP GetNetInfo Reply with the zone invalid bit set because the corresponding GetNetInfo Request had an invalid zone name." ::= { zipNetInfoEntry 3 } zipInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP packets received by this entity that were rejected for any error." ::= { zipEndNode 2 } -- The NBP Group -- -- Implementation of this group is mandatory for all entities -- that implement NBP nbpTable OBJECT-TYPE SYNTAX SEQUENCE OF NbpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of NBP services registered on this entity." ::= { nbp 1 } nbpEntry OBJECT-TYPE SYNTAX NbpEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The description of an NBP service registered on this entity. As an example, an instance of the nbpZone object might be named nbpZone.2" INDEX { nbpIndex } ::= { nbpTable 1 } NbpEntry ::= SEQUENCE { nbpIndex INTEGER, nbpObject ATName (SIZE (1..32)), nbpType ATName (SIZE (1..32)), nbpZone ATName, nbpState INTEGER, nbpAddress DdpSocketAddress, nbpEnumerator INTEGER (0..255) } nbpIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The index of this NBP entry. This index is unique with respect to the indexes of all other NBP entries, and shall remain constant throughout the lifetime of this object." ::= { nbpEntry 1 } nbpObject OBJECT-TYPE SYNTAX ATName (SIZE (1..32)) ACCESS read-write STATUS mandatory DESCRIPTION "The name of the service described by this entity. When this variable is changed, the entity should perform an NBP registration using the new nbpObject." ::= { nbpEntry 2 } nbpType OBJECT-TYPE SYNTAX ATName (SIZE (1..32)) ACCESS read-write STATUS mandatory DESCRIPTION "The type of the service described by this entity. When this variable is changed, the entity should perform an NBP registration using the new nbpType." ::= { nbpEntry 3 } nbpZone OBJECT-TYPE SYNTAX ATName ACCESS read-write STATUS mandatory DESCRIPTION "The zone the service described by this entity is registered in. This must be the actual zone name, without any wildcard characters. When this variable is changed, the entity should perform an NBP registration using the new nbpZone." ::= { nbpEntry 4 } nbpState OBJECT-TYPE SYNTAX INTEGER { valid(1), registering(2), -- attempting to register the service registrationFailed(3), invalid(4) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this NBP entry. When the registration for an entry in the nbpTable fails, it is an implementation-specific matter as to how long the entry will remain in the registrationFailed(3) state before moving to the invalid(4) state. Note that the entry may pass immediately from the registrationFailed state to the invalid state. Setting this object to the value invalid(4) has the effect of invalidating the corresponding entry in the nbpTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant nbpState object." ::= { nbpEntry 5 } nbpAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS read-write STATUS mandatory DESCRIPTION "The DDP network, node, and socket number of this entity. If this is unspecified, for instance if the registration is on all ports of a multiport device, this object shall have the value of three octets of zero, followed by one octet of socket number." ::= { nbpEntry 6 } nbpEnumerator OBJECT-TYPE SYNTAX INTEGER (0..255) ACCESS read-only STATUS mandatory DESCRIPTION "The enumerator assigned to this entity." ::= { nbpEntry 7 } nbpInLookUpRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Requests received." ::= { nbp 2 } nbpInLookUpReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Replies received." ::= { nbp 3 } nbpInBroadcastRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP Broadcast Requests received." ::= { nbp 4 } nbpInForwardRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP Forward Requests received." ::= { nbp 5 } nbpOutLookUpReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Replies sent." ::= { nbp 6 } nbpRegistrationFailures OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this node experienced a failure in attempting to register an NBP entity." ::= { nbp 7 } nbpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP packets received by this entity that were rejected for any error." ::= { nbp 8 } -- The ATEcho Group -- -- Implementation of this group is mandatory for all -- entities that implement ATEcho atechoRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of AppleTalk Echo requests received." ::= { atecho 1 } atechoReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of AppleTalk Echo replies sent." ::= { atecho 2 } atechoOutRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The count of AppleTalk Echo requests sent." ::= { atecho 3 } atechoInReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The count of AppleTalk Echo replies received." ::= { atecho 4 } -- The ATP Group -- -- Implementation of this group is mandatory for all entities -- that implement ATP atpInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ATP packets received by this entity." ::= { atp 1 } atpOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ATP packets sent by this entity." ::= { atp 2 } atpTRequestRetransmissions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times that a timeout occurred and a Transaction Request packet needed to be retransmitted by this host." ::= { atp 3 } atpTResponseRetransmissions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times a timeout was detected and a Transaction Response packet needed to be retransmitted by this host." ::= { atp 4 } atpReleaseTimerExpiredCounts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the release timer expired, as a result of which a Request Control Block had to be deleted." ::= { atp 5 } atpRetryCountExceededs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the retry count was exceeded, and an error was returned to the client of ATP." ::= { atp 6 } atpListenerTable OBJECT-TYPE SYNTAX SEQUENCE OF AtpListenerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The atpListenerTable stores information for each ATP socket that has a listener." ::= { atp 7 } atpListenerEntry OBJECT-TYPE SYNTAX AtpListenerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This atpListenerEntry contains information about a particular socket that has a socket listener. As an example, an instance of the atpListenerStatus object might be named atpListenerStatus.0.80.220.3" INDEX { atpListenerAddress } ::= { atpListenerTable 1 } AtpListenerEntry ::= SEQUENCE { atpListenerAddress DdpSocketAddress, atpListenerStatus INTEGER } atpListenerAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The DDP address that this socket listener is bound to. If this socket listener isn't bound to a particular address, for instance if it is intended for all interfaces, this object shall have the value of three octets of zero followed by one octet of socket number." ::= { atpListenerEntry 1 } atpListenerStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of this socket. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the atpListenerTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant atpListenerStatus object." ::= { atpListenerEntry 2 } -- The PAP group -- -- Implementation of this group is mandatory for all entities -- that implement PAP papInOpenConns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Open Connection requests received by this entity." ::= { pap 1 } papOutOpenConns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Open Connection requests sent by this entity." ::= { pap 2 } papInDatas OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Data messages received by this entity." ::= { pap 3 } papOutDatas OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Data messages sent by this entity." ::= { pap 4 } papInCloseConns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Close Connection requests received by this entity." ::= { pap 5 } papOutCloseConns OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of PAP Close Connection requests sent by this entity." ::= { pap 6 } papTickleTimeoutCloses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the PAP entity on this node closed a connection because it didn't receive a Tickle message before its timer expired." ::= { pap 7 } papServerTable OBJECT-TYPE SYNTAX SEQUENCE OF PapServerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of servers on this entity that are accessible through the Printer Access Protocol." ::= { pap 8 } papServerEntry OBJECT-TYPE SYNTAX PapServerEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A set of information about a particular PAP server's configuration and performance. As an example, an instance of the papServerStatus object might be named papServerStatus.1" INDEX { papServerIndex } ::= { papServerTable 1 } PapServerEntry ::= SEQUENCE { papServerIndex INTEGER, papServerListeningSocket DdpSocketAddress, papServerStatus DisplayString, papServerCompletedJobs Counter, papServerBusyJobs INTEGER, papServerFreeJobs INTEGER, papServerAuthenticationFailures Counter, papServerAccountingFailures Counter, papServerGeneralFailures Counter, papServerState INTEGER, papServerLastStatusMsg DisplayString } papServerIndex OBJECT-TYPE SYNTAX INTEGER ACCESS not-accessible STATUS mandatory DESCRIPTION "An unique value for each Printer Access Protocol Server." ::= { papServerEntry 1 } papServerListeningSocket OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS read-write STATUS mandatory DESCRIPTION "The Server Listening Socket that this PAP server is listening on." ::= { papServerEntry 2 } papServerStatus OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The status string of this server. This is the message as it would appear in a PAP Status Reply from this server." ::= { papServerEntry 3 } papServerCompletedJobs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of jobs that have been accepted and successfully executed by this server." ::= { papServerEntry 4 } papServerBusyJobs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The number of GetNextJob calls that have accepted and are currently executing a job." ::= { papServerEntry 5 } papServerFreeJobs OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The minimum number of GetNextJob calls that are currently waiting for a job." ::= { papServerEntry 6 } papServerAuthenticationFailures OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this PAP server rejected a job because the job was not correctly authenticated." ::= { papServerEntry 7 } papServerAccountingFailures OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this PAP server rejected a job because the job did not fit some accounting rule, such as exceeding a quota." ::= { papServerEntry 8 } papServerGeneralFailures OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this PAP server rejected a job for some reason other than authentication or accounting failures." ::= { papServerEntry 9 } papServerState OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this PAP Server entry. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the papServerTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant papServerState object." ::= { papServerEntry 10 } papServerLastStatusMsg OBJECT-TYPE SYNTAX DisplayString ACCESS read-only STATUS mandatory DESCRIPTION "The last status message that was transmitted by this server." ::= { papServerEntry 11 } -- The ASP Group -- -- Implementation of this group is mandatory for all entities -- that implement ASP aspInputTransactions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP requests and replies received by this entity. Note that this is not necessarily the number of packets containing ASP transactions." ::= { asp 1 } aspOutputTransactions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP requests and replies sent by this entity. Note that this is not necessarily the number of packets containing ASP transactions." ::= { asp 2 } aspInOpenSessions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP Open Session requests and replies received by this entity." ::= { asp 3 } aspOutOpenSessions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP Open Session requests and replies sent by this entity." ::= { asp 4 } aspInCloseSessions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP Close Session requests and replies received by this entity." ::= { asp 5 } aspOutCloseSessions OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ASP Close Session requests and replies sent by this entity." ::= { asp 6 } aspNoMoreSessionsErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times an error condition was returned because this server implementation could not support another session." ::= { asp 7 } aspTickleTimeOutCloses OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the ASP entity on this node closed a connection because it didn't receive any messages from the remote end before its timer expired." ::= { asp 8 } aspConnTable OBJECT-TYPE SYNTAX SEQUENCE OF AspConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of ASP connections on this entity." ::= { asp 9 } aspConnEntry OBJECT-TYPE SYNTAX AspConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A set of information describing an ASP connection. As an example, an instance of the aspConnState object might be named aspConnState.0.80.220.135.0.80.239.119.12" INDEX { aspConnLocalAddress, aspConnRemoteAddress, aspConnID } ::= { aspConnTable 1 } AspConnEntry ::= SEQUENCE { aspConnLocalAddress DdpSocketAddress, aspConnRemoteAddress DdpSocketAddress, aspConnID INTEGER (1..255), aspConnLastReqNum INTEGER (1..65535), aspConnServerEnd INTEGER, aspConnState INTEGER } aspConnLocalAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The local address of this ASP connection." ::= { aspConnEntry 1 } aspConnRemoteAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The remote address of this ASP connection. If this entry is in the listening mode, this object shall have a value of four octets of zero." ::= { aspConnEntry 2 } aspConnID OBJECT-TYPE SYNTAX INTEGER (1..255) ACCESS not-accessible STATUS mandatory DESCRIPTION "The remote Connection ID of this ASP connection. If this entry is in the listening mode, this object shall have a value of zero." ::= { aspConnEntry 3 } aspConnLastReqNum OBJECT-TYPE SYNTAX INTEGER (1..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The last request number on this ASP connection. If this entry is in the listening mode, this object shall have a value of zero." ::= { aspConnEntry 4 } aspConnServerEnd OBJECT-TYPE SYNTAX INTEGER { sss(1), -- Server Session Socket wss(2), -- Workstation Session Socket sls(3) -- Server Listening Socket } ACCESS read-only STATUS mandatory DESCRIPTION "Specifies what mode the local session end is in." ::= { aspConnEntry 5 } aspConnState OBJECT-TYPE SYNTAX INTEGER { open(1), closed(2), invalid(3) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this ASP connection. Setting this object to the value invalid(3) has the effect of invalidating the corresponding entry in the aspConnTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant aspConnState object." ::= { aspConnEntry 6 } -- The ADSP Group -- -- Implementation of this group is mandatory for all entities -- that implement ADSP adspInPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ADSP packets received by this entity." ::= { adsp 1 } adspOutPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ADSP packets sent by this entity." ::= { adsp 2 } adspInOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of data octets contained in ADSP packets received by this entity. Note that this does not include EOM bits." ::= { adsp 3 } adspOutOctets OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of data octets contained in ADSP packets sent by this entity. Note that this does not include EOM bits." ::= { adsp 4 } adspInDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ADSP data packets this entity has received." ::= { adsp 5 } adspOutDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ADSP data packets this entity has sent." ::= { adsp 6 } adspTimeoutErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the ADSP on this entity detected an expired connection timer." ::= { adsp 7 } adspTimeoutCloseErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times the ADSP on this entity closed a connection because of too many timeouts." ::= { adsp 8 } adspConnTable OBJECT-TYPE SYNTAX SEQUENCE OF AdspConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of ADSP connections on this entity." ::= { adsp 9 } adspConnEntry OBJECT-TYPE SYNTAX AdspConnEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A set of information describing an ADSP connection. As an example, an instance of the adspConnState object might be named adspConnState.0.80.220.7.0.80.239.142.31231" INDEX { adspConnLocalAddress, adspConnRemoteAddress, adspConnLocalConnID } ::= { adspConnTable 1 } AdspConnEntry ::= SEQUENCE { adspConnLocalAddress DdpSocketAddress, adspConnLocalConnID INTEGER (0..65535), adspConnRemoteAddress DdpSocketAddress, adspConnRemoteConnID INTEGER (0..65535), adspConnState INTEGER } adspConnLocalAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The local DDP address of this ADSP connection." ::= { adspConnEntry 1 } adspConnLocalConnID OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS not-accessible STATUS mandatory DESCRIPTION "The local Connection ID of this ADSP connection. If this entry specifies an ADSP listener, this value shall be zero." ::= { adspConnEntry 2 } adspConnRemoteAddress OBJECT-TYPE SYNTAX DdpSocketAddress ACCESS not-accessible STATUS mandatory DESCRIPTION "The remote DDP address of this ADSP connection. If this entry specifies an ADSP listener, this value shall be zero." ::= { adspConnEntry 3 } adspConnRemoteConnID OBJECT-TYPE SYNTAX INTEGER (0..65535) ACCESS read-only STATUS mandatory DESCRIPTION "The remote Connection ID of this ADSP connection. If this entry specifies an ADSP listener, this value shall be zero." ::= { adspConnEntry 4 } adspConnState OBJECT-TYPE SYNTAX INTEGER { open(1), localHalfOpen(2), remoteHalfOpen(3), listening(4), closed(5), invalid(6) } ACCESS read-write STATUS mandatory DESCRIPTION "The state of this ADSP connection. The state is open if both ends are established. If only one end is established, then the state is half-open. If neither end is established, then the state is closed. If an ADSP server is listening on a socket and is not yet connected, its state is set to listening, and the adspConnRemoteAddress, adspConnRemoteSocket, adspConnRemoteConnID, and adspConnRemoteWindowSize are all set to zero. Setting this object to the value invalid(6) has the effect of invalidating the corresponding entry in the adspConnTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examination of the relevant adspConnState object." ::= { adspConnEntry 5 } -- The ATPortPtoP Group -- -- Implementation of this group is mandatory for all entities -- that implement AppleTalk point-to-point links atportPtoPTable OBJECT-TYPE SYNTAX SEQUENCE OF AtportPtoPEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of AppleTalk point-to-point connections for this entity." ::= { atportptop 1 } atportPtoPEntry OBJECT-TYPE SYNTAX AtportPtoPEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The description of one of the AppleTalk point-to-point connections on this entity. As an example, an instance of the atportPtoPRemoteAddress object might be named atportPtoPRemoteAddress.2" INDEX { atportPtoPIndex } ::= { atportPtoPTable 1 } AtportPtoPEntry ::= SEQUENCE { atportPtoPIndex INTEGER, atportPtoPProtocol OBJECT IDENTIFIER, atportPtoPRemoteName DisplayString, atportPtoPRemoteAddress OCTET STRING, atportPtoPPortIndex INTEGER, atportPtoPStatus INTEGER } atportPtoPIndex OBJECT-TYPE SYNTAX INTEGER ACCESS not-accessible STATUS mandatory DESCRIPTION "A unique value for each AppleTalk point-to-point connection. Its value is between 1 and the total number of AppleTalk point-to-point connections. The value for each connection must remain constant at least from the re-initialization of the entity's network management system to the next re-initialization." ::= { atportPtoPEntry 1 } atportPtoPProtocol OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-write STATUS mandatory DESCRIPTION "The protocol type used over the point-to-point connection." ::= { atportPtoPEntry 2 } atportPtoPRemoteName OBJECT-TYPE SYNTAX DisplayString ACCESS read-write STATUS mandatory DESCRIPTION "A text string containing the network node name of the entity at the other end of the point-to-point link. If the name is unknown or undefined, then this string is zero length." ::= { atportPtoPEntry 3 } atportPtoPRemoteAddress OBJECT-TYPE SYNTAX OCTET STRING ACCESS read-write STATUS mandatory DESCRIPTION "The network address of the entity at the other end of the point-to-point link in network byte order. The format of this address can be determined by examinating the atportType corresponding to this entry. If the address is unknown or undefined, then this string is zero length." ::= { atportPtoPEntry 4 } atportPtoPPortIndex OBJECT-TYPE SYNTAX INTEGER ACCESS read-write STATUS mandatory DESCRIPTION "The AppleTalk port associated with this point-to-point connection. The interface identified by a particular value of this index is the same interface as identified by the same value of atportIndex." ::= { atportPtoPEntry 5 } atportPtoPStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } ACCESS read-write STATUS mandatory DESCRIPTION "The status of this entry in the atportPtoPTable. Setting this object to the value invalid(2) has the effect of invalidating the corresponding entry in the atportPtoPTable. That is, it effectively disassociates the mapping identified with said entry. It is an implementation-specific matter as to whether the agent removes an invalidated entry from the table. Accordingly, management stations must be prepared to receive from agents tabular information corresponding to entries not currently in use. Proper interpretation of such entries requires examinationr of the relevant atportPtoPStatus object." ::= { atportPtoPEntry 6 } atportPtoPProtoOids OBJECT IDENTIFIER ::= { atportptop 2 } -- A list of values to be used for the atportPtoPProtocol -- variable. -- When new protocols are defined, their oids may be defined -- in separate MIB documents in different branches of the tree. pToPProtoOther OBJECT IDENTIFIER ::= { atportPtoPProtoOids 1 } pToPProtoAurp OBJECT IDENTIFIER ::= { atportPtoPProtoOids 2 } pToPProtoCaymanUdp OBJECT IDENTIFIER ::= { atportPtoPProtoOids 3 } pToPProtoAtkvmsDecnetIV OBJECT IDENTIFIER ::= { atportPtoPProtoOids 4 } pToPProtoLiaisonUdp OBJECT IDENTIFIER ::= { atportPtoPProtoOids 5 } pToPProtoIpx OBJECT IDENTIFIER ::= { atportPtoPProtoOids 6 } pToPProtoShivaIp OBJECT IDENTIFIER ::= { atportPtoPProtoOids 7 } -- The Per Port Counters Group -- -- Implementation of this group is optional. perPortTable OBJECT-TYPE SYNTAX SEQUENCE OF PerPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The table of per-port statistics for this entity." ::= { perPort 1 } perPortEntry OBJECT-TYPE SYNTAX PerPortEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "The statistics available for a particular port on this entity. As an example, an instance of the perPortAarpInProbes object might be named perPortAarpInProbes.2" INDEX { atportIndex } ::= { perPortTable 1 } PerPortEntry ::= SEQUENCE { perPortAarpInProbes Counter, perPortAarpOutProbes Counter, perPortAarpInReqs Counter, perPortAarpOutReqs Counter, perPortAarpInRsps Counter, perPortAarpOutRsps Counter, perPortDdpInReceives Counter, perPortDdpInLocalDatagrams Counter, perPortDdpNoProtocolHandlers Counter, perPortDdpTooShortErrors Counter, perPortDdpTooLongErrors Counter, perPortDdpChecksumErrors Counter, perPortDdpForwRequests Counter, perPortRtmpInDataPkts Counter, perPortRtmpOutDataPkts Counter, perPortRtmpInRequestPkts Counter, perPortRtmpRouteDeletes Counter, perPortZipInZipQueries Counter, perPortZipInZipReplies Counter, perPortZipInZipExtendedReplies Counter, perPortZipZoneConflictErrors Counter, perPortZipInErrors Counter, perPortNbpInLookUpRequests Counter, perPortNbpInLookUpReplies Counter, perPortNbpInBroadcastRequests Counter, perPortNbpInForwardRequests Counter, perPortNbpOutLookUpReplies Counter, perPortNbpRegistrationFailures Counter, perPortNbpInErrors Counter, perPortEchoRequests Counter, perPortEchoReplies Counter } perPortAarpInProbes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Probe packets received by this entity on this port." ::= { perPortEntry 1 } perPortAarpOutProbes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Probe packets sent by this entity on this port." ::= { perPortEntry 2 } perPortAarpInReqs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Request packets received by this entity on this port." ::= { perPortEntry 3 } perPortAarpOutReqs OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Request packets sent by this entity on this port." ::= { perPortEntry 4 } perPortAarpInRsps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Response packets received by this entity on this port." ::= { perPortEntry 5 } perPortAarpOutRsps OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of AARP Response packets sent by this entity on this port." ::= { perPortEntry 6 } perPortDdpInReceives OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input datagrams received by DDP on this port, including those received in error." ::= { perPortEntry 7 } perPortDdpInLocalDatagrams OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams on this port for which this entity was their final DDP destination." ::= { perPortEntry 8 } perPortDdpNoProtocolHandlers OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of DDP datagrams addressed to this entity on this port that were addressed to an upper layer protocol for which no protocol handler existed." ::= { perPortEntry 9 } perPortDdpTooShortErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams on this port dropped because the received data length was less than the data length specified in the DDP header or the received data length was less than the length of the expected DDP header." ::= { perPortEntry 10 } perPortDdpTooLongErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams on this port dropped because they exceeded the maximum DDP datagram size." ::= { perPortEntry 11 } perPortDdpChecksumErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The total number of input DDP datagrams on this port for which this DDP entity was their final destination, and which were dropped because of a checksum error." ::= { perPortEntry 12 } perPortDdpForwRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of input datagrams on this port for which this entity was not their final DDP destination, as a result of which an attempt was made to find a route to forward them to that final destination." ::= { perPortEntry 13 } perPortRtmpInDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of good RTMP data packets received by this entity on this port." ::= { perPortEntry 14 } perPortRtmpOutDataPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of RTMP packets sent by this entity on this port." ::= { perPortEntry 15 } perPortRtmpInRequestPkts OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of good RTMP Request packets received by this entity on this port." ::= { perPortEntry 16 } perPortRtmpRouteDeletes OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "A count of the number of times RTMP deletes a route on this port because it was aged out of the table." ::= { perPortEntry 17 } perPortZipInZipQueries OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Queries received by this entity on this port." ::= { perPortEntry 18 } perPortZipInZipReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Replies received by this entity on this port." ::= { perPortEntry 19 } perPortZipInZipExtendedReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP Extended Replies received by this entity on this port." ::= { perPortEntry 20 } perPortZipZoneConflictErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times a conflict has been detected on this port between this entity's zone information and another entity's zone information." ::= { perPortEntry 21 } perPortZipInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of ZIP packets received by this entity on this port that were rejected for any error." ::= { perPortEntry 22 } perPortNbpInLookUpRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Requests received on this port." ::= { perPortEntry 23 } perPortNbpInLookUpReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Replies received on this port." ::= { perPortEntry 24 } perPortNbpInBroadcastRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP Broadcast Requests received on this port." ::= { perPortEntry 25 } perPortNbpInForwardRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP Forward Requests received on this port." ::= { perPortEntry 26 } perPortNbpOutLookUpReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP LookUp Replies sent on this port." ::= { perPortEntry 27 } perPortNbpRegistrationFailures OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times this node experienced a failure in attempting to register an NBP entity on this port." ::= { perPortEntry 28 } perPortNbpInErrors OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of NBP packets received by this entity on this port that were rejected for any error." ::= { perPortEntry 29 } perPortEchoRequests OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of AppleTalk Echo requests received on this port." ::= { perPortEntry 30 } perPortEchoReplies OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The count of AppleTalk Echo replies received on this port." ::= { perPortEntry 31 } END SNMP-MIB-Compiler-0.06.orig/t/0040755000175000017500000000000007435074233014572 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/t/lexer.t0100644000175000017500000000164007435074233016074 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib", "../lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; print "1..10\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; &test('word1'); &test('WORD2'); &test('foo-bar'); &test('FOO'); &test('bar'); &test('bat'); &test('foo-bar'); &test('bar-foo'); &test('PLUS-INFINITY'); &test('MINUS-INFINITY'); sub test { my $expect = shift; my ($res, $k) = $mib->yylex(); $k = '', print scalar $mib->assert unless defined $k; print $res && $k eq $expect ? "" : "not ", "ok ", $t++, "\n"; print "Got '$k' but '$expect' was expected\n" unless $k eq $expect; } # end __DATA__ word1 WORD2 foo-bar FOO--BAR bar -- BAZ -- bat foo-bar--bar-baz--bar-foo PLUS-INFINITY-- MINUS-INFINITY SNMP-MIB-Compiler-0.06.orig/t/modulecompliance.t0100755000175000017500000002402107435074233020276 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; $| = 1; print "1..3\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; my ($res, $ref, $token, $value); # Test 1 ($token, $value) = $mib->get_token('IDENTIFIER'); my $node = $value; ($token, $value) = $mib->get_token('TYPEMODREFERENCE'); unless ($value eq 'MODULE-COMPLIANCE') { print "not ok $t\n"; exit 0; } $res = $mib->parse_modulecompliance(); my $good = { 'oid' => [ 'fooMIBCompliances', 2 ], 'description' => '"description of foo."', 'status' => 'current', 'module' => { 'this' => { 'mandatory-groups' => [ 'fooGroup', 'fooSetGroup', 'systemGroup', 'fooBasicNotificationsGroup' ], 'group' => { 'fooCommunityGroup2' => '"This group is mandatory for foo entities too."', 'fooCommunityGroup' => '"This group is mandatory for foo entities."' } } } }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 2 ($token, $value) = $mib->get_token('IDENTIFIER'); $node = $value; ($token, $value) = $mib->get_token('TYPEMODREFERENCE'); unless ($value eq 'MODULE-COMPLIANCE') { print "not ok $t\n"; exit 0; } $res = $mib->parse_modulecompliance(); $good = { 'oid' => [ 'snmpNotifyCompliances', 1 ], 'description' => '"The compliance statement for minimal SNMP entities which implement only SNMP Traps and read-create operations on only the snmpTargetAddrTable."', 'status' => 'current', 'module' => { 'this' => { 'mandatory-groups' => [ 'snmpNotifyGroup' ], 'object' => { 'snmpNotifyType' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required. Support of the value notify(2) is not required."', 'syntax' => { 'values' => { 1 => 'trap' }, 'type' => 'INTEGER' } }, 'snmpNotifyRowStatus' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access to the snmpNotifyTable is not required. Support of the values notInService(2), notReady(3), createAndGo(4), createAndWait(5), and destroy(6) is not required."', 'syntax' => { 'values' => { 1 => 'active' }, 'type' => 'INTEGER' } }, 'snmpNotifyTag' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required."' }, 'snmpNotifyStorageType' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required. Support of the values other(1), volatile(2), nonVolatile(3), and permanent(4) is not required."', 'syntax' => { 'values' => { 5 => 'readOnly' }, 'type' => 'INTEGER' } } } }, 'SNMP-TARGET-MIB' => { 'mandatory-groups' => [ 'snmpTargetBasicGroup' ], 'object' => { 'snmpTargetParamsStorageType' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required. Support of the values other(1), volatile(2), nonVolatile(3), and permanent(4) is not required."', 'syntax' => { 'values' => { 5 => 'readOnly' }, 'type' => 'INTEGER' } }, 'snmpTargetParamsSecurityLevel' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required."' }, 'snmpTargetParamsSecurityName' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required."' }, 'snmpTargetParamsSecurityModel' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required."' }, 'snmpTargetParamsRowStatus' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access to the snmpTargetParamsTable is not required. Support of the values notInService(2), notReady(3), createAndGo(4), createAndWait(5), and destroy(6) is not required."', 'syntax' => { 'values' => { 1 => 'active' }, 'type' => 'INTEGER' } }, 'snmpTargetParamsMPModel' => { 'min-access' => 'read-only', 'description' => '"Create/delete/modify access is not required."' } } } } }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 3 ($token, $value) = $mib->get_token('IDENTIFIER'); $node = $value; ($token, $value) = $mib->get_token('TYPEMODREFERENCE'); unless ($value eq 'MODULE-COMPLIANCE') { print "not ok $t\n"; exit 0; } $res = $mib->parse_modulecompliance(); $good = { 'oid' => [ 'snmpNotifyCompliances', 2 ], 'description' => '"The compliance statement for SNMP entities which implement SNMP Traps with filtering, and read-create operations on all related tables."', 'status' => 'current', 'module' => { 'this' => { 'mandatory-groups' => [ 'snmpNotifyGroup', 'snmpNotifyFilterGroup' ] }, 'SNMP-TARGET-MIB' => { 'mandatory-groups' => [ 'snmpTargetBasicGroup' ] } } }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # end __DATA__ -- test for MODULE-COMPLIANCE MACRO foo MODULE-COMPLIANCE STATUS current DESCRIPTION "description of foo." MODULE -- this module MANDATORY-GROUPS { fooGroup, fooSetGroup, systemGroup, fooBasicNotificationsGroup } GROUP fooCommunityGroup DESCRIPTION "This group is mandatory for foo entities." GROUP fooCommunityGroup2 DESCRIPTION "This group is mandatory for foo entities too." ::= { fooMIBCompliances 2 } -- extracted from rfc2273 snmpNotifyBasicCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for minimal SNMP entities which implement only SNMP Traps and read-create operations on only the snmpTargetAddrTable." MODULE SNMP-TARGET-MIB MANDATORY-GROUPS { snmpTargetBasicGroup } OBJECT snmpTargetParamsMPModel MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required." OBJECT snmpTargetParamsSecurityModel MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required." OBJECT snmpTargetParamsSecurityName MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required." OBJECT snmpTargetParamsSecurityLevel MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required." OBJECT snmpTargetParamsStorageType SYNTAX INTEGER { readOnly(5) } MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required. Support of the values other(1), volatile(2), nonVolatile(3), and permanent(4) is not required." OBJECT snmpTargetParamsRowStatus SYNTAX INTEGER { active(1) } MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access to the snmpTargetParamsTable is not required. Support of the values notInService(2), notReady(3), createAndGo(4), createAndWait(5), and destroy(6) is not required." MODULE -- This Module MANDATORY-GROUPS { snmpNotifyGroup } OBJECT snmpNotifyTag MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required." OBJECT snmpNotifyType SYNTAX INTEGER { trap(1) } MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required. Support of the value notify(2) is not required." OBJECT snmpNotifyStorageType SYNTAX INTEGER { readOnly(5) } MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access is not required. Support of the values other(1), volatile(2), nonVolatile(3), and permanent(4) is not required." OBJECT snmpNotifyRowStatus SYNTAX INTEGER { active(1) } MIN-ACCESS read-only DESCRIPTION "Create/delete/modify access to the snmpNotifyTable is not required. Support of the values notInService(2), notReady(3), createAndGo(4), createAndWait(5), and destroy(6) is not required." ::= { snmpNotifyCompliances 1 } snmpNotifyBasicFiltersCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for SNMP entities which implement SNMP Traps with filtering, and read-create operations on all related tables." MODULE SNMP-TARGET-MIB MANDATORY-GROUPS { snmpTargetBasicGroup } MODULE -- This Module MANDATORY-GROUPS { snmpNotifyGroup, snmpNotifyFilterGroup } ::= { snmpNotifyCompliances 2 } SNMP-MIB-Compiler-0.06.orig/t/comments.t0100644000175000017500000000164707435074233016611 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib", "../lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; print "1..7\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; &test('foo'); &test('bar'); &test('baz'); &test('-'); &test('bat'); &test('foo'); &test('foo'); sub test { my $expect = shift; my ($res, $k) = $mib->yylex(); $k = '', print scalar $mib->assert unless defined $k; print $res && $k eq $expect ? "" : "not ", "ok ", $t++, "\n"; print "Got '$k' but '$expect' was expected\n" unless $k eq $expect; } # end __DATA__ -- an empty comment -- foo -- the comment only contains a "-" --- bar -- an empty enclosed comment ---- baz -- a real "-" after an empty enclosed comment ----- bat ------ foo -- FOO -- foo SNMP-MIB-Compiler-0.06.orig/t/typereference.t0100644000175000017500000000175207435074233017621 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; $| = 1; print "1..1\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; $mib->{'allow_underscore'} = 1; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; $mib->parse_Module; my $good = { 'type' => 'OBJECT-TYPE', 'access' => 'read-only', 'oid' => [ 'foo', 1 ], 'description' => '" "', 'status' => 'mandatory', 'syntax' => { 'type' => 'INTEGER' }}; print Compare($mib->{'nodes'}{'bar'}, $good) ? "" : "not ", "ok ", $t++, "\n"; # end __DATA__ -- test the bar node to be sure that "FOO-MIB-1-0-3" has been -- successfully read. FOO-MIB-1-0-3 DEFINITIONS ::= BEGIN bar OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION " " ::= { foo 1 } END SNMP-MIB-Compiler-0.06.orig/t/subtypes.t0100755000175000017500000000407607435074233016644 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; print "1..9\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; my ($res, $good); # Test 1 : (3) $res = $mib->parse_subtype(); $good = 3; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 2 : (1..3) $res = $mib->parse_subtype(); $good = { 'range' => { 'min' => 1, 'max' => 3 } }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 3 : (1|3) $res = $mib->parse_subtype(); $good = { 'choice' => [ 1, 3 ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 4 : (1|3|5) $res = $mib->parse_subtype(); $good = { 'choice' => [ 1, 3, 5 ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 5 : (1..3|5) $res = $mib->parse_subtype(); $good = { 'choice' => [ { 'range' => { 'min' => 1, 'max' => 3 } }, 5 ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 6 : (1|3..5) $res = $mib->parse_subtype(); $good = { 'choice' => [ 1, { 'range' => { 'min' => 3, 'max' => 5 } } ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 7 : (1..3|5..7) $res = $mib->parse_subtype(); $good = { 'choice' => [ { 'range' => { 'min' => 1, 'max' => 3 } }, { 'range' => { 'min' => 5, 'max' => 7 } } ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 8 : (1|3..5|7) $res = $mib->parse_subtype(); $good = { 'choice' => [ 1, { 'range' => { 'min' => 3, 'max' => 5 } }, 7 ] }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # Test 9 : (SIZE (1 | 4..85)) $res = $mib->parse_subtype(); $good = { 'size' => { 'choice' => [ 1, { 'range' => { 'min' => 4, 'max' => 85 } } ] } }; print Compare($res, $good) ? "" : "not ", "ok ", $t++, "\n"; # end __DATA__ -- tests for subtypes (3) (1..3) (1 | 3) (1 | 3 | 5) (1..3 | 5) (1 | 3..5) (1..3 | 5..7) (1 | 3..5 | 7) (SIZE (1 | 4..85)) SNMP-MIB-Compiler-0.06.orig/t/agentcapabilities.t0100755000175000017500000001165207435074233020434 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib", "../lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; $| = 1; print "1..1\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; my ($res, $ref, $token, $value); # Test 1 ($token, $value) = $mib->get_token('IDENTIFIER'); my $node = $value; ($token, $value) = $mib->get_token('TYPEMODREFERENCE'); unless ($value eq 'AGENT-CAPABILITIES') { print "not ok $t\n"; exit 0; } $res = $mib->parse_agentcapabilities(); my $good = { 'supports' => { 'SNMPv2-MIB' => { 'variation' => { 'coldStart' => { 'description' => '"A coldStart trap is generated on all reboots."' } }, 'includes' => [ 'systemGroup', 'snmpGroup', 'snmpSetGroup', 'snmpBasicNotificationsGroup' ] }, 'TCP-MIB' => { 'variation' => { 'tcpConnState' => { 'access' => 'read-only', 'description' => '"Unable to set this on 4BSD"' } }, 'includes' => [ 'tcpGroup' ] }, 'IF-MIB' => { 'variation' => { 'ifOperStatus' => { 'description' => '"Information limited on 4BSD"', 'syntax' => { 'values' => { 1 => 'up', 2 => 'down' }, 'type' => 'INTEGER' } }, 'ifAdminStatus' => { 'description' => '"Unable to set test mode on 4BSD"', 'syntax' => { 'values' => { 1 => 'up', 2 => 'down' }, 'type' => 'INTEGER' } } }, 'includes' => [ 'ifGeneralGroup', 'ifPacketGroup' ] }, 'EVAL-MIB' => { 'variation' => { 'exprEntry' => { 'creation-requires' => [ 'evalString' ], 'description' => '"Conceptual row creation supported"' } }, 'includes' => [ 'functionsGroup', 'expressionsGroup' ] }, 'UDP-MIB' => { 'includes' => [ 'udpGroup' ] }, 'IP-MIB' => { 'variation' => { 'ipInAddrErrors' => { 'access' => 'not-implemented', 'description' => '"Information not available on 4BSD"' }, 'ipDefaultTTL' => { 'description' => '"Hard-wired on 4BSD"', 'syntax' => { 'type' => 'INTEGER', 'range' => { 'min' => 255, 'max' => 255 } } }, 'ipNetToMediaEntry' => { 'creation-requires' => [ 'ipNetToMediaPhysAddress' ], 'description' => '"Address mappings on 4BSD require both protocol and media addresses"' } }, 'includes' => [ 'ipGroup', 'icmpGroup' ] } }, 'oid' => [ 'acmeAgents', 1 ], 'description' => '"ACME agent for 4BSD"', 'status' => 'current', 'product-release' => '"ACME Agent release 1.1 for 4BSD"' }; print Compare ($res, $good) ? "" : "not ", "ok 1\n"; # end __DATA__ -- extracted from rfc1904.txt exampleAgent AGENT-CAPABILITIES PRODUCT-RELEASE "ACME Agent release 1.1 for 4BSD" STATUS current DESCRIPTION "ACME agent for 4BSD" SUPPORTS SNMPv2-MIB INCLUDES { systemGroup, snmpGroup, snmpSetGroup, snmpBasicNotificationsGroup } VARIATION coldStart DESCRIPTION "A coldStart trap is generated on all reboots." SUPPORTS IF-MIB INCLUDES { ifGeneralGroup, ifPacketGroup } VARIATION ifAdminStatus SYNTAX INTEGER { up(1), down(2) } DESCRIPTION "Unable to set test mode on 4BSD" VARIATION ifOperStatus SYNTAX INTEGER { up(1), down(2) } DESCRIPTION "Information limited on 4BSD" SUPPORTS IP-MIB INCLUDES { ipGroup, icmpGroup } VARIATION ipDefaultTTL SYNTAX INTEGER (255..255) DESCRIPTION "Hard-wired on 4BSD" VARIATION ipInAddrErrors ACCESS not-implemented DESCRIPTION "Information not available on 4BSD" VARIATION ipNetToMediaEntry CREATION-REQUIRES { ipNetToMediaPhysAddress } DESCRIPTION "Address mappings on 4BSD require both protocol and media addresses" SUPPORTS TCP-MIB INCLUDES { tcpGroup } VARIATION tcpConnState ACCESS read-only DESCRIPTION "Unable to set this on 4BSD" SUPPORTS UDP-MIB INCLUDES { udpGroup } SUPPORTS EVAL-MIB INCLUDES { functionsGroup, expressionsGroup } VARIATION exprEntry CREATION-REQUIRES { evalString } DESCRIPTION "Conceptual row creation supported" ::= { acmeAgents 1 } SNMP-MIB-Compiler-0.06.orig/t/underscore.t0100644000175000017500000000161607435074233017131 0ustar jdivejdive# -*- mode: Perl -*- BEGIN { unshift @INC, "lib" } use strict; use FileHandle; use SNMP::MIB::Compiler; use Data::Compare; local $^W = 1; $| = 1; print "1..1\n"; my $t = 1; my $mib = new SNMP::MIB::Compiler(); $mib->{'filename'} = ''; $mib->{'debug_lexer'} = 0; $mib->{'allow_underscore'} = 1; # create a stream to the pseudo MIB file my $s = Stream->new(*DATA); $mib->{'stream'} = $s; $mib->parse_Module; my $good = { 1 => 'noUnderscore', 2 => 'with_underscore' }; print Compare($mib->{'nodes'}{'underScore'}{'syntax'}{'values'}, $good) ? "" : "not ", "ok ", $t++, "\n"; # end __DATA__ UNDERSCORE-MIB DEFINITIONS ::= BEGIN underScore OBJECT-TYPE SYNTAX INTEGER { noUnderscore(1), with_underscore(2) } ACCESS read-only STATUS mandatory DESCRIPTION " " ::= { under 1 } END SNMP-MIB-Compiler-0.06.orig/MANIFEST0100644000175000017500000000127407435074233015461 0ustar jdivejdiveMANIFEST MANIFEST.SKIP Makefile.PL README lib/Bundle/SNMP/MIB/Compiler.pm lib/SNMP/MIB/Compiler.pm mib-browser-1.gif mibbrowser mibcompiler mibs/APPLETALK-MIB mibs/BRIDGE-MIB mibs/CLNS-MIB mibs/IANAifType-MIB mibs/IF-MIB mibs/IMPLIED-MIB mibs/RFC-1212 mibs/RFC-1215 mibs/RFC1155-SMI mibs/RFC1156-MIB mibs/RFC1157-SNMP mibs/RFC1158-MIB mibs/RFC1213-MIB mibs/SIT-CTR mibs/SIT-NT mibs/SNMPv2-CONF mibs/SNMPv2-MIB mibs/SNMPv2-PDU mibs/SNMPv2-SMI mibs/SNMPv2-TC mibs/SNMPv2-TM mibs/list.txt mibs/obsoletes/SNMPv2-CONF.rfc1904 mibs/obsoletes/SNMPv2-SMI.rfc1902 mibs/obsoletes/SNMPv2-TC.rfc1903 t/agentcapabilities.t t/comments.t t/lexer.t t/modulecompliance.t t/subtypes.t t/typereference.t t/underscore.t SNMP-MIB-Compiler-0.06.orig/mibbrowser0100755000175000017500000004241607435074233016434 0ustar jdivejdive#!/usr/bin/perl -w BEGIN { unshift @INC, "lib" } use strict; use SNMP::MIB::Compiler; use Data::Dumper; use Tk; use Tk::Tree; use Tk::Dialog; use Tk::FBox; my $DATE = '1999/09/06'; my $outdir = 'out'; my $file = shift; $Data::Dumper::Purity = 1; $Data::Dumper::Indent = 1; $Data::Dumper::Terse = 1; my $mib = new SNMP::MIB::Compiler; $mib->add_path('mibs', 'mibs/cisco', 'mibs/com21', '/home/ftp/doc/mibs/ascend'); $mib->add_extension('', '.mib', '.my'); mkdir $outdir, oct 755 unless -d $outdir; $mib->repository($outdir); $mib->{'accept_smiv1'} = 1; $mib->{'accept_smiv2'} = 1; $mib->{'debug_recursive'} = 1; $mib->{'debug_lexer'} = 0; $mib->{'make_dump'} = 1; $mib->{'use_dump'} = 1; $mib->{'do_imports'} = 1; $mib->load($file) || $mib->compile($file) || print scalar $mib->assert if $file; exit if $file; ########################################################################## my $DEBUG = 0; my $title = "MIB Browser"; my $top = new MainWindow(-title => $title); $top->OnDestroy(sub { exit; }); my $wins; my $menu = $top->Frame(-relief => 'raised', -borderwidth => 2)->pack(-side => 'top', -fill => 'x'); my $frame = $top->Frame->pack(-side => 'top', -fill => 'both', -expand => 1); my $up = $frame->Frame->pack(-side => 'top', -fill => 'both', -expand => 1); # my $down = $frame->Frame->pack(-side => 'top'); my $left = $up->Frame->pack(-side => 'left', -expand => 1, -fill => 'both'); $up->Frame(-relief => 'ridge', -bd => 1, -width => 2)->pack(-side => 'left', -fill => 'y', -expand => 'no'); my $right = $up->Frame->pack(-side => 'right', -fill => 'y', -padx => 10, -pady => 10); my $Help = $menu->Menubutton(-text => 'Help', -underline => 0)->pack(-side => 'right'); my $HM = $Help->Menu(-tearoff => 0); $Help->configure(-menu => $HM); my $About = $top->Dialog( -title => "About $title", -font => '-*-Helvetica-Medium-R-Normal--*-140-*-*-*-*-*-*', -bitmap => 'info', -default_button => 'OK', -buttons => ['OK'], -text => " $title\n\nSNMP::MIB::Compiler " . "Version $SNMP::MIB::Compiler::VERSION\n" . "Author: Fabien Tassin\nDate: $DATE", ); $Help->command(-label => '~About...', -command => [$About => 'Show']); my $File = $menu->Menubutton(-text => 'File', -underline => 0)->pack(-side => 'left'); my $FM = $File->Menu(-tearoff => 1); $File->configure(-menu => $FM); my $Option = $menu->Menubutton(-text => 'Options', -underline => 0)->pack(-side => 'left'); my $OM = $Option->Menu(-tearoff => 1); $Option->configure(-menu => $OM); my $t1 = "MIB locations"; $Option->command(-label => "$t1...", -command => sub { &choose_list($t1, "$t1:", \$mib->{'srcpath'})}); my $t2 = "MIB file extensions"; $Option->command(-label => "$t2...", -command => sub { &choose_list($t2, "$t2:", \$mib->{'extensions'}, '"')}); $Option->separator; $Option->checkbutton(-label => 'Accept SMIv~1', -variable => \$mib->{'accept_smiv1'}); $Option->checkbutton(-label => 'Accept SMIv~2', -variable => \$mib->{'accept_smiv2'}); $Option->separator; $Option->checkbutton(-label => 'Allow under~scores', -variable => \$mib->{'allow_underscore'}); $Option->checkbutton(-label => 'Allow lowcase ~hstrings', -variable => \$mib->{'allow_lowcase_hstrings'}); $Option->checkbutton(-label => 'Allow lowcase ~bstrings', -variable => \$mib->{'allow_lowcase_bstrings'}); $Option->checkbutton(-label => 'Allow keyword \'A~NY\'', -variable => \$mib->{'allow_keyword_any'}); $Option->separator; $Option->checkbutton(-label => 'Debug bro~wser', -variable => \$DEBUG); $Option->checkbutton(-label => '~Debug parser', -variable => \$mib->{'debug_lexer'}); $Option->checkbutton(-label => 'Debug ~recursively', -variable => \$mib->{'debug_recursive'}); $Option->separator; $Option->checkbutton(-label => '~Make dump', -variable => \$mib->{'make_dump'}); $Option->checkbutton(-label => '~Use dump', -variable => \$mib->{'use_dump'}); $Option->separator; $Option->checkbutton(-label => '~Import dependencies', -variable => \$mib->{'do_imports'}); my $tree = $left->ScrlTree(-separator => '.', -width => 40, -height => 25, # -background => 'white', -scrollbars => 'osoe'); $tree->pack(-expand => 1, -fill => 'both', -padx => 10, -pady => 10, -side => 'top'); my $entries; $tree->configure(-opencmd => sub { dyntree_opendir($tree, $mib, @_); }, -command => sub { print_node($mib, $entries, @_); }); # Add the root of the tree dyntree_adddir($tree, $mib, 'iso'); my @relief = (-relief => 'sunken'); my @pl = (-side => 'top', -padx => 10, -pady => 5, -fill => 'x'); my $row = 0; for my $ent ('OID', 'Label', 'Status', 'Access', 'Type') { my $f = $right->Frame->pack(-side => 'top', -fill => 'x', -expand => 0); $$entries{$ent} = { 'l' => $f->Label(-text => "$ent :", -anchor => 'e', -justify => 'right', -width => 8, )->pack(-side => 'left'), 'e' => $f->Entry(@relief)->pack(-side => 'right', -fill => 'both', -expand => 1), }; } my $ent_other = $right->Scrolled('Text', @relief, -height => 5, -width => 70)->packAdjust(-fill => 'both', -expand => 0, -side => 'bottom'); my $ent_desc = $right->Scrolled('Text', @relief, -width => 70)->pack(-fill => 'both', -expand => 1, -side => 'bottom'); my $l1 = "Load precompiled MIBs"; $File->command(-label => "$l1...", -command => sub { &load_list($l1, "$l1:", $mib, $tree); }); my $l2 = "Compile MIBs"; $File->command(-label => "$l2...", -command => sub { &compile_list($l2, "$l2:", $mib, $tree); }); $File->separator; $File->command(-label => '~Quit', -command => sub { exit; }); MainLoop(); sub print_node { my $mib = shift; my $entries = shift; my $oid = shift; my ($node) = $oid =~ m/([^\.]+)$/; $oid = $mib->resolve_oid($node); my $OID = $mib->convert_oid($oid); my $access = $mib->{'nodes'}{$node}{'access'} || ''; my $status = $mib->{'nodes'}{$node}{'status'} || ''; my $desc = $mib->{'nodes'}{$node}{'description'} || ''; my $type = $mib->{'nodes'}{$node}{'type'} || ''; my $o = {}; for my $k ('syntax', 'module', 'last-updated', 'organization', 'contact-info', 'NOTIFICATIONS', 'objects') { $$o{$k} = $mib->{'nodes'}{$node}{$k} if defined $mib->{'nodes'}{$node}{$k}; } my $other = scalar keys %$o ? Dumper $o : ""; $desc =~ s/("$|^")//g; my @t = split /\n/, $desc; if (scalar @t > 1) { $desc = ''; my $r; for my $d (@t) { $r = $1, last if $d =~ m/^(\s+)/; } if ($r) { for my $d (@t) { $d =~ s/^$r//; $desc .= "$d\n"; } } } $$entries{'OID'}{'e'}->delete(0, length $$entries{'OID'}{'e'}->get); $$entries{'Label'}{'e'}->delete(0, length $$entries{'Label'}{'e'}->get); $$entries{'Status'}{'e'}->delete(0, length $$entries{'Status'}{'e'}->get); $$entries{'Access'}{'e'}->delete(0, length $$entries{'Access'}{'e'}->get); $$entries{'Type'}{'e'}->delete(0, length $$entries{'Type'}{'e'}->get); $ent_desc->delete('1.0', 'end'); $ent_other->delete('1.0', 'end'); $$entries{'OID'}{'e'}->insert (0, $oid); $$entries{'Label'}{'e'}->insert (0, $OID); $$entries{'Status'}{'e'}->insert (0, $status); $$entries{'Access'}{'e'}->insert (0, $access); $$entries{'Type'}{'e'}->insert (0, $type); $ent_desc->insert ('0.0', $desc); $ent_other->insert ('0.0', $other); print "$node => ", Dumper $mib->{'nodes'}{$node} if $DEBUG; } sub dyntree_adddir { my $tree = shift; my $mib = shift; my $oid = shift; my $prec = shift || ''; my $level = shift || 0; return unless defined $mib->{'nodes'}; my $id = $prec ? "$prec.$oid" : $oid; my $img = defined $mib->{'tree'}{$oid} ? "winfolder" : defined $mib->{'nodes'}{$oid}{'status'} ? "file" : "winfolder"; $tree->add($id, -text => $oid, -image => $tree->Getimage($img)); $tree->setmode($id, defined $mib->{'tree'}{$oid} ? "open" : "none" ); $tree->open($id) if $level <= 5; } sub dyntree_opendir { my $tree = shift; my $mib = shift; my $oid = shift; if (my @kids = $tree->infoChildren($oid)) { for my $kid (@kids) { $tree->show(-entry => $kid); } return; } my @t = split /\./, $oid; my $o = $t[-1]; my $p = $t[-2] unless $#t == 0; for my $node (sort { $a <=> $b } keys %{$mib->{'tree'}{$o}}) { dyntree_adddir($tree, $mib, $mib->{'tree'}{$o}{$node}, $oid, $#t + 1); } } sub compile_list { my $title = shift; my $descr = shift; my $mib = shift; my $tree = shift; if (defined $$wins{'compile_list'}{$title}) { $$wins{'compile_list'}{$title}->deiconify; $$wins{'compile_list'}{$title}->raise; return; } my $win = MainWindow->new(-title => $title); $$wins{'compile_list'}{$title} = $win; $win->OnDestroy(sub { undef $$wins{'compile_list'}{$title}; undef $$wins{'compile_list'}{' data '}{$title}; }); $win->Frame(-bd => 1, -height => 7)->pack(-side => 'top', -fill => 'x', -expand => 0); my $d = $win->Frame->pack(-padx => 10, -side => 'top', -expand => 0, -fill => 'x'); $d->Label(-text => $descr)->pack(-side => 'left'); my $top = $win->Frame->pack(-padx => 10, -pady => 10, -side => 'top', -expand => 1, -fill => 'both'); # $top->Label(-text => "not implemented yet")->pack(-side => 'left'); my $bot = $win->Frame->pack(-padx => 10, -pady => 10,-side => 'top', -expand => 0, -fill => 'x'); my $ent = $top->Entry(-width => 40)->pack(-side => 'left'); my $browse = $top->Button(-text => "Browse ...", -command => sub { fileDialog($top, $ent, 'open')} )->pack(-side => 'left'); $bot->Button(-text => 'Ok', -command => sub { if ($ent->get) { $mib->compile($ent->get); print scalar $mib->assert; $tree->delete('all'); dyntree_adddir($tree, $mib, 'iso'); } undef $$wins{'compile_list'}{$title}; undef $$wins{'compile_list'}{' data '}{$title}; $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Cancel', -command => sub { undef $$wins{'compile_list'}{$title}; undef $$wins{'compile_list'}{' data '}{$title}; $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); } sub fileDialog { my $w = shift; my $ent = shift; my $types = [["MIB files", [ '.', '.my', '.mib'] ], ["All files", '*'] ]; my $file = $w->getOpenFile(-filetypes => $types); if (defined $file && $file ne '') { $ent->delete(0, 'end'); $ent->insert(0, $file); $ent->xview('end'); } } sub load_list { my $title = shift; my $descr = shift; my $mib = shift; my $tree = shift; if (defined $$wins{'load_list'}{$title}) { $$wins{'load_list'}{$title}->deiconify; $$wins{'load_list'}{$title}->raise; return; } my $win = MainWindow->new(-title => $title); $$wins{'load_list'}{$title} = $win; $win->OnDestroy(sub { undef $$wins{'load_list'}{$title}; undef $$wins{'load_list'}{' data '}{$title}; }); $win->Frame(-bd => 1, -height => 7)->pack(-side => 'top', -fill => 'x', -expand => 0); my $d = $win->Frame->pack(-padx => 10, -side => 'top', -expand => 0, -fill => 'x'); $d->Label(-text => $descr)->pack(-side => 'left'); my $top = $win->Frame->pack(-padx => 10, -pady => 10, -side => 'top', -expand => 1, -fill => 'both'); my $bot = $win->Frame->pack(-padx => 10, -pady => 10,-side => 'top', -expand => 0, -fill => 'x'); my $list = $top->Scrolled('Listbox', -height => 10, -selectmode => 'extended', -scrollbars => 'e')->pack(-side => 'left', -expand => 1, -fill => 'both'); $bot->Button(-text => 'Ok', -command => sub { &load_list_load($title, $mib, $list, $tree) if $list->get('anchor'); undef $$wins{'load_list'}{$title}; undef $$wins{'load_list'}{' data '}{$title}; $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Cancel', -command => sub { undef $$wins{'load_list'}{$title}; undef $$wins{'load_list'}{' data '}{$title}; $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Load', -command => sub { return unless $list->get('anchor'); &load_list_load($title, $mib, $list, $tree); })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Refresh', -command => sub { $list->delete(0, 'end'); my $mibs = &load_list_refresh($title, $mib); $list->insert(0, @$mibs); })->pack(-side => 'left', -expand => 1, -fill => 'x'); my $mibs = &load_list_refresh($title, $mib); $list->insert(0, @$mibs); } sub load_list_load { my $title = shift; my $mib = shift; my $list = shift; my $tree = shift; my @cur = $list->curselection; local $| = 1; for my $elem (@cur) { print "Loading ${$$wins{'load_list'}{' data '}{$title}}[$elem]..." if $DEBUG; $mib->load($ {$$wins{'load_list'}{' data '}{$title}}[$elem]); print "done.\n" if $DEBUG; } $tree->delete('all'); dyntree_adddir($tree, $mib, 'iso'); } sub load_list_refresh { my $title = shift; my $mib = shift; my $dir = $mib->repository; my $mibs = []; opendir(DIR, $dir) || die "Error: can't opendir $dir: $!\n"; while (defined (my $file = readdir(DIR))) { push @$mibs, $1 if $file =~ m/^(.*?)$mib->{'dumpext'}$/; } closedir DIR; @$mibs = sort { lc $a cmp lc $b } @$mibs; $$wins{'load_list'}{' data '}{$title} = $mibs; } sub choose_list { my $title = shift; my $descr = shift; my $var = shift; my $quote = shift; if (defined $$wins{'choose_list'}{$title}) { $$wins{'choose_list'}{$title}->deiconify; $$wins{'choose_list'}{$title}->raise; return; } my $win = MainWindow->new(-title => $title); $$wins{'choose_list'}{$title} = $win; $win->OnDestroy(sub { undef $$wins{'choose_list'}{$title} }); $win->Frame(-bd => 1, -height => 7)->pack(-side => 'top', -fill => 'x', -expand => 0); my $d = $win->Frame->pack(-padx => 10, -side => 'top', -expand => 0, -fill => 'x'); $d->Label(-text => $descr)->pack(-side => 'left'); my $top = $win->Frame->pack(-padx => 10, -pady => 10, -side => 'top', -expand => 1, -fill => 'both'); my $add = $win->Frame->pack(-side => 'top', -expand => 0, -fill => 'x', -padx => 10); my $eadd = $add->Entry()->pack(-side => 'left', -expand => 1, -fill => 'x'); $add->Frame(-bd => 1, -width => 10)->pack(-side => 'left', -fill => 'x', -expand => 0); $win->Frame(-bd => 1, -height => 10)->pack(-side => 'top', -fill => 'x', -expand => 0); $win->Frame(-relief => 'ridge', -bd => 1, -height => 2)->pack(-side => 'top', -fill => 'x', -expand => 0); my $bot = $win->Frame->pack(-padx => 10, -pady => 10,-side => 'top', -expand => 0, -fill => 'x'); my $list = $top->Scrolled('Listbox', -height => 5, -scrollbars => 'e')->pack(-side => 'left', -expand => 1, -fill => 'both'); $top->Frame(-bd => 1, -height => 2)->pack(-padx => 5, -side => 'left', -fill => 'y', -expand => 0); my @v = @$$var; map { $_ = $quote . $_ . $quote } @v if $quote; $list->insert(0, @v); $add->Button(-text => 'Add', -width => 8, -command => sub { my $v = $eadd->get; $eadd->delete(0, length $v); $v = $quote . $v . $quote if $quote; $list->insert('end', $v); push @v, $v; $list->focus; })->pack(-side => 'right', -expand => 0); my $right = $top->Frame->pack(-side => 'right'); $right->Button(-text => 'Up', -width => 8, -command => sub { return unless $list->get('anchor'); my $cur = $list->curselection; if ($cur) { $list->delete($cur); $list->insert($cur - 1, $v[$cur]); $list->activate($cur - 1); $list->selectionSet($cur - 1); ($v[$cur], $v[$cur - 1]) = ($v[$cur - 1], $v[$cur]); } })->pack(-side => 'top', -expand => 1, -fill => 'both'); $right->Button(-text => 'Down', -width => 8, -command => sub { return unless $list->get('anchor'); my $cur = $list->curselection; if (defined $cur && $cur ne '' && $cur < $#v) { $list->delete($cur); $list->insert($cur + 1, $v[$cur]); $list->activate($cur + 1); $list->selectionSet($cur + 1); ($v[$cur], $v[$cur + 1]) = ($v[$cur + 1], $v[$cur]); } })->pack(-side => 'top', -expand => 1, -fill => 'both'); $right->Button(-text => 'Remove', -width => 8, -command => sub { return unless $list->get('anchor'); my $cur = $list->curselection; if (defined $cur && $cur ne '') { $list->delete($cur); $list->selectionSet($cur); splice @v, $cur, 1; } })->pack(-side => 'top', -expand => 1, -fill => 'both'); $bot->Button(-text => 'Ok', -command => sub { $$var = []; map { ($_) = $_ =~ m/^$quote(.*)$quote$/ if $quote; push @$$var, $_; } @v; $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Cancel', -command => sub { $win->withdraw; })->pack(-side => 'left', -expand => 1, -fill => 'x'); $bot->Button(-text => 'Apply', -command => sub { $$var = []; map { ($_) = $_ =~ m/^$quote(.*)$quote$/ if $quote; push @$$var, $_; } @v; })->pack(-side => 'left', -expand => 1, -fill => 'x'); } SNMP-MIB-Compiler-0.06.orig/MANIFEST.SKIP0100644000175000017500000000023607435074233016223 0ustar jdivejdive^Makefile(\.old)?$ ^MANIFEST\.bak$ ^(out|doc|repository)/ ^mibs/(cisco|com21|Centillion-1000) .*~$ ^blib/ (^|/)TAGS$ ^old/ .*\.tar\.gz$ ^pm_to_blib$ ^pod2man SNMP-MIB-Compiler-0.06.orig/lib/0040755000175000017500000000000007435074233015075 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/SNMP/0040755000175000017500000000000007435074233015652 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/SNMP/MIB/0040755000175000017500000000000007435074233016261 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/SNMP/MIB/Compiler.pm0100755000175000017500000025222607435074233020402 0ustar jdivejdive# -*- Mode: Perl -*- ########################################################################## # MIB Compiler supporting SMI(v1) and SMIv2 # # Author: Fabien Tassin # Copyright 1998, 1999 Fabien Tassin ########################################################################## # See Also : # Rec. X.208: Specification of Abstract Syntax Notation (ASN.1) # RFC 1155: Structure and Identification of Management Information # for TCP/IP-based Internets # RFC 1158: Management Information Base for network management of # TCP/IP-based internets: MIB-II # RFC 1212: Concise MIB definitions # RFC 1215: Convention for defining traps for use with the SNMP # RFC 1902: Structure of Management Information for Version 2 of the # Simple Network Management Protocol (SNMPv2) # RFC 1903: Textual Conventions for Version 2 of the Simple Network # Management Protocol (SNMPv2) # RFC 1904: Conformance Statements for Version 2 of the Simple Network # Management Protocol (SNMPv2) ########################################################################## # ABSOLUTELY NO WARRANTY WITH THIS PACKAGE. USE IT AT YOUR OWN RISKS. ########################################################################## # TODO: # - resolve constants (e.g. 'max-bindings' in SNMPv2-PDU) # - check a value against a syntax # - extend the API # - more test scripts package SNMP::MIB::Compiler; use strict; use vars qw(@ISA @EXPORT $VERSION $DEBUG); use Exporter; use Carp; use Data::Dumper; use FileHandle; @ISA = qw(Exporter); @EXPORT = (); $VERSION = 0.06; $DEBUG = 1; # no longer used ###################################################################### # ASN1 items. (See Rec. X.208 8) # Type references (8.2) my $ITEM_TYPEREFERENCE_PAT = '[A-Z](\-?[A-Za-z0-9])*'; # Reserved character sequences (See Table 3/X.208) # and Additional keyword items (See A.2.9) my @RESERVED_CHAR_SEQ = ('BOOLEAN', 'INTEGER', 'BIT', 'STRING', 'OCTET', 'NULL', 'SEQUENCE', 'OF', 'SET', 'IMPLICIT', 'CHOICE', 'ANY', 'EXTERNAL', 'OBJECT', 'IDENTIFIER', 'OPTIONAL', 'DEFAULT', 'COMPONENTS', 'UNIVERSAL', 'APPLICATION', 'PRIVATE', 'TRUE', 'FALSE', 'BEGIN', 'END', 'DEFINITIONS', 'EXPLICIT', 'ENUMERATED', 'EXPORTS', 'IMPORTS', 'REAL', 'INCLUDES', 'MIN', 'MAX', 'SIZE', 'FROM', 'WITH', 'COMPONENT', 'PRESENT', 'ABSENT', 'DEFINED', 'BY', 'PLUS-INFINITY', 'MINUS-INFINITY', 'TAGS', 'MACRO', 'TYPE', 'NOTATION', 'VALUE', # Macro keywords ); # my $ITEM_TYPEREFERENCE = '(?!' . # (join '(?!\-?[A-Za-z0-9])|', @RESERVED_CHAR_SEQ) . # '(?!\-?[A-Za-z0-9]))' . $ITEM_TYPEREFERENCE_PAT; my $ITEM_TYPEREFERENCE = '(?!(?:' . (join '|', @RESERVED_CHAR_SEQ) . ')(?!\-?[A-Za-z0-9]))' . $ITEM_TYPEREFERENCE_PAT; # Identifiers (8.3) my $ITEM_IDENTIFIER = '\b[a-z](?:\-?[A-Za-z0-9])*\b'; my $ITEM_IDENTIFIER2 = '\b[a-z](?:[\-_]?[A-Za-z0-9])*\b'; # w/allow_underscore # Number item (8.8) my $ITEM_NUMBER = '\b(?:0|[1-9][0-9]*)\b'; # Binary string item (8.9) (bstring) my $ITEM_BINARYSTRING = '\'[01]*\'B'; # Hexadecimal string item (8.10) (hstring) my $ITEM_HEXADECIMALSTRING = '\'[A-F0-9]*\'H'; # Single character items (8.13) my $ITEM_SINGLECHARACTER = '[\{\}\<,\.\(\)\[\]\-;]'; sub MIBERROR() { 0 }; sub MIBWARN() { 1 }; sub MIBNOTICE() { 2 }; ###################################################################### # Tokens my $TOKEN = &create_tokens(); my $BSTRING = &add_token ($TOKEN, 'BSTRING'); my $HSTRING = &add_token ($TOKEN, 'HSTRING'); my $CSTRING = &add_token ($TOKEN, 'CSTRING'); my $ASSIGNMENT = &add_token ($TOKEN, 'ASSIGNMENT'); my $NUMBER = &add_token ($TOKEN, 'NUMBER'); my $IDENTIFIER = &add_token ($TOKEN, 'IDENTIFIER'); my $TYPEMODREFERENCE = &add_token ($TOKEN, 'TYPEMODREFERENCE'); my $EMPTY = &add_token ($TOKEN, 'EMPTY'); my $BOOLEAN = &add_token ($TOKEN, 'BOOLEAN'); my $INTEGER = &add_token ($TOKEN, 'INTEGER'); my $BIT = &add_token ($TOKEN, 'BIT'); my $STRING = &add_token ($TOKEN, 'STRING'); my $OCTET = &add_token ($TOKEN, 'OCTET'); my $NULL = &add_token ($TOKEN, 'NULL'); my $SEQUENCE = &add_token ($TOKEN, 'SEQUENCE'); my $OF = &add_token ($TOKEN, 'OF'); my $SET = &add_token ($TOKEN, 'SET'); my $IMPLICIT = &add_token ($TOKEN, 'IMPLICIT'); my $CHOICE = &add_token ($TOKEN, 'CHOICE'); my $ANY = &add_token ($TOKEN, 'ANY'); my $EXTERNAL = &add_token ($TOKEN, 'EXTERNAL'); my $OBJECT = &add_token ($TOKEN, 'OBJECT'); my $OPTIONAL = &add_token ($TOKEN, 'OPTIONAL'); my $DEFAULT = &add_token ($TOKEN, 'DEFAULT'); my $COMPONENTS = &add_token ($TOKEN, 'COMPONENTS'); my $UNIVERSAL = &add_token ($TOKEN, 'UNIVERSAL'); my $APPLICATION = &add_token ($TOKEN, 'APPLICATION'); my $PRIVATE = &add_token ($TOKEN, 'PRIVATE'); my $TRUE = &add_token ($TOKEN, 'TRUE'); my $FALSE = &add_token ($TOKEN, 'FALSE'); my $BEGIN = &add_token ($TOKEN, 'BEGIN'); my $END = &add_token ($TOKEN, 'END'); my $DEFINITIONS = &add_token ($TOKEN, 'DEFINITIONS'); my $EXPLICIT = &add_token ($TOKEN, 'EXPLICIT'); my $ENUMERATED = &add_token ($TOKEN, 'ENUMERATED'); my $EXPORTS = &add_token ($TOKEN, 'EXPORTS'); my $IMPORTS = &add_token ($TOKEN, 'IMPORTS'); my $REAL = &add_token ($TOKEN, 'REAL'); my $INCLUDES = &add_token ($TOKEN, 'INCLUDES'); my $MIN = &add_token ($TOKEN, 'MIN'); my $MAX = &add_token ($TOKEN, 'MAX'); my $SIZE = &add_token ($TOKEN, 'SIZE'); my $FROM = &add_token ($TOKEN, 'FROM'); my $WITH = &add_token ($TOKEN, 'WITH'); my $COMPONENT = &add_token ($TOKEN, 'COMPONENT'); my $PRESENT = &add_token ($TOKEN, 'PRESENT'); my $ABSENT = &add_token ($TOKEN, 'ABSENT'); my $DEFINED = &add_token ($TOKEN, 'DEFINED'); my $BY = &add_token ($TOKEN, 'BY'); my $PLUSINFINITY = &add_token ($TOKEN, 'PLUSINFINITY'); my $MINUSINFINITY = &add_token ($TOKEN, 'MINUSINFINITY'); my $TAGS = &add_token ($TOKEN, 'TAGS'); my $MACRO = &add_token ($TOKEN, 'MACRO'); my $TYPE = &add_token ($TOKEN, 'TYPE'); my $NOTATION = &add_token ($TOKEN, 'NOTATION'); my $VALUE = &add_token ($TOKEN, 'VALUE'); my $MACROTYPE = &add_token ($TOKEN, 'MACROTYPE'); my $MACROVALUE = &add_token ($TOKEN, 'MACROVALUE'); my $keywords = { 'BOOLEAN' => $BOOLEAN, 'INTEGER' => $INTEGER, 'BIT' => $BIT, 'STRING' => $STRING, 'OCTET' => $OCTET, 'NULL' => $NULL, 'SEQUENCE' => $SEQUENCE, 'OF' => $OF, 'SET' => $SET, 'IMPLICIT' => $IMPLICIT, 'CHOICE' => $CHOICE, 'ANY' => $ANY, 'EXTERNAL' => $EXTERNAL, 'OBJECT' => $OBJECT, 'IDENTIFIER' => $IDENTIFIER, 'OPTIONAL' => $OPTIONAL, 'DEFAULT' => $DEFAULT, 'COMPONENTS' => $COMPONENTS, 'UNIVERSAL' => $UNIVERSAL, 'APPLICATION' => $APPLICATION, 'PRIVATE' => $PRIVATE, 'TRUE' => $TRUE, 'FALSE' => $FALSE, 'BEGIN' => $BEGIN, 'END' => $END, 'DEFINITIONS' => $DEFINITIONS, 'EXPLICIT' => $EXPLICIT, 'ENUMERATED' => $ENUMERATED, 'EXPORTS' => $EXPORTS, 'IMPORTS' => $IMPORTS, 'REAL' => $REAL, 'INCLUDES' => $INCLUDES, 'MIN' => $MIN, 'MAX' => $MAX, 'SIZE' => $SIZE, 'FROM' => $FROM, 'WITH' => $WITH, 'COMPONENT' => $COMPONENT, 'PRESENT' => $PRESENT, 'ABSENT' => $ABSENT, 'DEFINED' => $DEFINED, 'BY' => $BY, 'TAGS' => $TAGS, 'MACRO' => $MACRO, 'TYPE' => $TYPE, 'NOTATION' => $NOTATION, 'VALUE' => $VALUE, 'MACROTYPE' => $MACROTYPE, 'MACROVALUE' => $MACROVALUE, }; ###################################################################### # Create the standard tokens sub create_tokens { my $TOKEN = []; my $i = -1; while ($i++ < 255) { $$TOKEN[$i] = chr $i; } $TOKEN; } # Add a 'specialized' token to the current list of tokens sub add_token { my $TOKEN = shift; my $k = shift; push @$TOKEN, $k; $#$TOKEN; } # The 'heart' of the compiler: the parser # returns the couple token/value or the scalar 0 if something goes wrong. sub yylex { my $self = shift; my $s = $self->{'stream'}; my $val; my $c = ' '; # initialization. CHAR: while ($c ne '' && $c !~ m/^[A-Za-z0-9:=,\{\}<.\(\)\[\]\'\">|]$/o) { # remove useless blanks and comments 1 while ($c = $s->getc) eq ' ' || $c eq "\t" || $c eq "\n" || $c eq "\r"; return 0 if $c eq ''; if ($c eq '-') { # The first char of a "comment" (See 8.6) $c = $s->getc; if ($c eq '') { # a single hyphen followed by EOF $s->ungetc; # keep EOF for the next yylex call $c = '-'; last CHAR; } if ($c eq '-') { # it is a real "comment" marker while (1) { 1 while ($c = $s->getc) ne '' && $c ne '-' && $c ne "\n" && $c ne "\r"; return 0 if $c eq ''; # End of file. if ($c eq '-') { $c = $s->getc; return 0 if $c eq ''; # End of file. next CHAR if $c eq "\n" || $c eq "\r" || $c eq '-'; # End of comment. } next CHAR if $c eq "\n"; # End of comment. } } else { # it is NOT a comment but a single hyphen. $s->ungetc; $c = '-'; last CHAR; } } else { last; } } # Here, the current char is a valid ASN.1 char, it can be a hyphen but # not a double hyphen (comment start). # Read a word and return the correspondant token. return 0 if $c eq ''; if ($c =~ m/^$ITEM_SINGLECHARACTER$/o) { # it is a single characters return (ord ($c), $c); } if ($c =~ m/^[>|]/o) { # it is a single extension characters return (ord ($c), $c); } if ($c eq '\'') { # it can be a cstring or a hstring. $val = $c; # while (($c = $s->getc) ne '' && ($c =~ m/[0-9A-F]/o || # ($self->{'allow_lowcase_hstrings'} && $c =~ m/[a-f]/o))) { while (($c = $s->getc) ne '' && $c =~ m/[0-9A-Fa-f]/o) { $val .= $c; } return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Unexpected EOF near \"$val\"") if $c eq ''; if ($c eq '\'') { $val .= $c; $c = $s->getc; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Unexpected EOF near \"$val\"") if $c eq ''; $val .= $c; # it must be 'B' or 'H'. $c = 'B' if $c eq 'b' && $self->{'allow_lowcase_bstrings'}; if ($c =~ m/[hH]/o && $self->{'allow_lowcase_hstrings'}) { $c = 'H'; $val = uc $val; } if ($c eq 'B' && $val =~ m/^$ITEM_BINARYSTRING$/o) { return ($BSTRING, $val); } if ($c eq 'H' && $val =~ m/^$ITEM_HEXADECIMALSTRING$/o) { return ($HSTRING, $val); } return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Invalid \"$val\". See 'allow_lowcase_{b|h}strings' switches"); } return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Syntax error near \"$val\""); } if ($c eq '"') { # a cstring $val = $c; while (1) { while (($c = $s->getc) ne '' && $c ne '"') { $val .= $c; } return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Unexpected EOF near \"$val\"") if $c eq ''; $val .= $c; $c = $s->getc; if ($c eq '' || $c ne '"') { $s->ungetc if $c; return ($CSTRING, $val); } $val .= $c; } } if ($c eq ':') { # an assignment item $val = $c; $c = $s->getc; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Unexpected EOF near \"$val\"") if $c eq ''; if ($c ne ':') { $s->ungetc if $c; } else { $val .= $c; $c = $s->getc; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Unexpected EOF near \"$val\"") if $c eq ''; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Syntax error near \"$val\"") unless $c eq '='; $val .= $c; return ($ASSIGNMENT, $val); } } if ($c =~ m/\d/o) { # it is a number $val = $c; while (($c = $s->getc) ne '' && $c =~ m/\d/o) { $val .= $c; } $s->ungetc if $c; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Syntax error near \"$val\"") unless $val =~ m/^$ITEM_NUMBER$/; return ($NUMBER, $val); } if ($c =~ m/[a-zA-Z]/o) { $val = $c; while (1) { while (($c = $s->getc) ne '' && ($c =~ m/[A-Za-z0-9]/o || ($self->{'allow_underscore'} && $c eq '_'))) { $val .= $c; } if ($c eq '-') { $c = $s->getc; # a hyphen shall not be the last character return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Syntax error near \"$val\"") if $c eq '' || $c eq "\n" || $c eq "\r"; if ($c eq '-') { # it is a comment. COMM: while (1) { 1 while ($c = $s->getc) ne '' && $c ne '-' && $c ne "\n" && $c ne "\r"; last COMM if $c eq '' || # End of file... $c eq "\n" || $c eq "\r"; # End of comment. $c = $s->getc; last COMM if $c eq '' || # End of file... $c eq "\n" || $c eq "\r" || $c eq '-'; # End of comment. $s->ungetc; } # TypeReference or ModuleReference return ($TYPEMODREFERENCE, $val) if $val =~ m/^$ITEM_TYPEREFERENCE$/o; # Identifier or ValueReference return ($IDENTIFIER, $val) if $val =~ m/^$ITEM_IDENTIFIER$/o; return ($IDENTIFIER, $val) if $val =~ m/^$ITEM_IDENTIFIER2$/o && $self->{'allow_underscore'}; return ($PLUSINFINITY, $val) if $val eq 'PLUS-INFINITY'; return ($MINUSINFINITY, $val) if $val eq 'MINUS-INFINITY'; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "Syntax error near \"$val\""); } $s->ungetc if $c ne ''; $val .= "-"; } if ($c !~ m/[A-Za-z0-9]/o) { $s->ungetc if $c; # Is it a known keyword ? return ($$keywords{$val}, $val) if defined $$keywords{$val}; # TypeReference/ModuleReference/MacroReference/ProductionReference/ # LocalTypeReference return ($TYPEMODREFERENCE, $val) if $val =~ m/^$ITEM_TYPEREFERENCE$/o; # Identifier/ValueReference/LocalValueReference return ($IDENTIFIER, $val) if $val =~ m/^$ITEM_IDENTIFIER$/o; return ($IDENTIFIER, $val) if $val =~ m/^$ITEM_IDENTIFIER2$/o && $self->{'allow_underscore'}; return ($PLUSINFINITY, $val) if $val eq 'PLUS-INFINITY'; return ($MINUSINFINITY, $val) if $val eq 'MINUS-INFINITY'; return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "'$val' unrecognized"); } } } return $self->assert(MIBERROR, $self->{'filename'}, $s->{'lineno'}, "'$c' unrecognized"); } # Constructor sub new { my $this = shift; my $class = ref($this) || $this; my $self = {}; bless $self, $class; $self->initialize(); return $self; } # Create the MIB tree with some special nodes. sub initialize { my $self = shift; $self->{'token_list'} = []; $self->{'srcpath'} = []; # extension of the produced files $self->{'dumpext'} = ".dump"; # '_' is not defined in the ASN.1 charset set but is sometimes found # in SNMP MIBs. This flag can be used to avoid parsing errors on such # mibs. $self->{'allow_underscore'} = 0; # 'abfc'h is invalid (must be 'ABFC'H) but is sometimes used in SNMP MIBs. $self->{'allow_lowcase_hstrings'} = 0; # '1001'b is invalid (must be '1001'B) but is sometimes used in SNMP MIBs. $self->{'allow_lowcase_bstrings'} = 0; $self->{'allow_keyword_any'} = 1; # Add the 3 roots of the tree. # These nodes cannot be specified using valid ASN.1 clauses. $self->{'root'}{'ccitt'}{'oid'} = [ 0 ]; $self->{'root'}{'iso'}{'oid'} = [ 1 ]; $self->{'root'}{'joint-iso-ccitt'}{'oid'} = [ 2 ]; # debug flags $self->{'debug_recursive'} = 0; $self->{'debug_lexer'} = 0; $self->{'make_dump'} = 1; $self->{'use_dump'} = 1; $self->{'accept_smiv1'} = 1; $self->{'accept_smiv2'} = 1; # should we import dependencies ? $self->{'do_imports'} = 1; } sub assert { my $self = shift; my $level = shift; my $file = shift; my $line = shift; my $msg = shift; if (defined $level) { $self->{'msg'} = [] unless defined $self->{'msg'}; my ($cpackage, $cfile, $cline) = caller; push @{$self->{'msg'}}, { 'level' => $level, 'file' => $file, 'line' => $line, 'msg' => sprintf($msg, @_), 'cpackage' => $cpackage, 'cfile' => $cfile, 'cline' => $cline, }; return $level; } else { if (wantarray) { return $level; } else { my $s = ""; map { $s .= sprintf "Error %d: %s at %s line %d.%s\n", $$_{'level'}, $$_{'msg'}, $$_{'file'}, $$_{'line'}, $DEBUG ? sprintf " [%s %d]", $$_{'cfile'}, $$_{'cline'}: ""; } @{$self->{'msg'}} if defined $self->{'msg'}; return $s; } } } # Get the next token from the parser sub get_token { my $self = shift; my $needed = shift; my ($res, $k); if (@{$self->{'token_list'}}) { my $temp = shift @{$self->{'token_list'}}; ($res, $k) = ($$temp[0], $$temp[1]); $self->{'lineno'} = $$temp[2]; } else { ($res, $k) = $self->yylex(); $self->{'lineno'} = $self->{'stream'}->lineno; return unless $res; } warn "DEBUG: token='" . ($res ? $$TOKEN[$res] : $res) . "' value='" . (defined $k ? $k : '') . "'\n" if $self->{'debug_lexer'}; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "'$needed' expected") if defined $needed && $res && $$TOKEN[$res] ne $needed; $self->{'current_token'} = $res; $self->{'current_value'} = $k; ($res, $k); } # Requeue the last token in the incoming queue. # WARNING: only one token can be requeued. sub unget_token { my $self = shift; warn "DEBUG: unshift\n" if $self->{'debug_lexer'}; if (defined $self->{'current_token'}) { push @{$self->{'token_list'}}, [ $self->{'current_token'}, $self->{'current_value'}, $self->{'lineno'} ]; $self->{'current_token'} = $self->{'current_value'} = $self->{'lineno'} = undef; } else { die "Error: can't unget more than one token. Abort.\n"; } } sub create_tree { my $self = shift; for my $node (keys %{$self->{'nodes'}}) { my $t = $self->{'nodes'}{$node}{'oid'}; $self->{'tree'}{$$t[$#$t - 1]}{$$t[$#$t]} = $node; } } # Compile a MIB file given its name sub compile { my $self = shift; my $file = shift; croak "Error: you MUST specify a file to compile\n" unless $file; my $outdir = $self->repository; croak "Error: you MUST specify a repository\n" if $self->{'make_dump'} && !$outdir; my $filename; if ($file =~ m|/([^/]+)$|) { croak "Error: can't find $file" unless -e $file; $filename = $file; $file = $1; } else { my $dir = $self->{'srcpath'} || croak "Error: you MUST specify a path using add_path()\n"; my $ext = $self->extensions || [ '' ]; my $windir; my $extfile; my @dirtmp = @$dir; while (my $d = shift @dirtmp) { map { my $e = $_; # warn "testing '$d/$file$e'\n"; $windir = $d, $extfile = $e, last if -e "$d/$file$e"; } @$ext; } croak "Error: can't find $file" unless $windir; $filename = "$windir/$file$extfile"; } # push @{$self->{'filename'}}, $filename; $self->{'filename'} = $filename; # my $filename = $ {$self->{'filename'}}[$#{$self->{'filename'}}]; if ($self->{'use_dump'} && -e "$outdir/$file$self->{'dumpext'}") { if (-M $filename < -M "$outdir/$file$self->{'dumpext'}") { $self->assert(MIBNOTICE, $self->{'filename'}, $self->{'fileno'}, "$outdir/$file$self->{'dumpext'} is older than " . "$filename. Recompiling $filename..."); } else { my $v; my $fh = new FileHandle "$outdir/$file$self->{'dumpext'}"; if (defined $fh) { local $/ = undef; $v = eval <$fh>; if ($v) { map { $self->{'nodes'}{$_} = $$v{'nodes'}{$_} } keys %{$$v{'nodes'}}; map { $self->{'types'}{$_} = $$v{'types'}{$_} } keys %{$$v{'types'}}; for my $node (keys %{$$v{'tree'}}) { for my $son (keys %{$$v{'tree'}{$node}}) { $self->{'tree'}{$node}{$son} = $$v{'tree'}{$node}{$son}; } } map { $self->{'traps'}{$_} = $$v{'traps'}{$_} } keys %{$$v{'traps'}}; map { push @{$self->{'macros'}}, $_ } @{$$v{'macros'}}; } $fh->close; } return $self if $v; } } # open the MIB file my $fh = new FileHandle $filename; unless (defined $fh) { croak "Error: can't open $filename: $!\n"; return; } # create a new MIB object my $mib = new SNMP::MIB::Compiler; $mib->{'filename'} = $filename; $mib->repository($self->repository); $mib->extensions($self->extensions); $mib->{'srcpath'} = $self->{'srcpath'}; push @{$mib->{'msg'}}, @{$self->{'msg'}} if defined $self->{'msg'}; $mib->{'make_dump'} = $self->{'make_dump'}; $mib->{'use_dump'} = $self->{'use_dump'}; $mib->{'do_imports'} = $self->{'do_imports'}; $mib->{'allow_underscore'} = $self->{'allow_underscore'}; $mib->{'allow_lowcase_hstrings'} = $self->{'allow_lowcase_hstrings'}; $mib->{'allow_lowcase_bstrings'} = $self->{'allow_lowcase_bstrings'}; if ($self->{'debug_recursive'}) { $mib->{'debug_recursive'} = $self->{'debug_recursive'}; $mib->{'debug_lexer'} = $self->{'debug_lexer'}; } # create a stream my $s = Stream->new($fh); $mib->{'stream'} = $s; # parse the MIB my $r = $mib->parse_Module(); push @{$self->{'msg'}}, @{$mib->{'msg'}} if defined $mib->{'msg'}; # destroy the stream delete $mib->{'stream'}; # close the file $fh->close; return undef unless $r; # Create the MIB 'tree' $mib->create_tree(); if ($self->{'make_dump'}) { local $Data::Dumper::Purity = 1; local $Data::Dumper::Indent = 1; local $Data::Dumper::Terse = 1; my $file = $mib->{'name'}; my $fh = new FileHandle "> $outdir/$file$self->{'dumpext'}"; if (defined $fh) { print $fh "## Compiled by SNMP::MIB::Compiler version $VERSION\n" . "## Source: $filename\n" . "## Date: " . (scalar localtime (time)) ."\n\n"; print $fh Dumper { 'nodes' => $mib->{'nodes'}, 'types' => $mib->{'types'}, 'macros' => $mib->{'macros'}, 'tree' => $mib->{'tree'}, 'traps' => $mib->{'traps'}, 'version' => $VERSION, }; $fh->close; } else { croak "Warning: can't create dump $outdir/$file$self->{'dumpext'}" . ": $!\n"; } } # insert this MIB into the current object map { $self->{'nodes'}{$_} = $mib->{'nodes'}{$_} } keys %{$mib->{'nodes'}}; map { $self->{'types'}{$_} = $mib->{'types'}{$_} } keys %{$mib->{'types'}}; map { $self->{'traps'}{$_} = $mib->{'traps'}{$_} } keys %{$mib->{'traps'}}; map { push @{$self->{'macros'}}, $_ } @{$mib->{'macros'}}; for my $node (keys %{$mib->{'tree'}}) { for my $son (keys %{$self->{'tree'}{$node}}) { $self->{'tree'}{$node}{$son} = $mib->{'tree'}{$node}{$son}; } } $self->create_tree(); $self; } sub load { my $self = shift; my $file = shift; croak "Error: you MUST specify a MIB to load\n" unless $file; my $outdir = $self->repository; die "Error: you MUST specify a repository\n" unless $outdir; if ($self->{'use_dump'} && -e "$outdir/$file$self->{'dumpext'}") { my $v; my $fh = new FileHandle "$outdir/$file$self->{'dumpext'}"; if (defined $fh) { local $/ = undef; $v = eval <$fh>; if ($v) { map { $self->{'nodes'}{$_} = $$v{'nodes'}{$_} } keys %{$$v{'nodes'}}; map { $self->{'types'}{$_} = $$v{'types'}{$_} } keys %{$$v{'types'}}; map { $self->{'traps'}{$_} = $$v{'traps'}{$_} } keys %{$$v{'traps'}}; for my $node (keys %{$$v{'tree'}}) { for my $son (keys %{$$v{'tree'}{$node}}) { $self->{'tree'}{$node}{$son} = $$v{'tree'}{$node}{$son}; } } map { push @{$self->{'macros'}}, $_ } @{$$v{'macros'}}; } $fh->close; } 1; } else { $self->assert(MIBWARN, $self->{'filename'}, $self->{'lineno'}, "can't find precompiled $file. Ignored\n") if $self->{'debug_lexer'}; 0; } } sub parse_Module { my $self = shift; my ($token, $mibname, $value); # ModuleIdentifier (($token, $mibname) = $self->get_token('TYPEMODREFERENCE')) || return; $self->{'name'} = $mibname; $self->get_token('DEFINITIONS') || return; $self->get_token('ASSIGNMENT') || return; $self->get_token('BEGIN') || return; (($token, $value) = $self->get_token()) || return; while ($token && $token != $END) { if ($token == $IMPORTS) { $self->{'imports'} = $self->parse_imports(); $self->import_modules() if $self->{'do_imports'}; } elsif ($token == $EXPORTS) { $self->{'exports'} = $self->parse_exports(); } elsif ($token == $IDENTIFIER) { my $assign = $value; (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error") unless $token; if ($token == $OBJECT) { # probably an OBJECT IDENTIFIER $self->get_token('IDENTIFIER') || return; $self->get_token('ASSIGNMENT') || return; my $oid = $self->parse_oid(); $self->{'nodes'}{$assign}{'oid'} = $oid; $self->{'nodes'}{$assign}{'type'} = 'OBJECT IDENTIFIER'; } elsif ($token == $INTEGER) { $self->get_token('ASSIGNMENT') || return; (($token, $value) = $self->get_token()) || return; $self->{'constants'}{$assign}{'value'} = $value; } elsif ($value eq 'OBJECT-TYPE') { $self->{'nodes'}{$assign} = $self->parse_objecttype() || return; # return undef unless $self->{'nodes'}{$assign}; $self->{'nodes'}{$assign}{'type'} = 'OBJECT-TYPE'; } elsif ($value eq 'OBJECT-IDENTITY') { $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_objectidentity() || return; $self->{'nodes'}{$assign}{'type'} = 'OBJECT-IDENTITY'; } elsif ($value eq 'MODULE-IDENTITY') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_moduleidentity(); $self->{'nodes'}{$assign}{'type'} = 'MODULE-IDENTITY'; } elsif ($value eq 'MODULE-COMPLIANCE') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_modulecompliance(); $self->{'nodes'}{$assign}{'type'} = 'MODULE-COMPLIANCE'; } elsif ($value eq 'OBJECT-GROUP') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_objectgroup(); $self->{'nodes'}{$assign}{'type'} = 'OBJECT-GROUP'; } elsif ($value eq 'NOTIFICATION-GROUP') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_notificationgroup(); $self->{'nodes'}{$assign}{'type'} = 'NOTIFICATION-GROUP'; } elsif ($value eq 'AGENT-CAPABILITIES') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'nodes'}{$assign} = $self->parse_agentcapabilities(); $self->{'nodes'}{$assign}{'type'} = 'AGENT-CAPABILITIES'; } elsif ($value eq 'TRAP-TYPE') { # as defined in RFC 1215 return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv1'}; $self->{'traps'}{$assign} = $self->parse_traptype(); $self->{'traps'}{$assign}{'type'} = 'TRAP-TYPE'; } elsif ($value eq 'NOTIFICATION-TYPE') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'") unless $self->{'accept_smiv2'}; $self->{'traps'}{$assign} = $self->parse_notificationtype(); $self->{'traps'}{$assign}{'type'} = 'NOTIFICATION-TYPE'; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'"); } } elsif ($token == $TYPEMODREFERENCE) { my $label = $value; (($token, $value) = $self->get_token()) || return; if ($token == $ASSIGNMENT) { my $type = $self->parse_type(); # warn "Warning: type '$label' already defined" # if defined $self->{'types'}{$label}; $self->{'types'}{$label} = $type; } elsif ($token == $MACRO) { # Skip this beast.. (($token, $value) = $self->get_token('ASSIGNMENT')) || return; while ($token && $token != $END) { (($token, $value) = $self->get_token()) || return; } push @{$self->{'macros'}}, $label; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unrecognized syntax '$value' ($$TOKEN[$token])..."); } } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "received an unknown token ($$TOKEN[$token])"); } (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "'END' expected") unless $token == $END; } # Given a type, this will return the corresponding SMI (v2 or v1) type # or the corresponding ASN.1 type. sub resolve_type { my $self = shift; my $type = shift; # a basic ASN.1 type. return $type if $type =~ m/^(SEQUENCE|CHOICE|INTEGER|OCTET\ STRING| OBJECT\ IDENTIFIER|NULL)$/ox; # SMIv1 type return $type if $type =~ m/^(IpAddress|Counter|Gauge|TimeTicks|Opaque)$/o; # SMIv2 type return $type if $type =~ m/^(Integer32|Counter32|Gauge32|Unsigned32| Counter64)$/ox; defined $self->{'types'}{$type} ? defined $self->{'types'}{$type}{'syntax'} ? $self->{'types'}{$type}{'syntax'}{'type'} : $self->{'types'}{$type}{'type'} : $type; } sub resolve_oid { my $self = shift; my $node = shift; return $node unless defined $node; # no node return $node unless defined $self->{'nodes'}{$node} && scalar keys %{$self->{'nodes'}{$node}} || defined $self->{'root'}{$node} && scalar keys %{$self->{'root'}{$node}}; # no such node # copy the OID if needed if (defined $self->{'nodes'}{$node}{'oid'} && !defined $self->{'nodes'}{$node}{'OID'}) { $self->{'nodes'}{$node}{'OID'} = []; @{$self->{'nodes'}{$node}{'OID'}} = @{$self->{'nodes'}{$node}{'oid'}}; } my $list = $self->{'nodes'}{$node}{'OID'} || $self->{'root'}{$node}{'oid'}; while (defined $self->{'nodes'}{$$list[0]} || defined $self->{'root'}{$$list[0]}) { # copy the OID if needed if (defined $self->{'nodes'}{$$list[0]} && defined $self->{'nodes'}{$$list[0]}{'oid'} && !defined $self->{'nodes'}{$$list[0]}{'OID'}) { $self->{'nodes'}{$$list[0]}{'OID'} = []; @{$self->{'nodes'}{$$list[0]}{'OID'}} = @{$self->{'nodes'}{$$list[0]}{'oid'}}; } my @l = @$list; if (defined $self->{'nodes'}{$$list[0]}) { my $eq = 1; if ($#{$self->{'nodes'}{$$list[0]}{'OID'}} == $#{$self->{'nodes'}{$$list[0]}{'oid'}}) { my $i = -1; for (@{$self->{'nodes'}{$$list[0]}{'OID'}}) { $i++; $eq = 0, last unless $ {$self->{'nodes'}{$$list[0]}{'OID'}}[$i] eq $ {$self->{'nodes'}{$$list[0]}{'oid'}}[$i]; } unless ($eq) { my @a = @{$self->{'nodes'}{$$list[0]}{'oid'}}; my @l = @{$self->{'nodes'}{$$list[0]}{'OID'}}; shift @l; my $last = pop @l; for my $elem (@l) { last unless $elem =~ m/^\d+$/o; my $o = shift @a; $self->{'tree'}{$o}{$elem} = $a[0]; } $self->{'tree'}{$a[0]}{$last} = $node if scalar @a == 1; } } } splice @$list, 0, 1, defined $self->{'nodes'}{$$list[0]} && scalar keys %{$self->{'nodes'}{$$list[0]}} ? @{$self->{'nodes'}{$$list[0]}{'OID'}} : @{$self->{'root'}{$$list[0]}{'oid'}}; } for my $l (@$list) { if (defined $self->{'nodes'}{$l}) { # copy the OID if needed if (defined $self->{'nodes'}{$l} && defined $self->{'nodes'}{$l}{'oid'} && !defined $self->{'nodes'}{$l}{'OID'}) { $self->{'nodes'}{$l}{'OID'} = []; @{$self->{'nodes'}{$l}{'OID'}} = @{$self->{'nodes'}{$l}{'oid'}}; } my @t = @{$self->{'nodes'}{$l}{'OID'}}; $l = $t[$#t]; } if (defined $self->{'root'}{$l}) { my @t = @{$self->{'root'}{$l}{'OID'}}; $l = $t[$#t]; } } join '.', @$list; } sub convert_oid { my $self = shift; my $oid = shift; my @l = split /\./, $oid; my @r; my $node = $l[0]; for my $id (keys %{$self->{'root'}}) { last unless $l[0] =~ m/^\d+$/o; $node = $id, last if $l[0] == $self->{'root'}{$id}{'oid'}[0]; } shift @l; push @r, $node; while (my $elem = shift @l) { push (@r, $elem), last unless defined $self->{'tree'}{$node}{$elem}; push @r, $self->{'tree'}{$node}{$elem}; $node = $self->{'tree'}{$node}{$elem}; } join '.', @r, @l; } sub parse_one { my $self = shift; warn "DEBUG: Parsing one item...\n" if $self->{'debug_lexer'}; # 1 # -1..3 # foo # foo..bar (my ($token, $value) = $self->get_token()) || return; if ($value eq '-') { # a negative value ? (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "\"$value\" must be an integer") unless $token == $NUMBER; $value = "-$value"; } my $val = $value; (($token, $value) = $self->get_token()) || return; if ($value eq '.') { $self->get_token('.') || return; # range (($token, $value) = $self->get_token()) || return; if ($value eq '-') { # a negative value ? (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "\"$value\" must be an integer") unless $token == $NUMBER; $value = "-$value"; } $val = { 'range' => { 'min' => $val, 'max' => $value } }; } else { $self->unget_token(); } $val; } sub parse_subtype { my $self = shift; warn "DEBUG: Parsing a sub-type...\n" if $self->{'debug_lexer'}; (my ($token, $value) = $self->get_token()) || return; if ($token && $value eq '(') { (($token, $value) = $self->get_token()) || return; if ($token == $SIZE) { my $subtype = $self->parse_subtype(); return unless $subtype; $self->get_token(')') || return; return { 'size' => $subtype }; } else { $self->unget_token(); my $list; while ($value ne ')') { my $v = $self->parse_one(); return unless defined $v; push @$list, $v; (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "\"$value\" must be ')' or '|'") unless $value eq ')' || $value eq '|'; } # return scalar @$list == 1 ? { 'value' => $$list[0] } : # { 'choice' => $list }; return scalar @$list == 1 ? $$list[0] : { 'choice' => $list }; } } elsif ($token && $value eq '{') { my $list = {}; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; if ($token == $IDENTIFIER) { my $res = $self->parse_subtype(); return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "must have a subtype") unless defined $res; $$list{$res} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "should be an identifier"); } (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "must be a '}' or a ',' instead of '$value'") unless $value eq '}' || $value eq ','; } return { 'values' => $list }; } else { $self->unget_token(); } } # parse a type (SYNTAX field of an OBJECT-TYPE, TC) sub parse_type { my $self = shift; warn "DEBUG: Parsing a type...\n" if $self->{'debug_lexer'}; (my ($token, $value) = $self->get_token()) || return; if ($token == $IMPLICIT) { # implicit types my $type = $self->parse_type(); my $ref = ref $type; if (defined $ref && $ref eq 'HASH') { $$type{'implicit'} = 'true'; return $type; } else { return { 'implicit' => 'true', 'type' => $type }; } } elsif ($token == $INTEGER) { # integers my $type = "INTEGER"; my $subtype = $self->parse_subtype(); # what if parse_subtype failed ??? my $ref = ref $subtype; if (defined $ref && $ref eq 'HASH') { $$subtype{'type'} = $type; return $subtype; } else { if (defined $subtype) { return { 'values' => $subtype, 'type' => $type }; } else { return { 'type' => $type }; } } } elsif ($token == $OCTET) { # octet strings (($token, $value) = $self->get_token()) || return; if ($token == $STRING) { my $type = "OCTET STRING"; my $subtype = $self->parse_subtype(); $$subtype{'type'} = $type; return $subtype; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "parse error"); } } elsif ($token == $OBJECT) { # object types (($token, $value) = $self->get_token()) || return; if ($token == $IDENTIFIER) { my $type = "OBJECT IDENTIFIER"; my $subtype = $self->parse_subtype(); $$subtype{'type'} = $type; return $subtype; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "parse error"); } } elsif ($token == $NULL) { return { 'type' => "NULL" }; } elsif ($token == $ANY && $self->{'allow_keyword_any'}) { # ANY is only valid in ASN.1.. but nor in SMI, nor SMIv2. # As it is used in RFC 1157, we must allow it :( return { 'type' => "ANY" }; } elsif ($token == $CHOICE) { # choices # CHOICE { va ta, vb tb, vc tc } (($token, $value) = $self->get_token('{')) || return; my $list = {}; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; my $res = $self->parse_type(); my $ref = ref $res; if (defined $ref && $ref eq 'HASH') { $$list{$value} = $res; } else { $$list{$value} = { 'type' => $res }; } (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "must be a '}' or a ',' instead of '$value'") unless $value eq '}' || $value eq ','; } return { 'type' => 'CHOICE', 'items' => $list }; } elsif ($token == $SEQUENCE) { # sequence (of) my $list = {}; # Should we keep the order of the items (and then # use an array instead of a hash) ?? my $subtype; (($token, $value) = $self->get_token()) || return; if ($value eq '(') { $self->unget_token(); $subtype = $self->parse_subtype(); (($token, $value) = $self->get_token()) || return; } if ($token == $OF) { # Small hack to obtain a name for this unique (?) item (my ($t1, $t2) = $self->get_token()) || return; $self->unget_token(); $t2 = lc $t2; my $res = $self->parse_type(); my $r = { 'type' => 'SEQUENCE' }; $$r{'items'} = { $t2 => $res }; if (defined $subtype) { map { $$r{$_} = $$subtype{$_} } keys %$subtype; } return $r; } if ($value eq '{') { my $list = {}; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; my $res; if ($token == $CHOICE) { $self->unget_token(); $res = $self->parse_type(); } else { $res = $self->parse_type(); } my $ref = ref $res; if (defined $ref && $ref eq 'HASH') { $$list{$value} = $res; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "FATAL ERROR (please report)"); $$list{$value} = { 'type' => $res }; } (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "must be a '}' or a ',' instead of '$value'") unless $value eq '}' || $value eq ','; } return { 'type' => 'SEQUENCE', 'items' => $list }; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "fatal error"); } } elsif ($value eq '[') { # tagged types my $list = []; while ($value ne ']') { # read the tag (($token, $value) = $self->get_token()) || return; push @$list, $value unless $value eq ']'; } my $type = $self->parse_type(); $$type{'tag'} = $list; return $type; } elsif ($value eq 'TEXTUAL-CONVENTION') { # textual convention return $self->parse_textualconvention(); } elsif ($token == $IDENTIFIER || $token == $TYPEMODREFERENCE) { my $type = $value; my $subtype = $self->parse_subtype(); $$subtype{'type'} = $type; return $subtype; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'"); } } sub parse_textualconvention { my $self = shift; my $data; (my ($token, $value) = $self->get_token()) || return; if ($value eq 'DISPLAY-HINT') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'display-hint'} = $value; (($token, $value) = $self->get_token()) || return; } if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for TEXTUAL-CONVENTION"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error in TC: 'STATUS' requiered"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error in TC: 'DESCRIPTION' requiered"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } if ($value eq 'SYNTAX') { my $type; (($token, $value) = $self->get_token()) || return; if ($value eq 'BITS') { $$type{'type'} = $value; $self->get_token('{') || return; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; my $identifier = $value; $self->get_token('(') || return; (($token, $value) = $self->get_token('NUMBER')) || return; $$type{'values'}{$value} = $identifier; $self->get_token(')') || return; # should be ',' or ')' (($token, $value) = $self->get_token()) || return; } } else { $self->unget_token(); $type = $self->parse_type; } $$data{'syntax'} = $type; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error in TC: 'SYNTAX' requiered"); } $data; } sub parse_objectidentity { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for OBJECT-IDENTITY"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } # parse MODULE-IDENTITY macro (see RFC 1902) sub parse_moduleidentity { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'LAST-UPDATED') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'last-updated'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'LAST-UPDATED' needed"); } if ($value eq 'ORGANIZATION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'organization'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'ORGANIZATION' needed"); } if ($value eq 'CONTACT-INFO') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'contact-info'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'CONTACT-INFO' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } while ($value eq 'REVISION') { $$data{'revision'} = [] unless defined $$data{'revision'}; (($token, $value) = $self->get_token('CSTRING')) || return; my $val = $value; (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error: found '$value', need 'DESCRIPTION'") unless $value eq 'DESCRIPTION'; (($token, $value) = $self->get_token('CSTRING')) || return; push @{$$data{'revision'}}, { 'revision' => $val, 'description' => $value }; (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } # parse NOTIFICATION-TYPE macro (see RFC 1902) sub parse_notificationtype { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'OBJECTS') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'objects'} = $list; (($token, $value) = $self->get_token()) || return; } if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for NOTIFICATION-TYPE"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } # parse MODULE-COMPLIANCE macro (see RFC 1904) sub parse_modulecompliance { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; my $name = 'this'; if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for MODULE-COMPLIANCE"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } while ($value eq 'MODULE') { $name = 'this'; (($token, $value) = $self->get_token()) || return; while ($value ne 'MODULE' && $token != $ASSIGNMENT) { if ($value eq 'MANDATORY-GROUPS') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'module'}{$name}{'mandatory-groups'} = $list; } elsif ($value eq 'GROUP') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; my $val = $value; (($token, $value) = $self->get_token()) || return; return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error: found '$value', need 'DESCRIPTION'") unless $value eq 'DESCRIPTION'; (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'module'}{$name}{'group'}{$val} = $value; } elsif ($value eq 'OBJECT') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; my $val = $value; (($token, $value) = $self->get_token()) || return; if ($value eq 'SYNTAX') { my $type = $self->parse_type(); $$data{'module'}{$name}{'object'}{$val}{'syntax'} = $type; (($token, $value) = $self->get_token()) || return; } if ($value eq 'WRITE-SYNTAX') { my $type = $self->parse_type(); $$data{'module'}{$name}{'object'}{$val}{'write-syntax'} = $type; (($token, $value) = $self->get_token()) || return; } if ($value eq 'MIN-ACCESS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(read-(only|write|create)|not-accessible| accessible-for-notify)$/ox) { $$data{'module'}{$name}{'object'}{$val}{'min-access'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Unknown MIN-ACCESS type ($value)"); } (($token, $value) = $self->get_token()) || return; } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'module'}{$name}{'object'}{$val}{'description'} = $value; (($token, $value) = $self->get_token()) || return; } $self->unget_token(); } elsif ($token == $TYPEMODREFERENCE) { # Modulename $name = $value; (($token, $value) = $self->get_token()) || return; if ($token == $IDENTIFIER) { # ModuleIdentifier $$data{'module'}{$name}{'identifier'} = $value; } else { $self->unget_token(); } } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at '$value'"); } (($token, $value) = $self->get_token()) || return; } } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } # parse OBJECT-GROUP macro (see RFC 1904) sub parse_objectgroup { my $self = shift; my $data; my ($token, $value); (($token, $value)= $self->get_token()) || return; if ($value eq 'OBJECTS') { my $list = []; (($token, $value) = $self->get_token('{')); while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'objects'} = $list; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'OBJECTS' needed"); } if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for OBJECT-GROUP"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } # parse NOTIFICATION-GROUP macro (see RFC 1904) sub parse_notificationgroup { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'NOTIFICATIONS') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'NOTIFICATIONS'} = $list; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'NOTIFICATIONS' needed"); } if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|deprecated|obsolete)$/o) { $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for NOTIFICATION-GROUP"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. '::=' needed") unless $token == $ASSIGNMENT; $$data{'oid'} = $self->parse_oid(); $data; } sub parse_agentcapabilities { my $self = shift; my $data; my $name = 'this'; my ($token, $value); (($token, $value) = $self->get_token()); return unless $token; # "PRODUCT-RELEASE" Text if ($value eq 'PRODUCT-RELEASE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'product-release'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'PRODUCT-RELEASE' needed"); } # "STATUS" Status if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(current|obsolete)$/o) { $$data{'status'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "unknown status ($value) for AGENT-CAPABILITIES"); } } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } # "DESCRIPTION" Text if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } # ReferPart if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } # ModulePart while (defined $token && $token != $ASSIGNMENT) { while (defined $token && $value ne 'SUPPORTS' && $token != $ASSIGNMENT) { if ($value eq 'INCLUDES') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'supports'}{$name}{'includes'} = $list; (($token, $value) = $self->get_token()) || return } while ($value eq 'VARIATION') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; my $val = $value; # ObjectName or NotificationName (($token, $value) = $self->get_token()) || return; if ($value eq 'SYNTAX') { my $type = $self->parse_type(); $$data{'supports'}{$name}{'variation'}{$val}{'syntax'} = $type; (($token, $value) = $self->get_token()) || return; } if ($value eq 'WRITE-SYNTAX') { my $type = $self->parse_type(); $$data{'supports'}{$name}{'variation'}{$val}{'write-syntax'} = $type; (($token, $value) = $self->get_token()) || return; } if ($value eq 'ACCESS') { (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(not-implemented|accessible-for-notify| read-(only|write|create)|write-only)$/ox) { $$data{'supports'}{$name}{'variation'}{$val}{'access'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Unknown ACCESS type ($value)"); } (($token, $value) = $self->get_token()) || return; } if ($value eq 'CREATION-REQUIRES') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'supports'}{$name}{'variation'}{$val}{'creation-requires'} = $list; (($token, $value) = $self->get_token()) || return; } if ($value eq 'DEFVAL') { (($token, $value) = $self->get_token('{')) || return; (($token, $value) = $self->get_token('IDENTIFIER')) || return; $$data{'supports'}{$name}{'variation'}{$val}{'defval'} = $value; (($token, $value) = $self->get_token('}')) || return; (($token, $value) = $self->get_token()) || return; } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'supports'}{$name}{'variation'}{$val}{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'DESCRIPTION' needed"); } } } if ($value eq 'SUPPORTS') { # Modulename (($token, $value) = $self->get_token()) || return; $name = $value; (($token, $value) = $self->get_token()) || return; if ($token == $IDENTIFIER) { # ModuleIdentifier $$data{'module'}{$name}{'identifier'} = $value; } else { $self->unget_token(); } } (($token, $value) = $self->get_token()) || return unless $token == $ASSIGNMENT; } $$data{'oid'} = $self->parse_oid(); $data; } # Parse TRAP-TYPE macro (see RFC 1215) sub parse_traptype { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'ENTERPRISE') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; $$data{'enterprise'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'ENTERPRISE' needed"); } if ($value eq 'VARIABLES') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token('IDENTIFIER')) || return; push @$list, $value; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'variables'} = $list; (($token, $value) = $self->get_token()) || return; } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } if ($token == $ASSIGNMENT) { (my $value = $self->get_token('NUMBER')) || return; $$data{'value'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Should be '::='instead of '$value'"); } $data; } # parse OBJECT-TYPE macro (see RFC 1902) sub parse_objecttype { my $self = shift; my $data; my ($token, $value); (($token, $value) = $self->get_token()) || return; if ($value eq 'SYNTAX') { my $syntax = {}; my $type; (($token, $value) = $self->get_token()) || return; if ($self->{'accept_smiv2'} && $value eq 'BITS') { $$type{'type'} = $value; $self->get_token('{') || return; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; my $identifier = $value; $self->get_token('(') || return; (($token, $value) = $self->get_token('NUMBER')) || return; $$type{'values'}{$value} = $identifier; $self->get_token(')') || return; # should be ',' or ')' (($token, $value) = $self->get_token()) || return; } } else { $self->unget_token(); $type = $self->parse_type; } my $subtype = $self->parse_subtype(); my $ref = ref $type; if (defined $ref && $ref eq 'HASH') { for my $key (keys %$type) { $$syntax{$key} = $$type{$key}; } } else { # should not happen $$syntax{'type'} = $type; } if ($subtype) { for my $key (keys %$subtype) { $$syntax{$key} = $$subtype{$key}; } } $$data{'syntax'} = $syntax; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "'SYNTAX' needed"); } if ($self->{'accept_smiv2'} && $value eq 'UNITS') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'units'} = $value; (($token, $value) = $self->get_token()) || return; } if ($value eq 'ACCESS' || $value eq 'MAX-ACCESS') { if ($value eq 'MAX-ACCESS') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at $value") unless $self->{'accept_smiv2'}; (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(read-(only|write)|not-accessible| accessible-for-notify|read-create)$/ox) { # Valid SMIv2 acces type (rfc 1902, draft-ops-smiv2-smi-01) $$data{'access'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Unknown acces type ($value)"); } } else { # 'ACCESS' return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error at $value") unless $self->{'accept_smiv1'}; (($token, $value) = $self->get_token()) || return; if ($value =~ m/^(read-(only|write)|write-only|not-accessible)$/o) { # Valid SMIv1 acces type (rfc 1155, rfc 1212) $$data{'access'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Unknown acces type ($value)"); } } (($token, $value) = $self->get_token()) || return; } else { if ($self->{'accept_smiv1'} && !$self->{'accept_smiv2'}) { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'ACCESS' needed"); } elsif (!$self->{'accept_smiv1'} && $self->{'accept_smiv2'}) { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'MAX-ACCESS' needed"); } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'ACCESS' or 'MAX-ACCESS' needed"); } } if ($value eq 'STATUS') { (($token, $value) = $self->get_token()) || return; if ($self->{'accept_smiv1'} && $value =~ m/^(mandatory|optional|obsolete|deprecated)$/o) { # Valid SMIv1 status (rfc 1155) # add 'deprecated' (rfc 1158, rfc 1212) $$data{'status'} = $value; } elsif ($self->{'accept_smiv2'} && $value =~ m/^(current|obsolete|deprecated)$/o) { # Valid SMIv2 status (rfc 1902, draft-ops-smiv2-smi-01) $$data{'status'} = $value; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Unknown status ($value)"); } (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed"); } if ($value eq 'DESCRIPTION') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'description'} = $value; (($token, $value) = $self->get_token()) || return; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error. 'STATUS' needed") unless $self->{'accept_smiv1'}; } if ($value eq 'REFERENCE') { (($token, $value) = $self->get_token('CSTRING')) || return; $$data{'reference'} = $value; (($token, $value) = $self->get_token()) || return; } if ($value eq 'INDEX') { my $list = []; (($token, $value) = $self->get_token('{')) || return; while ($value ne '}') { (($token, $value) = $self->get_token()) || return; my $implied = 0; if ($value eq 'IMPLIED') { $implied++; (($token, $value) = $self->get_token('IDENTIFIER')); } push @$list, { 'value' => $value, 'implied' => $implied }; # shoud be a ',' or a '}' (($token, $value) = $self->get_token()) || return; } $$data{'index'} = $list; (($token, $value) = $self->get_token()) || return; } if ($value eq 'AUGMENTS' && $self->{'accept_smiv2'}) { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Can't define both 'INDEX' and 'AUGMENTS'") if defined $$data{'index'}; $self->get_token('{') || return; (($token, $value) = $self->get_token('IDENTIFIER')) || return; $$data{'augments'} = $value; $self->get_token('}') || return; (($token, $value) = $self->get_token()) || return; } if ($value eq 'DEFVAL') { # SMIv1: rfc 1212 # SMIv2: rfc 1902 $self->get_token('{') || return; (($token, $value) = $self->get_token()) || return; if ($value eq '-') { (($token, $value) = $self->get_token()) || return; $value = "-" . $value; } $self->get_token('}') || return; $$data{'defval'} = $value; (($token, $value) = $self->get_token()) || return; } if ($token == $ASSIGNMENT) { my $oid = $self->parse_oid(); $$data{'oid'} = $oid; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "should be ::="); } $data; } # parse an OBJECT IDENTIFIER clause # note: everything except the value has already been parsed. sub parse_oid { my $self = shift; # # internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } # mgmt OBJECT IDENTIFIER ::= { internet 2 } # ^^^^^^^^^^^^^^^^^^^^^^^ # my ($list, $old, $old2); $self->get_token('{') || return; my ($token, $value); (($token, $value) = $self->get_token()) || return; while (defined $token && $value ne '}') { if ($token == $IDENTIFIER || $token == $NUMBER) { push @$list, $value; $old2 = $old; $old = $value; } elsif ($value eq '(') { if ($old2 && $old) { (($token, $value) = $self->get_token('NUMBER')) || return; $self->get_token(')') || return; # Add this to the tree $self->{'nodes'}{$old}{'oid'} = [ $old2, $value ]; } else { # These syntaxes are incorrect: # { iso(1) ...} # { (1) ... } return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error"); } } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "Syntax error"); } (($token, $value) = $self->get_token()) || return; } $list; } # parse an IMPORTS clause. # note: the 'IMPORTS' keyword has already been parsed. sub parse_imports { my $self = shift; # # IMPORT a, b, c FROM mib-foo # d, e, f, g FROM mib-bar; # my ($list, $data); my $elem = 0; my ($token, $value); (($token, $value) = $self->get_token()) || return; while (defined $token && $value ne ';') { if ($token == $IDENTIFIER || $token == $TYPEMODREFERENCE) { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "two values must be separated by a comma") if $elem; push @$list, $value; $elem = 1; } elsif ($value eq ',') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "value expected. ',' found") unless $elem; $elem = 0; } elsif ($token == $FROM) { $elem = 0; my $oldvalue = $value; (($token, $value) = $self->get_token()) || return; if ($token == $IDENTIFIER || $token == $TYPEMODREFERENCE) { my @l; @l = @{$$data{$value}} if defined $$data{$value}; push @l, @$list; $$data{$value} = \@l; undef $list; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "identifier expected after '$oldvalue'"); } } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "syntax error while parsing IMPORTS clause"); } (($token, $value) = $self->get_token()) || return; } $data; } # parse an EXPORTS clause. # note: the 'EXPORTS' keyword has already been parsed. sub parse_exports { my $self = shift; # # EXPORTS a, b, c; # my $list; my $elem = 0; my ($token, $value); (($token, $value) = $self->get_token()) || return; while (defined $token && $value ne ';') { if ($token == $IDENTIFIER || $token == $TYPEMODREFERENCE) { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "two values must be separated by a comma") if $elem; push @$list, $value; $elem = 1; } elsif ($value eq ',') { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "value expected. ',' found") unless $elem; $elem = 0; } else { return $self->assert(MIBERROR, $self->{'filename'}, $self->{'lineno'}, "syntax error while parsing EXPORTS clause"); } (($token, $value) = $self->get_token()) || return; } $list; } sub import_modules { my $self = shift; for my $k (keys %{$self->{'imports'}}) { warn "DEBUG: importing $k...\n" if $self->{'debug_lexer'}; my $mib = new SNMP::MIB::Compiler(); $mib->repository($self->repository); $mib->extensions($self->extensions); $mib->{'srcpath'} = $self->{'srcpath'}; $mib->{'make_dump'} = $self->{'make_dump'}; $mib->{'use_dump'} = $self->{'use_dump'}; $mib->{'do_imports'} = $self->{'do_imports'}; $mib->{'allow_underscore'} = $self->{'allow_underscore'}; $mib->{'allow_lowcase_hstrings'} = $self->{'allow_lowcase_hstrings'}; $mib->{'allow_lowcase_bstrings'} = $self->{'allow_lowcase_bstrings'}; if ($self->{'debug_recursive'}) { $mib->{'debug_recursive'} = $self->{'debug_recursive'}; $mib->{'debug_lexer'} = $self->{'debug_lexer'}; } $mib->load($k) || $mib->compile($k); for my $item (@{$self->{'imports'}{$k}}) { warn "DEBUG: importing symbol $item from $k for $self->{'name'}...\n" if $self->{'debug_lexer'}; if (defined $mib->{'nodes'}{$item}) { # resolve OID to break the dependencies my @a = split /\./, $mib->convert_oid($mib->resolve_oid($item)); my @l = @{$mib->{'nodes'}{$item}{'OID'}}; $a[$#a] = $l[$#l]; @{$mib->{'nodes'}{$item}{'oid'}} = @a; shift @l; my $last = pop @l; for my $elem (@l) { last unless $elem =~ m/^\d+$/o; my $o = shift @a; $self->{'tree'}{$o}{$elem} = $a[0]; } $self->{'tree'}{$a[0]}{$last} = $item if scalar @a == 1; $self->{'nodes'}{$item} = $mib->{'nodes'}{$item}; } elsif (defined $mib->{'types'}{$item}) { $self->{'types'}{$item} = $mib->{'types'}{$item}; } else { my $found = 0; for my $macro (@{$mib->{'macros'}}) { $found++, push (@{$self->{'macros'}}, $item) if $macro eq $item; } $self->assert(MIBWARN, $self->{'filename'}, $self->{'lineno'}, "can't find '$item' in $k") unless $found; } } warn "DEBUG: $k imported.\n" if $self->{'debug_lexer'}; } } # Where the MIBs are stored sub repository { my $self = shift; my $dir = shift; $self->{'repository'} = $dir if defined $dir; return $self->{'repository'}; } # Add some paths to the list of possible MIB locations sub add_path { my $self = shift; croak "Usage: Compiler::addpath(path1[,path2[,path3]])" if $#_ == -1; while (defined (my $path = shift)) { push @{$self->{'srcpath'}}, $path; } @{$self->{'srcpath'}}; } # List of possible MIB filename extensions sub extensions { my $self = shift; my $ext = shift; $self->{'extensions'} = $ext if defined $ext; return $self->{'extensions'}; } # Add some possible MIB filename extensions sub add_extension { my $self = shift; croak "Usage: Compiler::extension(ext1[,ext2[,ext3]])" if $#_ == -1; while (defined (my $ext = shift)) { push @{$self->{'extensions'}}, $ext; } } my $treemodes = {'read-only' => '-r-', 'read-write' => '-rw', 'read-create' => 'cr-', 'write-only' => '--w', 'not-accessible' => '---', 'accessible-for-notify' => 'n--', 'not-implemented' => 'i--', }; my $treetypes = {'SEQUENCE' => '', 'CHOICE' => '', 'INTEGER' => 'Integer', 'OCTET STRING' => 'String', 'OBJECT IDENTIFIER' => 'ObjectID', 'NULL' => 'Null', 'IpAddress' => 'IPAddr', 'Counter' => 'Counter', 'Gauge' => 'Gauge', 'TimeTicks' => 'TimeTcks', 'Opaque' => 'Opaque', 'Integer32' => 'Int32', 'Counter32' => 'Count32', 'Gauge32' => 'Gauge32', 'Unsigned32' => 'UInt32', 'Counter64' => 'Count64', }; # return an ASCII driagram showing the tree under the given node sub tree { my $self = shift; my $node = shift; my $level = shift; my $inc = shift; my $s = shift; $level = 0 unless defined $level; $inc = 4 unless defined $inc; return $level ? $s : "$node\n" unless defined $self->{'tree'}{$node}; unless ($level) { $s .= $node . "\n"; $s .= " |\n"; } for my $n (sort { $a <=> $b } keys %{$self->{'tree'}{$node}}) { my $new = $self->{'tree'}{$node}{$n}; $s .= " "; $s .= " " x ($inc * $level) . "+-- "; my $access = ""; $access = $$treemodes{$self->{'nodes'}{$new}{'access'}} || "???" if defined $self->{'nodes'}{$new}{'access'}; $access .= " " if $access; my $type = ""; $type = $self->{'nodes'}{$new}{'syntax'}{'type'} if defined $self->{'nodes'}{$new}{'syntax'} && defined $self->{'nodes'}{$new}{'syntax'}{'type'}; if ($type) { $type = $self->resolve_type($type); $type = sprintf "%-8.8s ", defined $$treetypes{$type} ? $$treetypes{$type} : $type; $type = "" if $type =~ m/^\s+$/o; } $s .= $access . $type . $new . '(' . $n . ")\n"; if (defined $self->{'tree'}{$new}) { $s .= " "; $s .= " " x ($inc * ($level + 1)) . "|\n"; $s = $self->tree($new, $level + 1, $inc, $s); } } $s; } ########################################################################### package Stream; use strict; use vars qw($VERSION); $VERSION = 1.00; sub new { my $this = shift; my $fh = shift; my $class = ref($this) || $this; my $self = {}; bless $self, $class; $self->{'fh'} = $fh; $self->{'lineno'} = 1; $self->{'saved'} = 0; $self; } sub getc { my $self = shift; my $char; if ($self->{'saved'}) { $char = $self->{'save'}; $self->{'saved'} = 0; $self->{'lineno'}++ if $char eq "\n"; } elsif (defined ($char = getc $self->{'fh'})) { $self->{'save'} = $char; $self->{'lineno'}++ if $char eq "\n"; } else { $char = ''; } $char; } sub ungetc { my $self = shift; $self->{'saved'} = 1; $self->{'lineno'}-- if $self->{'save'} eq "\n"; } sub lineno { my $self = shift; $self->{'lineno'}; } 1; =head1 NAME SNMP::MIB::Compiler - a MIB Compiler supporting SMIv1 and SMIv2 =head1 SYNOPSIS use SNMP::MIB::Compiler; my $mib = new SNMP::MIB::Compiler; # search MIBs there... $mib->add_path('./mibs', '/foo/bar/mibs'); # possibly using these extensions... $mib->add_extension('', '.mib', '.my'); # store the compiled MIBs there.. $mib->repository('./out'); # only accept SMIv2 MIBs $mib->{'accept_smiv1'} = 0; $mib->{'accept_smiv2'} = 1; # no debug $mib->{'debug_lexer'} = 0; $mib->{'debug_recursive'} = 0; # store compiled MIBs into files $mib->{'make_dump'} = 1; # read compiled MIBs $mib->{'use_dump'} = 1; # follow IMPORTS clause while compiling $mib->{'do_imports'} = 1; # load a precompiled MIB $mib->load('SNMPv2-MIB'); # compile a new MIB $mib->compile('IF-MIB'); print $mib->resolve_oid('ifInOctets'), "\n"; print $mib->convert_oid('1.3.6.1.2.1.31.1.1.1.10'), "\n"; print $mib->tree('ifMIB'); =head1 DESCRIPTION SNMP::MIB::Compiler is a MIB compiler that fully supports both SMI(v1) and SMIv2. This module can be use to compile MIBs (recursively or not) or load already compiled MIBs for later use. Some tasks can be performed by the resulting object such as : - resolution of object names into object identifiers (OIDs). e.g. ifInOctets => 1.3.6.1.2.1.2.2.1.10 - convertion of OIDs. e.g. 1.3.6.1.2.1.2.1 => iso.org.dod.internet.mgmt.mib-2.interfaces.ifNumber - drawing MIB trees. e.g. ifTestTable => ifTestTable | +-- --- ifTestEntry(1) | +-- -rw Integer ifTestId(1) +-- -rw Integer ifTestStatus(2) +-- -rw ObjectID ifTestType(3) +-- -r- Integer ifTestResult(4) +-- -r- ObjectID ifTestCode(5) +-- -rw String ifTestOwner(6) The MIB to be compiled requires no modification. Everything legal according to SMIs is accepted, including MACRO definitions (which are parsed but ignored). This module is shipped with the basic MIBs usually needed by IMPORTS clauses. A lot of IETF MIBs has been successfully tested as well as some private ones. =head1 Methods =over 5 =item C C I To create a new MIB, send a new() message to the SNMP::MIB::Compiler class. For example: my $mib = new SNMP::MIB::Compiler; This will create an empty MIB ready to accept both SMIv1 and SMIv2 MIBs. A lot of attributes can be (des)activated to obtain a more or less strict and verbose compiler. The created object is returned. =item C C I Add one or more directories to the search path. This path is used to locate a MIB file when the 'compile' method is invoqued. The current list of paths is returned. Example: # search MIBs in the "mibs" directory (relative # to cwd) and in "/foo/bar/mibs" (absolute path) $mib->add_path('./mibs', '/foo/bar/mibs'); =item C C I Add one or more extensions to the extension list. These extensions are used to locate a MIB file when the 'compile' method is invoqued. All extensions are tested for each directory specified by the add_path() method until one match. The current list of extensions is returned. Example: $mib->add_path('./mibs', '/foo/bar/mibs'); $mib->add_extension('', '.mib'); $mib->compile('FOO'); The order is "./mibs/FOO", "./mibs/FOO.mib", "/foo/bar/mibs/FOO" and "/foo/bar/mibs/FOO.mib". =item C C I If 'dir' is defined, set the directory where compiled MIBs will be stored (using the compile() method) or loaded (using the load() method). The repository MUST be initialized before a MIB can be compiled or loaded. The current repository is returned. Example: $mib->repository('./out'); print "Current repository is ", $mib->repository, "\n"; =item C C I Compile a MIB given its name. All information contained in this MIB is inserted into the current object and is stored into a file in the repository (see the 'make_dump' attribute). The choosen name is the same as the real MIB name (defined in the MIB itself). If a precompiled MIB already exists in the repository and is newer than the given file, it is used instead of a real compilation (see the 'use_dump' attribute). The compiler can be recursive if IMPORTS clauses are followed (see the 'do_imports' attribute) and in that case, uncompiled MIB names must be explict according to paths and extensions critaeria (see add_path() and add_extensions() methods). The current object is returned. =item C C I Load a precompiled MIB given its name. All information contained in this MIB is inserted into the current object. The file is searched in the repository which MUST be initialized. In case of success, returns 1 else returns 0. Example: $mib->load('SNMPv2-SMI'); $mib->load('SNMPv2-MIB'); =item C C I Example: print $mib->resolve_oid('ifInOctets'), "\n"; =item C C I Example: print $mib->convert_oid('1.3.6.1.2.1.31.1.1.1.10'), "\n"; =item C C I Example: print $mib->tree('ifMIB'); =back =head1 Attributes =over 5 =item C =item C =item C =item C =item C =item C =item C =item C =item C =item C =item C =back =head1 BUGS Currently, it is more a TODO list than a bug list. - not enough documentation - not enough methods - not enough test scripts - find a better name for compiled MIBs than 'dump's.. even if they are no more than dumps. If your MIBs can't be compiled by this module, please, double check their syntax. If you really think that they are correct, send them to me including their "uncommon" dependencies. =head1 AUTHOR Fabien Tassin (fta@oleane.net) =head1 COPYRIGHT Copyright 1998, 1999, Fabien Tassin. All rights reserved. It may be used and modified freely, but I do request that this copyright notice remain attached to the file. You may modify this module as you wish, but if you redistribute a modified version, please attach a note listing the modifications you have made. =cut SNMP-MIB-Compiler-0.06.orig/lib/Bundle/0040755000175000017500000000000007435074233016306 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/Bundle/SNMP/0040755000175000017500000000000007435074233017063 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/Bundle/SNMP/MIB/0040755000175000017500000000000007435074233017472 5ustar jdivejdiveSNMP-MIB-Compiler-0.06.orig/lib/Bundle/SNMP/MIB/Compiler.pm0100644000175000017500000000067507435074233021607 0ustar jdivejdivepackage Bundle::SNMP::MIB::Compiler; $VERSION = '0.01'; 1; __END__ =head1 NAME Bundle::SNMP::MIB::Compiler - A bundle to install all SNMP::MIB::Compiler related modules =head1 SYNOPSIS C =head1 CONTENTS Data::Dumper Data::Compare =head1 DESCRIPTION This bundle includes SNMP::MIB::Compiler which is a MIB compiler. =head1 AUTHOR Fabien Tassin EFE =cut SNMP-MIB-Compiler-0.06.orig/Makefile.PL0100644000175000017500000000116707435074233016303 0ustar jdivejdive# -*- mode: Perl -*- use ExtUtils::MakeMaker qw(WriteMakefile); WriteMakefile(NAME => "SNMP::MIB::Compiler", VERSION_FROM => "lib/SNMP/MIB/Compiler.pm", dist => { COMPRESS => "gzip", SUFFIX => "gz" }, PREREQ_PM => { 'Data::Dumper' => 0, 'Data::Compare' => 0 }, clean => { FILES => '*.bak *.old out/* ' . 'lib/*/*/*~ lib/*/*/*/*~' }, EXE_FILES => [ qw(mibcompiler mibbrowser) ], ); sub MY::postamble { ' sync-in: rsync -rv -e ssh nexus:~/reseaux/devel/mib/. . sync-out: rsync -rv -e ssh . nexus:~/reseaux/devel/mib/. '; } SNMP-MIB-Compiler-0.06.orig/mib-browser-1.gif0100644000175000017500000031253407435074233017411 0ustar jdivejdiveGIF89a] ,(( $ 0,(040 (H(TP@8 @@@HLHXP@X\XhXP````d`pl`pppHTHTHXHXPXPXP\P\P`X`X`XdXp`h`0`\t|p pИ!xwdump,]Dp 0,B'ShIz6jvhp_y, DE!DqSȗf)bdB"HB@(MC4Qr`y:&ΠPD'"PYЫozBz+SntDմE5ۧqJkj{uࣃ58,乒"͒8`z.y.<cd]{iƵCn˘MsTS%;o涇>8ʯo:y_y|uGz΁s=z\yIgz=)yHa\šw d1VSZf:)td'ɦ2%9UiiIjzZ'"rmfg#>j*꫗:릶v^{.s9*ț6kb:*-$m%K~*.mX6)kNb%s= Lq%^4c fl ;q\Utȱ^\ù &(cDƩLMȜlNζ,Vu4!D#2q:+=?G43LW3ܾP=uхu<36]l=pQvu5BwqM7\3tHMrN<Ł74Q6~[nڅ9#qʙyROͮ{ӏK4{{~բ^<#o><o3;=U: #A/o ` L:'H Z̠7z\,'z V0 gH8̡wCP< H"HL&:PH*ZX̢X kY^ FhL6pH:jD@͈> IBL"F:򑐌$'IJZRzW #cD%GIJFf2|,*WV򕰌,gIZ̤&@x%r @bӘ81YdⲒd3dfä&2f> 8Irde7usP w@Ta ?!0MM"pP& hBOψE3юz HGJR524=ESQF֚XQ&܈ş5iN'=թPkHGcRС SRT*O}Ҡ:-XJֲbEzƥ"k|RmyRA_jAJUXS+aM)Oz嵨+\8WI&,T+տx,cէMjW>rl:[ڲqe]w׼f= B^OӝOʼs F6n#/a+ձ=kmeek/-zPԷ`-(x:zV,DÙb7n;nԺE[+[Η+:fK.) 8α-9jp}=oC~kEl[O|v>Ί1'a ni8@n1ou.'P4SBЈN [yLf3n 網9r(hTѵ_=ot Xq'm%\f3Vil_GyFJe[YL@K4VMjҔNrmGqMwmRG8b=qem]k~Zjm[殅[`7I mB[ϸKmxJr[r%PƬ/`=rL%?ξ߭/~3Fv}~YƷ{mnp^_W$'rE m~yeU zcn.swA:s-L\6 F9{.g}_ϼ7yK?_:B]t?({:CQK(\?+=تw|eZ:o[orG:G=dK9݁])L !󇊮g)҈IGw hVP/Ce0U1ȥ DP L 86J?@$(*ԁ-,Է6x8E%N a`ALKhԄЄWuFP:xXZIUT}`Mr: KJXtinpgSz4gBXMƘʸ،8X،Cc1I`%4H8Xx蘎8Xx؏9Yk H@i1yّ "98/3SЍBe?Ĥ0294Y6y8:<ٓ>@)10AyHJLٔNPR9TYVyXZ\ٕ^`C鋵*BtalYc?Жr9tYvyxz|ٗ~c&EB jo9YyT9OfO\昚Y;٘Fiٚɖr9̕i9Yy)9 pBި T 3թY?4yHPI9Yy虞o"F)y i߉֙ɟ9ě9ZzIVKmq4+9ٓɝY!:)J?2:4Z6*j'jo n\K!3<-j%J-*LڤKi):2;JOy`b:d9Z[Ji\ T 2>/ wQʡiTʧLyh:YT:xe:Jgz1 J<) D"PZI*JYz{zZ:陣 Y %Ns: 0z{UzʪSH OʚӮZ=RPbԊ٭]ꭽz]ڗJ z˰zؚ۱[ʢ쪦& kedSp{pIJ+zJ4{yj9?Y뺰Z{HJ{!:INBrXuK:: k[{hi۴Z32:j D ڨAkZ:;y[{zGjf;),TyQ-89k۹˹V([Jx{][K f˙ (EEKI_ɹ{țz:jh2ek؛ڻ<ʠw_@F[ܛ껾GAF`tSP"囷˾{ 5r%4rj{ 꾕Xlji | Ff#F C*,.02<4\6|8:<>@Be -98Pm-͗!eWBѦ(m̭ ްԝ`սݹ ,^Ԧ6cȻ7͚=ڍ뭗ߵI7qk۔+Lw ͕=f^[0.c*޻Ke̵1 8EsI(8Hԙ0iZ.6L>w$oe\oMKyI>,̪c~N R Y*惎:jw&2557WNɣ4Εy} ).N)ahZ9.83S}P\kXA jHs윎ԯ\Ӱ>NΛYUnѧ.0Z\\_&K^?0_ʮټ8t:Ύ^~C}nڞ~N #j-?žI^<\$~*._4z ^`V H<;>"{j2o!/}~m->02ZjVǻZÎ? ^z[$z:,Fkos>o#E&>q/EM7wP.+77S(`o;QqF _=MϾ:ww;߱o+Ȟ:I_گW'Gk?ϔܯMvϽ!@tET.MNc,HXeFXMlj;>}0Pp1Qq2Rr !a ! aab@3@5t6 K6Ww׷5Ix,Ry:Zzr3sb3Uv+&6=^~~78o`@D \J(MVG|,v1=WI 3eJ+Y%a'P=+ۈu|3KD$cv]zgLTԕ(=ZŽe?3 զLyNj']]:QvRyKΌ;߇+ո6cL7lc&-[nA[⷟mӁ;S_%QQYEmО0=ZMZpGM:^)M i0Njf#;kYE#nOOqO\p8y/Q]x[yVcERD޲ 9[=.= v.c0CX:-c蓻߬S Jt<lSv!Lo޻`=JEdGBM \uo) s(2bQ:M' ;N]% ɆC?v L t;qhsň7 Q񬧿pq&ҦG1:{%…1â8I*ԍ7LtӿP$OeUgI`Z2pm|`w= Q܊ `fop,Ǎ ( x"\I`R׸&e bp ƽns.fnʕ3HY~n% G6~zXy;4Kˆ8P!/)FLR|:0s:\SMPsudHEi%*CTk'4HLoqMJWq++*xUY5YnADXt#hjSDKڈ̵ըUwN3SR**X;(.Ac]צ앲,q /1c5vȂ|ZP5h[[nq ҄c4 '6aP1L .^v]Kr;rϝre$窷@"|[P$H6-M}hjtwES*VA>1NDrIB d M FG?<>QYb1 [ B Q DlfՐOq׏W1-NMQ\e+kmHBCo}C9& .cpJ HLcyɅijg;ClK& DqB!DDki,d̀lbsNl9B.q9E57XX7165Wr  Ϥg36T X C[rzRV_5zAv#SҚ__smr$KH&l\8^ Y-;>HNv{ے\_Ҋ¹Syї$6$B-[@Rhy6ާ9,։cЂ ENh=@q DTXA({):m5mNtq^dB0.AY9Zn|s3QhnCЂ:wD50ց}iP7Uⵘ~{#*eZH" ozk FP4%+Y ěR) ~7~5d"wKX dU0I)Mc!KxA9h(E^Ee/#uBX4уaӎr-li3H:_O E 3f,tohzկ'.lJ tan(/P쎊.&<) ,fn o)F(>\A4B&/9 R &n0l/K#0ɟP eB.p,"&@)' + M* 0 p롧d !!4,@}Ak'1'"r"p0(1|"qPGO1-d 7Rn<ΖPjHQKLw1$/f>odd1.<y pѼ Q qh1QbQ ȬQבA- ЇT&K  $Ƒ WE '4EM1 w0M!+R S.&rHj;RR%W%[%<4 Q(gDa4%{2ے#J2 OR9|)R))|j2Rb4+'p-?bP"Є$1,2o-.6@Q\-gO0/2 0H@}! ."#<(+b/uHfTd& F#PlC<,23"t1W3&O4%4+  Uꚮjm:.6E52kn0GdY@c4^H32Ɇ Ťz S `aZ` :;MނʧofJـ3<8S [ۓ( >Ӭ- '$8NL&dˆē -bJv T)IfBQp`.f莲gtII4E!}A! Fk8˳ӥ/M Kt,_,@GOָI~ "I>0r1 EAF G%N[Gjgt4?CIfN+me6Y !d&-O `AAK^phuLݥLyoCttbNc2US q>c&f:*2(ASSF:5S6ӆP(xuMh2GOXeqLu*~UBM80Za:%\ԷbfL&I-}2B`<(ݳ%L9$"n\u1^MjMYPeb-c}bfA0f֗ ;Jnqdf "/v96Lu1uffo@#C6EQhkoVQ?)? u^ F'v +ooՑ-^4!K#2b W9=4t=ӖLvSn{0.w"tCWtGo-0q'zLatl i%qmws8TRI PO^vV򲰖xB.86.s̮qEU34rsWCei(8 7"xǷD#!MB7vhdIVg*we7[!jWxR|`+) ؀x2q* ;}6"YYKswҠ(jU1XGKx}QAkYRwV&m2vw |oIcIkEFE!cNR~{k'}@Xx1tTY0ኌ\4eq{bH6yV:mvlGje|*AJJv8xUuv-W9N[+xtXxwfW̔l7R ٗ k!f6f!T$//A3"#7"ΜWZ^YPfyoBAg#:HMTט 6Al6^yiËf0Shp HnF 7F?:Dӯ~gT\/:::RKTr?ḩ8ݶ95 1eӔC#~vy" iٟؔ6z5}u$*蛧z:ڕzu*n){jt(4f҇:j lY9IszꙜNYBy{)_/aK:Wк#5LͺY 铖ڬ}?lIv`d9svnB4ZU'[ӈ\UYIVN;{i{~5[ۂG ! 4&ھl:֝ O2+cg[[z Rz\/Z/ո`F۹%lrY>Ď}=OVkBbBxJNsOc a,W?Tͣi_,9<Gȉ|Hs|wҽσɔq*?!#ˌM緾ۼtqzmV']X|5}:䠜|)_ʩ'>GċY:=dny.`w}+۹c013UaeY^m< %eF! Qw;e//~'* ܝ1qe ?\q~~Xt(M}4lJKv _5v{ګޑšusYޙ[c^ä1˛|eԱIV{ՌojΫئ 3Uĵ9zb?n&gyH6~-i]!9}׋c3][{ikI滷?z/)UU{E?_ v[,Wu~!Qg<"%|Bҩ>c1㚍a1բ5~é£vάy'iY !!(6]=.:RNbFJ6f&& "*^fZ2jZjz>VYBю/#9&$884C7@$,H7' $,'iҁYg;{O bVAD0NqH%„ERMHRUS29 1" O$ ?A{QִmK` Zn?{BHvݠ4O>|Фn+ٲrLVI/O%e͇0Qhn1FԒ/aS 0={Xŕe ʌ{+(iN?3;Ѡ_f }˫V-bQS`\)~GyM=+E[C^sF£甪uǞ?M!#-pƅ3FRG9MP8uЁfpYaI~UW]FC}u"@ĽnnYsJȣ? F>S,@8375 Y%9L!V⢗A#U*xwsdɥkHe<ǹr菏Qk٧oTiȋLcz aY")x晜G)m'!cuj'hZ@$i  iX(Τ>^$戚iށ*+-4[<M3 =tl!K;ԸG5%ozYm`DA:Dp^GRJ$ǣ0mLM(15+' [*(MQ $IZD5l,XOϓɧpz]U-h $W QQ.)r|$4^fz&#i2L&6mUҕ ' `P$)ozۘ&0w^Rc!'3Ra(ݾƕV^pefj$fHF+v.-AcJh/"(%bՔ&5[h(XyZN:Ulָ:(;@"XIWg;#gЯF(NDw¹,p~nPTd.Z-OX Mb~ h @^zne$Oj~*.n^*Ou rK[֢ŵ" *ۚ}7-DՠRP֌Ȟ ɵ,t6Tb0X*UXH%jWyHUy/B8pe3QAHZH ]m2)g\ߪzpU*^ WJ^2u6 7ChrLl6ȵ Dd֦]$+sX~̹ɐbH(e\`0{iHg惑FKѹP3C!R<>T k90HEWP3P6_e.s]P^"ĩTp lǻfGm%5o+dΦvmx׌;T]'"fLt5Go£.I/UъіX8 5<ӳWgLZuEo̷)5\554Q}`Z*@J֠Bb;b9|BTZ,q0C`uHCܻ26LQ}Ѕ#b A#%;=q!$aC@@&Q^#*i5$>b #Yt39NG&a8B{ PuoQ~dA& UN.Uf1D$EE]$=bVVQZIfG" `Qa,ȷAҫ6CMdNO՞C [aty QQ^RRC Me %Pd %iO;YVA;Dcf2&8Uq(V|`OvVܥDw eZeMa=&8qcoN\~ Otri߶HϮQQ3e@ehR=P':jƠ\u ?`W&0e9eSbTJucX0aa2u~)iI]WR`2EMx˓KYQ~4&["v"~er X< /TN; rzɚSzlWl5ɮ%uCJ1"gpv^uu"1\ lv=,q^,`T3dz5HivjjvkkC9!LOn _ DnR#:CR4;ƯCem' 7ܞ7-ژrf;-mtmvN7\sl&@ŷw[[8-8ì%dqy zïڶ[v2 >ْղ1+7`_&/Sjq}@̝lx4攘hx80z_f~xLWPg*T+Bo|j0X WAL#z?˂\RfF>tǴQsS]ӵTC{0Sڎ.!T2?Sdy{2ߐ[UL-1{wj^FO^0չ?yoFMD8VbխA{:>ro)0OWlQ?W0?}c. >uM iE&4Ůߣ˳GhY$(ݵfgPvx\S7?F#`~:SśzimRoަYSk";j#F-paL_vƙO̯yTNT"O$W+0:A[%{"G`X2S3zh#XX'zo;o$5g> ###!`_o>~ a]l1c2|FK6Q6`b&__aJy{ I/Ɍ^ڤX~3Qz͌s51&e;p?IPRYn멇bU^ 1:D\JѥJ5(2f;'$%DuS.R dqP)T,f8B$TSZ vrz2VytuvaIܹ&d磡=ہ÷/UĽQlk4娌0_F܍ E%Gu_?Xj+~…VGXr/ Xk/ .Fĭ6 А;;ϳs;z&&D M;[IB{<ϣu4h:S5FkK:ۨud Ҽ'` TE{}wv%;W"v+?' =XM{f1IXC.PLJ؎[\ѺxN?uDJ`# '>f>(ժE5y9T" g:1x],N!FXIϯYw|VVs9䱈%.V$$4]2( qkY&WcD f!TJh}JZ~^٧]_뢫4 ĩ^hǞܡM'G%"8BW!ҚK+AwL4mTݾTA~\o1_{ڠn >빪~~v^Ɔ~QCV+6&*)%эFu7CiY2ʁMU, 9JzJyᥤ^+A(LT=#*A]_VͷR4S8 vƎRȬ}̇+av۴~tS.)E=j&>ŧtp3qщ@,Vnw<jF#ٞGufZ-TA* +79Kb*A8<,L]k?s(:d[*ᬽلԽ#98 j]8(,R?+ĚCS`?3C14Cd3 :b>Yxs(9m`s0LAM$> $Q/%Cŷ B&c肺YԓyEUY1Cs;j;6V[3 -[gl L LCw2E7JEl,QRĵ{18BӫAGuY9wq+[,G)0G 9YY#_0p$ijCCa7u؏ CcqrsHM{x @yLz\,k;Q*3T*)HyBϓݩ P#+7%|MNlO$gh&HGD3?|ˮ,|ܺmGm%B8ʞ,s`ɸl;{č #ٕkdJ‚FF V{5Cޚ"sT?*Hd,1 Kıδ6zI8GƢkIFTMG,rXSLÂHO4dz8X&2* 2 g2ZÔEcT|[Ť1dYItRi:̗_tt#t7? ,JLG7V+ȄiE,Y˟#C(q#ʍ4J+ULdJF\*Mcv9Ḽ >\QoR";Vȝ]?AJ 3%L3AˆReQ=j75 RR,RPR6Dp"2]ڝS=qWqS&RD,+t91e L5}SKTMPh7$-#=䨵0#w>U{>?üCC2@RE{Z8 6`<6TLmcKJKU=-UQkP9JA'R(Q6&aLX+dA$K:gMKH•r;%Vl-mSuTRX);&DWBu<<;gH5ɓT 5ļW1|BW]cc"sJՃMX)ز^PDS؆F>#YQPBf5>LS\2!_oMb3[YAҨ /EXMk2[|7fD;]Ē xѧ0ٜ{}փ=[t2GdvZn,!ܥIQbdl6qL(cƍ\+K=H8JJղ`QA u3<, S咤ń尾uZs$\~6}MLIM\._4$'0 Y0y?HDUYZ_]e=d_T_ _ >s7@J_Ђ8dNtau̐}ZX\"rPi'4Y ^Q4捈\߸-fdtݿaa%_ ˙#_;Ɉ_%b~,<.cW#2N#2=(ѕx}^k]uWDalT`J\?V> d\ P_)Xmcc{e׋tԹ)nK]Ld\fJI]x-%@afdg=Wd}ڠʣ 0d}Wʔ][&G>LelϹÅ+"fud16کl({.eLէu全e%lgXp$Z85\J &k6s~tFԈQLdz&jGg0 qTc^dFY^fuVT7ӝ&)yaJ0rhرMcKZ^bV-*Fzb{i<PWV>!jK%t-b6X/_=ٝ>j ej 9^ْhZbIve\/mLqEU3Ny- DMkt'=mNm^mnm~m؎mU]PdWvgu zTPeNm:rShs nnnnn 0naܮW#>yUn@ X&"7-`?-oXJnf̞^pC \[]_o65zCjuE`hfp/rW%?3&GAFc]3b'-ҐDF_&qNe,NHF`rB*hgq/DOs% $YHzJr"}q>7$/n0sk8A_ 4TJ[1Z'^"5t5Д2@=_.'#s VK]DrBAÐٞڮsVVO7( {W:x1W4۬,M% ҷ%25(uw tIfgŸڮʂvqz_yMW lt^RyA\' Y:;^g%cWU!}zF9ZpRZd tO$x5J6R7l0U>pNehX_sGEqP:#g]Bc($ӚU/ݺve|ڀ|Jj?Ź)P/}Q찺^`&댶]mNv0r> fkT- C1ϾVg~Hg9s:J$ t:x$Dr(|:贉jܮ b;s,ٔdu4uVxȕ4VEٕ *:JZjz$Up00@[{{{PSr|L\Le {H-݊If&Շ*F5WWme-> ?yCeS'{.Ɯ@_|!ĉ a@c__D hxJ2op#%q%~ 0l8OՍtǕxXqTJ05cc9Ў :1$> egf@K0z! @;Ah!et&J?-&MirgD$}·Ǩi2:+iGѥIZ_.dcb{8r[&jd k,ҫ9oF޸ C^&-Himbu> wrhTJ5Uo E;`!Q'{6hEqeK P n)!ْQVVJoq@bqMF*#mA5*]-^ZKeCLFpKhνWw@z|.QގmҐтbv-lpj=!)9hUjm^]+嗠z4{_s]n>\_rnz^ ]|6ȱ6ƚ|O6G%į⚟E0yNĬS&[(>2b˴8K,u);;ywy^)E,EuQPI%,;G@9-Ƨx,jRʈmFc(ՊJɷۈ7QaQUP\b:v]-"DnwUIVj:cSδ/PɌc=Z^.& bjltܐ)RW;"H e =`-QhѬ.GIVD^怟a)AZauutGYʣ2O hK}I_9P[<eB?[²6e3-qhI&L`ۘN\GoQ45OVE^Sc"£D yƑ[t]oSk `IG'*c&/ AݐܩE8F͸58Hl؞B <3rTHX; 3\%*żFC y!<^ oHmC%Nv~| Ox<~<-? OI5N3 vJLJmBYFޙޢB{.(k^ }z+oK?ǟ}W?_:# >ofcLζp&]T잞n2<) SR;ʴ zQr 7~HW}|rw~Xn ~6T'{GYbwzR%u8k5- `; p! ȃķtM8~P8}R|vX'NȅrU7uͶe uu/]h8,hn]g^5J7/u$G"qADv)CI b„]ȈGX}}$ݷwM#y%X'xF"$s2cTc+5fEBw2#Yմuv}M´vsTt=Dd1dTRµ`?W(A(awK&jEjw9hjwpW#Qd_?{\hlGi0KKt3D9icZAL KN<[LiFatLs lżaȧEm5KqV"rSJFVq0IgsRLYRqir,M\ ZUS|x|qx d1gl!EN|d]ƩңGxk39dؼ 0v)xΰWӰC&}̼FsHY3u]=,`Gu${8qsLW aR-Lp 7xذ w[H]{[=\}n[L1l˜8a%/mxzOK{W/>TYb=]IꕀA3G$kM㫠VSpȾN[vNjX⫆X70ݰ};kuKTW3Ol-R!fre, h F? k zg M.NpZGJwN֝QĎDp۪hM%`-=z4cimVI8K|Oh`~GdLƥNũ^= q%r@r0P\=`jU{b_3̯S_5|k=!dP7t]iN&U6LIÛk?䦎."^/mkrw zak>Mi')+>*w]\SvL[t!AtTCOEoG.,oSoA@%A$ }4]_a/cOeob,35/Ms:%=Yw} o_/1?/L壠N/')TR) bw}/OoՎ- qi,}ѡ O-sՏٯۏׯoY]<ɯU?CUӏo_X4ct>Qs8RŪ4~aɳS~lx|F*y ֞  &89PP"FIKMOKDQY[]_acegiOUkY zbp`qu욤蘨ə26;2+#@Q8`A& Pa@$)GXz!ӨD?@ ȑL@I9 4lG^ֱLmіԹgO?J$0t:L:jUWfպkW_]41hTvm31΂YR]u[։˛Nishd&VqcK Yt#P#Auy3'H&4s B'ΨQwHQ. R͜K=atөi:)͆gn_~3<֘\߼[yqq>~(mT .Q{KV9_-wO9׾^~Hl,L1l!#2-dy::;0>080tGCOpCDNL$EO<ۘсAdq#TBLYϮ!O LܫMp 0а A -IЌyܱR'  7;NqQ ҒR+Nz^ݰ5P9ѥ$EUU14NUSMC= -s:L3L,7jE8݃; q-D"?e3Cv {1IT| M4XPEJu;7KM0+aNrӉH0r 8c+ yÑ?b8Xduf6%8,̊6^nSxV_qb0= !"2b6gF+i$<;0(3޹kdgk)lC4ԟ%BVQ޳.1iab;ԧSS6|m 6zэ"c?LbFMَlF?r #۰2|Y*ȓ53dejÙF A Ȋ 1%Mvґ8 &?{AG!w.Ir;?U3 q*{EF5uOYMК&59on 49MtNSKlMuQdל^|NZ&{&;YZTA2SagD%2L) <?_1MEcQf(MRS5)eRI\lk]@ϴPEz`i"yo`&NCw#-DFSWf;E2R'8ET_8\ӟX4zgXWCČD-)B2쀔@p#e"gJI,F1WQ,-YuJ-,&>XѪdAw̨}5~JJaM <Ծ|2zZ5v|Mg]KbW*[יWN~nx صX_ⵞdR?F"!#ShSOΩZR=TxkѩR`LjyW] xpbVq;" *kl=r6UtKέbůx9~7nWTk*TnqyUzf׽V''>UH uTĸ"PdgD+ 4uU$gL9}N-4h9wNG3`q"x$ fWĝJq{m.NKGGmhNAT*P 05ETofn~ pR,8006p9BoPloܯ/Ahor0ynaroBPMhFU,~.mܐdn IPS # o +0h \_ʥC0u /$,J3$c$8+ Cg˜/n|h DFG,0348<W@qdDqZ]ϩ`wgl1CQ"l: gz~qCQ6yn*4aLqRcC)ɕ&n!#p1kRooЙ x ir!\ ,r}6!(eG't4㣌HNn,THNf}'5Cj&BGԥ|r%/fT88 =gOЎ=33x NHShIS?Iɪ+44AtKf}*4~ϓ2NJVQܭFQITgmԔ8ޔa -!LADȴ:[$OgִOOS%PCK HIn P(jt(M"x'4a׆͸H!̸VmU4LpѰ33cfCzu4UCNoW &McU8~XT阢,>(0߆3@|g-tYuw(xLaM>+)j} ![o=gS"WEW[TCGGC)c-yh<SP~t_53|_4mO=ߔB[:]^KŝPٜYZcHcHħ+ `J<0GpLa8&X8D!AHX٭^|ҳhD*gtHNZ;PTZ!aLLb#d$%da%e$h(h!))*Ϊji!--"/nd̏#b3t4u5v6www#\A^P{Y9@>yR5;3/xRۧ/!|;$d"GμrIJV%JTHYdz%V+1S(Y`BqS 2Ř)ԨRRj[F /͹:bDpE{=^i7={kE&gQ'mpJ[78yM+o@ Qӫ._iҧĉsVNӨkf$CfMTR27‡;ί_! 8@`<HR^B-s<|g`йHn;]`R>H~zw5q8Ḧ́Z$hj5qxk9ma5LmLn"18#5(MpqDGo CLW<ˡuWD >sW3 E8p$I2d<aXPdN`YUrh9fiL$0hRIv!~I' b#"A8(J:)OXD#OP:WT ;[$?Y:ja*}MwکX`k^^mꠞI-XD!j۷1苏j{.+z[ׅAuEtw, QOQ$ocOثfvU)tj\)o2o_կE{xT[ 4skh<4E=U\jg )$C|,׮1Z)hE-r9U_mђm =mDIFm]g<7MCk.7碸G=ȸ8k&IxyQEԽ+W]Q@b[ak wz@`׺ٰ9{V麣.K9N-s)I[I==_tҹ+P#]P<':bTw Ȅ$MaJ{Y[_@o W/:ہ`A {jԽ|oQ\ c((i>dׄTcDKA&&m/]dG-4@=HDu LCDͫ;z"[ӎ'Qwɉ% $ 7BFh\3(F1qt# 1KHJp,qLV!$/<Б*L$;*kuDNᑀ ]CRZ xc☉9 7vDX9q <&2AK!Β0tmt܁K*so΋Dܱ#4L>)M`ﻦ:~t`edh:>2 /2:KGME N;FnejEfL EU3=EQe1-H)Sa65Xu| n!E/,&TUcҧ!-Q-pI cUG- [;e5P""Rc[;Q:ky8|:!&٭H閷!̫=m ؂t?HC#E:lLwZatW:Bپ/b9m H얞_C$wteLr5%`u=jC60yJPҷpg+&1_:蜷8Syx B 7F_DpMY`ŴY4Lv^G(.˪}qz5 #`k%piRYІ/ +!sV3b w`%( |: &'MSk*k/ɲ+ \2c::b8HKbps(;a{}QU>*tD~4g6K0I+9[/`UK f'h2TZkQGnŶ"7f/ ~fE &~c2dakڟiDe+;.tAT :s^4HK9p\u+&<ʝWʵȇ󣜰du^WqnN>1ya#geABqiY<θQ:fkکpǠETPRw5HĐӴaTY вDxcBr!睕Axgyy;^),i,l\ /o9o/js'涭ZZ3$I3Ҥ PTDf. /vʾdbϩM6U.Iya\$]^8{aeRäߥy;G |XQ5ȉ IY?) ց W`Xq Z >v[ )Ν6`MQY m a.~#}T[hyA Y,AH ӽJ#=FVc= 6K]Ԏ\a Ρdbb!N jE( ],MdP%+BmE#AI kW `,I-!xobabXqt 1^.&c֌cՅ3IcF\"Θf +#=BD!#sQZS B zp TG#DcF` CAd>CE $\- xQ J};j*գL!!GS4(Ⱥ^,NNjOZ% %e L] ceM%̔P3QdŤYeդxMˮ TY"DWUYe^Ke\6\ &m]-&_:&@fZĝ -gKwANTͼL:#z(֗ -ECojTB cα܋fOߙ5u$amJ")pi̩ Mވn'1ef^iR nS 9)H4 I2N@ Ɯ!yii*Υj ¢Hri0Eb*fXx&qILFΡX=^SP%@TaZ2;|+\+Xȡb+ckȲģRVKc>Ƣ=]yD4Y cՁ-bBUZ\,9l8iVl5WBcl'e~rlNؙ$YZVB:׳*B2,('>-AʆAs<ʜC"Ɂ"W- jlGاρEՖ-c>lmt܋ڡZ4 ,,U׋ C%mFK9>.ϵu4Q!YL# R#Se⪻WEJaTm Zj(–B.FĒ.a„eZvTaUbl P/ X/)]Sz*j/ɔlʈR9y^EF>:l>0 uV'G;U0r(sJܐIYxpNCt؊4  [AhE HNCJ\F1xbuU۴ݕoOBp(qG֨ Ahʿ 餸E^>T@_ABA@,t??S@K\t.t$G%GBe97 ;G2*7T5PW,Bgm}DI,D]lARR&s9é^<VS (uj3XTauU af4q44Xr9]&LF(J3 ų堈fͳds,. 3hvt)x*rAAw+hIv;N 0v8V v`6n6gV,Glh nnp38E``s2c!b޹$Od7e{BgS&]Df06ggT ,@Ry+PbzEX |w)~~/V!`7}ozs.51tmHphEwg1x$M }Y]DFAWhL@JPFMU0 v.#29آ!Դ;{ܲso5>[CAЎ7m 봕4;;<{$< V2w5SE%`7r'GOb)&fs>Ag|l|2z:p<2ɢPph͎fDqџ=uE梕ЫeR\՗M|\w(<펈"Wբ闾>ꧾ>뷾>Ǿ>׾>˘'N W}Skќ5ma)o%C~S9a wBB:')?0?KAyWcgU$'GC?׿??K,$q@&H@(,>G#pӺZ$dgf*NR kev:iMRjbR{#3S3̌ %-5=D]Meu}5-ɵEenv~'/7?_VF &@ X s柔E`$!R`Az1/P@ >P0A{"T!C\4rcy#UTLV<{TPt[ǎبa>#9U^ŚUV]b,iRRX"D:h, )`wK+NlOe".FDy1 /Ei-<ǹlX d-!Zp'_& lڵ}:֨k0ɉ#YV32% 9үxmeUUSu9(f[b̑n>Y*xfH{Xgj-&T)v:mf{6/mM]<@piI2LBHZ ְ־O4",8"%א.">\.~epa=_ڵLn{ǯ[Ki9f_%=yg^^{XXVq1gq#z/&O~_ |bJ_f?qW9u{],bg)5Q"w.2(oS`E8BzEPH!Ga H@%x#8w>"mZ/H>r(&EU.ᇓ0WΗ#ʈAt&q)MEQ6Ԥ'EiJURԥ/iLe:SԦ7iNuSt,4'PĨN wLFL2c,4 9)X*UzE@q >Qj MSU u]l3N%FQXlԏÔc1@ꋰ԰ElbX6ֱMT8:K=M#īs2f y8_2l:>#NZI}LR-hX+fLmh&ZW4Fw<._]W`_nv]v׻9Z4-,KJi* !\$| +=hfTJUy:]h[W oW`^2UM@8}j[Ywm5E-yGXEY`Q/qe ȤhDkΦgk6M{V^yGַ,GFXu*U05-ю ~ ) [ 汋3F4Iz64`/ 1JX4øAVweɵdL*`ԺU#U $Lk)i0$Z2pn \"q%ŤqTڨg2ַ-mWJ!w hW~/cJ>\`|ٲJާ"O~2_aHt~QXrĨ?hc+JA<ĿL{曫Xz>طfR:1's"04I@(A) |D,#@űJ! 4)A{‚A t @@+.|7Y!"(2c$Vc4 JC5hO:!? 9¿fc;16CΈD†BN9/ ,,:JL’5ֻ411I"  s:y7rə* E^@ŪbI8C [EQlZ܃[d8_tEKExD]S(MKd1mol#Ÿxȉ%("&p @/ |8#rH(Ðvd #%$RQB2ͼZҴT(}ҋ)%<+ֹO.5U#Ӿ24&h}U"˱ZuĴaU١vVYz4@V^%tYz՝[T(+oT;PY˅LUk-H3Ֆ`O!`3D&&Nݑ(N`(W˼:Դ<ɠ+|b?0c+>E3b:dtmő ָbY)K!"~RPaMFe~H.7bk)(5<ꡖHz6u4Xjvk6+) <géɚCrZtu~no&&Hfhdf=z`fN:Z %=,%?9 ?hmB(&Zբ*\L%h_ihHh΃Վ^&j+4p"t&*[v68~Nֻ2s|l ͕h>Yכ Ci(jĆ.7g?аu;0sz-_)Yk D3l&Zkڴnw^ N2xkk#iC=j0fڶ?a.4?Sx:ߙ N>8 Q@2*ƈΤ⮍nbHY7k턑>w] ;[ثHkR 3Ce,[$.1Di3ɈD]Aw*p 7p]bXU ootmjΠ~▥F|fpҢ~D[ FF T5&ٺqqQ-Bb*Ѳ7 ( qxD+D&1m,PqE6P1mb7.VUa6':`1nΚ+$aЖcBr"E$FQGt/)BJK.Ǒ/҇6o3O4wZ ^}zQW[;굄B+a_ޜc&*(y\Iv@]DxqZ&%I]leD^!vSTt1/KMF}WYe\VvowW!Yuh!TVˆIzx* .%խ=L2P+ᐯ"tww2`ʚ[52_XgZ⡏ޠ7'_G^3G etXLjt,S4(<O+תBOqY 9s1 }y~w|ݥs {`a6U_tNI]ɐ:9}|}W$t%W}c}ZWї}=-{{ tY2[YNY:7k_q ɧ|Js*s+wlg]@b0H8IDX$H!1"'GV{VibLjapDRDu|F*ָut111?081??8œ:ϖɐfhj_VmFS ZX^aFJYErQ|SR]nhEAF ;w\RO|鴸\x<:7PD-Xs@iy9 &6dk''QB:UV*5zTMv1caTl8 +ٳhӪ]m+"Σ_6ꁙ%u $`%D$l=)P$W>[ut₍t;~LQ ?G ]7LbRmLNA*USSy2m1Nh"Y*j ËO<6D);2aJ3%Ulg=E{-{Q`է~nIce}"!yF P_f8mܙwMs[Y \pC%T+N ޹I zX^%sXf\v9G=W?81DaG3iGaQDk$Af:F}^)JN XIYd|'!(nIzhx>r%4KՍo=TB*%WkHN&F]u]&]y Tf]x^Di\BwZA0J%$ ןԶiز3QtKϷ}!7jUg /i1nRJ*-?RWcākUT.reee6UrKOH<3 -RwO^kbA@'DJ'E|0SqW pGQGO;mviWp ;F]?'qM|1Z.+rAK1m q/W,1%B馏~ꉷAtyZ?[aIՆb(Qa<񞙐_h;%t;̋ o=Ԉ>NV~r'g~N[#:D7@Ot[%vE1b`̡A0TP=`xaVP:rm>з4HEBh "Bp=8 @G4с tG e0sꎢ`;"+v2*VO [ k̐84rHP>`hRBHCuG>-@}O AHC "HG* ʛ QH9|X|])R 2a&"꾈0΀KRɺWΉIRB XC Bir.uh&4PJ]+ ڗ1|s_5ٻs΋z۔ ؾV*FDfȰ"rJ".r@0JffdCX̆ͨFAi> AHITsa]LH{U ֫Qaح!0)bXśR=ȴKpU`[W€mVq?PT"cK^=k#$ꢞ ph "+|@0a2dʬ2oa1֬e7w]rTf<{h=['d:fE>2/U39럔7W*EJӐ[LQ4̣|+j){ɽTR EGE8؛֥}P*u{6c`щktTn7 78djHdIvݖDL@fQz,d »Ũ2N9YETۅzRz#6Q a ~"?vyo·"GrOܔVٺ5:ݾVa!y鐐Sy|VFظ=3/78nE6=DŽ(}ծ)ki|K=TzhKB=GR2@P[}ժ; Hnxd߉|i׿bӊ/,s4 ;m.UrvFE&<NwHkfqv}<3}Cxq$2W(8$0y#nסd;d3[UFd@>yh84ax0ZzEeOcJQN=`ЄpRgRHQē1vGEMuS Q}:'@8@-0#7`*xU䶂ay@Q`Xx<HV05To 'uMpCJH|y}MeG_]RwAlw.FЉx4'@r1t[m~8nׇxHsj!~1XveD6ʢL1Cfb)eO%quuBLBqֆ'zeKXoI3Q4 ᎘)jg,v8ˈ(+N?iAH~3igFhQK#⸒ iXuar<"&eir(0929.RB{=:I-Ȓ|I\vYw4{D!RuS&)IzR'a&Ox-9yȘ'!Ba\!ss>ӗVfOW^PYjzf;xOOwy 0b-ʉh'֜] I)ԙzrH׵ЉG,,8 &"tiZ.9h1T*щG֤^Op" As)j 'P`6' oobf&tFZ/ڴ5o2tJĠ_Nm@(QBh@nusp4GR,âHjgvqGIZB"(!OJGQzh.ĆJJZ\B^I`&_Ԟk/sY4X~zTV3YutAL wlMO'NZ RSE&ZJzpp@r꣑&CU`ڑ -a=cou4 z=B|+vqMѢW(qdI♬cѬI0pJ!n B,t: :z<:xuاsār15_eaT.4ywJJclNٰ!keBo^Yx6(+8R(#xz!)v_[LBeq@=ZAy'1SJ4QgKksBqӂ0>TlX[Zf<\ a OTV;gkf6+8{:J:~AK0yi 6 `fxs!W^ysH_S'm`qlAa4 ]ѹy{*{k}8 [Jr@ᖃD{V~z&4Qq4b{^Wr] Riv;2po&}H5R%K?XW%7F5L82{ɄBN}5rGks cT- LD"A468G:_3i-i%y ")D Vӈ1\ .{(b"gȐ)CgW2eIuk:F93)1ck@*o-G*Т$pI] BF^KOMM.P]XXQ`|hvS56(|J4\ Uah=/ټ%ۼP*}6'ylxSiEm A^YbtTj#.G(nv 0}A;%]-j6͊w;#r٦-mm)~.&Q|luȯ .[=+Иce·,-=T6ld!U TcY }kړkD6Mߝ ߓKVhޛe<`"T%{U}Mܷ[XEB73ρ;;e65-ss<g).+kb|}:=K㯇"8 .֌S@>b7 % Ǩ?+l}xk]+"+),ad0>ۡE.Qe"8Vz|nȚ*vtSzwv.ߚQޣ r XN$a0 1m`·_eί n\,ɑ|9t.R5KZ(ͩUO6ÍaP97N( rbޛ'Ξ>HLK4מg%j4?7Ғ |@7Q[DϴҸΙ +}4Qg&v#aev쨩&/N#ZϬhqq6L$WB9[|̃ tyvaj#q:RViJQGvSR?6{ˢlZ.\!n1g38Sn9[\ ?O{s\/2Lb8p@ Ve;mčO=C7/!{/`;V] z$8m_oO}EuwսPlO߫kO;TjĦxdEShtxf@ wDzRpO>pn~6ɎN@tEјT.Fd|&Pn]e9]> n<>/vxan .pnob1/p@0-Ro0/QMҍNuГVaQ4.56ub6)&m٩9,ZzL(ۻ;*fM|ټ(zȽ)>kHH `@S  fAHTc@L`ʘ4bHZtGcC;LBRFN47^#H0?ujyZ<[Xun+ydN m^{ݛVJ`At=2I\LDq9=VXƈ7bRJaed~Y+H/NyRȨ)[fZъW} rʍ7/bXo՞+zZ<>$sٷgOhUss؂DhFHhdC&`*P0@U% $ 5O|A^i?A2ܰ> !1r. G.龁OAr|(J(?EL.$ i'.q Jl˄hI2t-<0>4\Mܬp8sL;2p)@O9t GH#\¬rn;KERMf{L`pM6lFXƠ $<YѤU[vWDXrUVf"Sc~ L3J:ڑx块^mQG(c&Vh}L#"}kqD$cT`Z(LUM)¸5pzf\0=sJ5ueTxu>餕.h'&XV5h3\ɖ#STCWѮ})W`9CMϹcvKP.#q"=7]lnE^7QN$3ps)鰔A%#R]H)ObkE_cۯeyg=2aDžW=o-\ A\++g*(UmzƼiuW͝df(81f%@)G"eh}vAQx d N$M"^m`׼ V+޼g.|[rVq!^ɁqALpLe~@+^츗 zÚ &ĸl1"&|l SFVi{D};~v(R-UY%4O>MԖK\wk"O0pU\^ öZ.L{G1ʥŞΠ${IqէRE9_vSԡseHk \`+J:.ZMY 0% _[7W iL%)ư[["J 5Հg%F/PAdCTQ_ֿSb{d`/\z-[dAɮ%yds͍)3? b847Oj DPg ϰR3gAs.W\*"G!#EP}+\jSW {VP"*M`Ez-\;!DdZkSvzM\@ɰ;#\a۸l:TTcCkEOkʴpxjwIucB^ `r&.,2HWw}8wZF~ *Sw+TA<_=Q#Ϗm| Kcx-ϕshT{_|^wS]e6›CD 1擉Yg?ZFtn#ED( P/LGtRx% #PjiV $A<#$r胬2C"J j0BL4 Ҭ.MBTC^j_b2!4:%?7I1R P!KKBmP !vvǯLm !uO0P0Oc( cZvVmh ) 60 p* pho. + 0$axb#nc`@*&/e.aK+FQePRQr ?xatkn%NCȮa['Sk˜цQ+0B#楂buEbW<>JlHH&f6p$Q4Qdeqqa i.l˲q!'2HjQvIɯG y<6rEw$Y$Y%F%%%4*5L! &"7(r)/R(*t$2verIHP(NOQ+#"FPBZh )n,*M$+ d++I.Ų.r\"(ӲH`()2Up3"Ï>:p$zlrl(Á(B30 ."ЯoPJ54gbj0P$ob19),12p /333q4%a?Nl>ť 7 `as>e=E1ֳ;{=m>E%0S=EUJp$K b 1 ,:崨ݬ;7?mrA`ldŽWxb@e"D2HTۢPTJ1E]@4btDQFFtt4xEFIJJ%* +,.tf8TL; m4Ez<-bV'=~XR#`du_>bq?iYƸwFOҔOyM1!N NuTH,h~JG1/ &TJK3tL_U3˔޴k(#Baf̏2R4D<*2W#l Xu(VnWeRUKSySBT]K)+*r))[ C%V5lWEX$p2ǩ3Ifj%T_}`o  W|`Mmja)a ?Vb`vcvavB6AAIaHuT5US_E`˹ dc3-&L8#V *GjjDbk'pĶ#v~l\\"hU]yP:Xuhpq^e_V D-!.EMvQ%j!r Qr3SQ *v4wsg#^ rEtq0uWn#oKJuJ־77T 3xyGi]Bp8>K8w۪lyymE&"qQ$-j{FziGڪ|IM@kzYJH8t%fJrEq)Za5 %(G-:Y乘}Y].:)?՟gzi H@@BZ6v`lKBmj +iAc%BF$7_è#Abکi U Q8YZs Ziwzhΐ/f q\&!w3<|M*xx9B39UK!٭4-"ٮ[Jcoފ`dƢb6Y[7x젶c#&U2SQMtmOn۸w3 sM7aF/OpBԵ{笰D1"ކ˸D|¥pDQMڊG½c s냾Gozt;$D[-xc?y~P :IgMud.ScOjW5cZg|2CKk޶QPWDafbߛ)-@W}C ^^Ǟ+㏽ ܥ$cZwz }43Z׳yһf'P~%یͳ/-]P6 "!K>p^̭>Ŀ!c:3^ ~5# C ~wW?eEu j<dNNI @Z>N?#?H=++Wwwս Lt!h<"%|BKݲmbbl5~9Vm]r"ސ)(HIN"L9$8l:l&,hrfnN$t~$zjfւ& &~r:zfn֦. /"BvfwF.P''0I8`LaBD0=:$Bp#ǎ- ɇc$ɒ$A*)._ r&͚6o̩s'Ϟ>ڤFE'0ˡFX `ͪu+Vz5Oدv~MS5Xk>&Lƺ /"†iNaə.ah}E9MlIg.q&|V<4iΐbuWeŌUgTCk}t"ufa)FEZti޴!;D#ѩ|HB "yWO:J"M^=cί?|O!TT^ؗ{y!B}8(bDžraqȆj}%WiWmUeWFK%H^J!( He4某7%ff@[3䂤:$tfkpe 7*HƉ9y YFX.ɨ3Zb2)Z;ܔTybY^ xWt1:IQEAaxD^E7QJI{W|GTZ*x0Q"(`E ;ǢA+ˢqya-\`ŢJ!,խ7kDx_+l)^nJ&ِl2. )l3Jtvo5K웿 vp¢ЋBLL- Bǩi?>3@MJ_n:Djy41jҪFZOCmt`k uX$dbbhv׺^=e56Ub xڀ_{ފT8㎗˸<yQo$s9&(I;Zk$Sr\0uZ' %/Ȳn[jܞ;3񾼡v`{3cިhAeڳC-٣IZv_㟿߿0S쒵^a)^B5}Z$}Ep,WtA z-"VB>Zk`7h!.YP$w5L`)Dzd9H0B%jp;]TCC^d15h &I1b-^ w⊧Kf u|щPja*"'g{@S#yH)}#YǑ!b2$'59(KAC P)SY`,cZrz\*s)6WЃ/_XJ-p{\C$5g#@bdRd JP5J0bH5ln›4J<[PQ6g*){ gNC#ARBF0:Z4:8OqM*iK[!QD i4Wyۥd"ɔx%-߂Ag պe/˹< ߖ15Zֶ.E"WXʅ5H/| >JrJ 9+3Ű˘Ž F IiLsGg&vt()*ZՄ`W"[l^ˌ_Se WU6EѧQfupi*&Tzn-P;TwCj*(˫ZV1!O]Ҳu.$薫J-]oqzcR[j MzےN Fd),)̄Btp 7A) 7ϸ+C0 3p/RDXLIOv1vdk+n=ֿ?^rFE ̷@}mRB>Խ֓50]6Zm#,kYs;ūuYʓ5/yGa}d&LNZ2 58 .8Xrؕ4.gxÚ_X,( ʈZ.5Nmn:5fXɎ dgi2vI"66 dHѩJg/.mvlgoNŬ6YQwN˘mTg;N lA D hWf:M^[T89D6l8;[?sIp~A~k4+uRU$WlfHKdF䩃 "Gg.0fcs-KG0yג} ?w`Y|>ǧ} {1y3B ^H<$6q!$ZcAs@#g ЈY`.B60uW%^=/\#S4xφaZ4!H~=&e4~r;ɖ(Jޯ6.px!?o+۾_ `\0]aٟr`v|]DʣpN}i 응sF ʭ@)`Ρ̓ eH, `r B & ~0!; @p!@_m!a_!Ub b !"""a""z Baŏ K.umLC8@T hT)pb<h6A5GX}Ip?#QAlfmmfnnfo߅&?LYf@hFfZu: 4 sVI&q,@QHbLsu^r sn'ȂZڕ] 7'kRi&j~"h*2h:BhJ6qhgdopȁ|-JjB(I}Y Zf(.",8B((hkheܨ4g_~*(@YGk.[5Ybi')ri eՔe(`%I"5ftBm4&J6 "}JfNi:iLjHi$CEץbjjr~xk6)&ٗjjlijGiJ&Eë12tb~Ze䪯e6|dh5krj=++Š9Lk-Tky:u깢k ̔jR"DrD4kȄLϤ}i.:5xVz\_K Lrt&*l=lbfQ+lǻʺNDbl*Ni$b=i2)m(mIKFj=/jѮQ ŒVڲjzmdמX ;啿2*h !, HI'jl^iFNɛTn).4ܢnG6.h )hg\;˟,lXfun$D̉o5/.nHFoov)ԉri0I-@_`цs/,.]I[?)b4osQzj@IJ{N: *`"]1pa0 cg0Q )% # B qpKKAqn؁g>'.",:_5`N.xvqe|1ibe*̒xN,#qd1]ٱh 3Rq#Crnm,D9(܇z\! mI6t2H~2(t :2+2'-,,/(j)(.$33>r3(4$[`HѭCqJ/rf!.\ 9ir3^L4$pb~!3_:7F8B9ێ=K5KA#"B[s{dꑑǸvF C F JRXetRG\t`H^ECImxt+LcC 7>P Y4tO@\GRJGRC JK:!9LSf\2l4B*V{XW1ڂNX+X+e뭵%}u\;\ YYZ3^ۋUucˬcGs@u426S[dKMRcV?|=@ dvcE!; a6v'sjjQHv'glEvb"6j(k"h̽7dgCvvOBQk u"qFԈfKuPT FETGxgffwT{6D북^P+4V(x xÐ0(jXMjˁNk‚o*88m3#3xIZ0xxxx9#{ ~SŐ3F7|wT|맏xMDZ;X.arF6!B~)dN'oѮі9\邚'**lIwɌ"h85 Pz[c:#@sz{zzzzzzcwLgyGC x,RW9p;$:Z.7ih2L;B#5]trt&L: D@ ||+3|;C|KS|[c|ks|{ǃ|ȋX゜]Rk.䓊67h~ {>}菃at[Zow~ZCݾ;3;CKS>ʧOcʟ7|O~[<ЧcZ"ԍwF*r^Ap BG҈<:&85a\HjCұL7p*PH^^/$c /1 b1(M4À6'\GDC ;msOtOڬbи35:SPCuTR=FRwTuUV[uum2IZkV\G!LӄM-P0N1wa㨯o 4M3|0Ȟ*hLb = lCRn p|MsڅoǍWy[MrS}uavxn"*!c-aCƤ?&cO8ǝ5WcyfW}Zo$~T 19Bu`B" 0Br (k0wѠi b;øQC^ &8"aدth 3-A!!BCS R/=)DcV!a(Cj0&|"jf ˈ9(3%0X b.2ӡ.aDQu JMj7;`.+g:z'lp(EKPrL -Pu¨44؏leTLzM^aXlD7wY(złg+ϻ00uToZU7-Vu*dn H&[ o8P/*\buW}*V~u@fsً}2[_*w Њ9fӑp\EVGbW}c]`Ǭ vO˞]nY+VXF'lcN>49vbtL@?\4mL9x\=L]`\Ϙ22s"xx\׫\3s⿔ j`kr낟nٚ>2B7AW+C׷eFúh6d~"60ϥЮߊ])pM-%]ar fL(򍑜UGKF`3?6X@aM c#7r!Q vP&(i'm(56KNa .*j.̄ Mfٙ)yJ}YBMnֶk얉a^jx)^q?׽3=߀;7yW9~o6׾e/`i`: 7Z'T;;ۃyoh_J#쉠yoꕽ@d.5m Bci$!Xz)D)Gu (CcK;g 7r}~҈Oho{9*d~]tv1SO|ō |*w+°k?vHا8l-lB;C 7rD"G؂CK5^; Ĺm"DC2$eCê>ڼ7=8@8CB#8B@|6 7RH3#z|,$(;b۟ ($H( q˖˾t,EL,L(!L$DDPL8dL:B=Lx($\Şg`@"4iI[|W4ˣ>9C0;U¥q/E.䴦l|(J<34LLTLL ̷Lz)L<,LDq*,CqTBҖ%x1?16lt̒ )tBjs( 7!++E$3FA"7TlJLN'I.ƷzTQэQ Q"Q9Ru؀xR(R)R*R+R,R-R.R/R0 (/UḏǴOq MS*USCH(S  0 Y$Ӟ .u 70&@TQԲFGHImथN!=UMЩT<8I%EYQTUKU ]^ ['Sb-Vc=VdMVe S.mhX T:>eTOH,PS,==|ࣻ0yr1a:". w"rs :)6v iyez{5Wtu`iW?Ջ0:U#U\XIMR]Y p@]Y59aNqVYٚV~yXiX}AWmT׋EX}q-4ߩ7(%q23KW=u廰}CZe:ZP0Y _mYEUX+\}\ژY%}ҝŁ ZJ[zY[J['[%ݫE#J@d /:gɒx -#}ۭ5]u"X{14=^ΖI#>b$Nb% ~_fPa'`'&\x,[ߛ_`6X`;4)u"p()fy'%` !H})@ A0*dXƵ=fd?N Y1_JFdLx_TNeU^eVn: /=*ixRcbc``ebdab_ cmV-ch>nz-1P C?Vid0 ͬu[Cڊ rq9qV̄9H${ NRq>|^ghgJf.%hh VfZh4Uebeb abi%bdef\h}f6k% U)-AgLryt(h@{( q{;da]cNyƺꂨºꥮ歮㾋j 1藎ӀkkshdYef Ni(/bdbցg6ά)?>>kIj9j3 1-;:v1 '3h;I$Ҧ^CPmx@mu7mN.L> n(nnlFݞn -l*]e>!1*.nfȎ0Al., # 6 5΢O7Ok5Fp~x o  G /Lp?p%pp{Q)ս?n0!,qGi fbbb&avSHflnolXpQow.qRpxx6YyH% !)yph _iW1sS+0zOPsqus7s9w :7t/sElFqNGMtQUr""l>"P0*vt9A/:?tK7-Lgs?C_w'$Bֺq6&,JYP=Y#yvj뱦n]m7viG^s^l?Zu{ g{)_F!cf"bVu]rQӊ'Phɵjk?sfvV^6 3mshp 7* y1HaG#;B(9LBqoy$# T"H1jܺ[*UGߜgꧦqY'㎫n gunLuƂ JaG;y O5v 7﫝 phsP0 Pc Z ڴ/0 Ⰼ$FHʷAucr)As+ʉ_VŽo M /W)b!jmmWs^/z#0vDIE%3- LYAo8~t*8es-B& *:ٲ$͞d* 1by:/9ġΌ^56qC_X<Ƌn6V<8}lg?w||Pշ'27:n)]qa^ ;&r b(:"R q`f XljKp6#d.,BNi_$YN ;D O#Vl:O}?!~ch)V{7(V1¢D</;[LJG͍ 3eЇZC†&,UАIYbD,iD͌0D4YFqc(8G!MD9)h&XZCJyVjGۜ?<1ДG|aZh9NzbMqZlL8!;{_Xvď$}|J`n &-GDe$d$@}!Pa~#*Oy0NTU0Dx TC@󪭘r@B86hRQ/iI1SFy_'IEQk0pt>)Fu⯩d:JEqA/p^y/s [S9V7s1#MQQl<e:ꢿbr\*M`$%Σh(9\<bH5v9R0y%`YXterDX\%LD:ͫ|Z\U!xӋF%cVӭ=r$mmƕ.?溄jo'!MQC֎#mRfknhJ@4ʆ):Oro.Bi/MU/+ᠨudx" ã}Q[3``146̈zVy,#|2/]Y'Zp`{I*UGuჅVX>1y$er^ܩFͲ!\Q*i9gYsECTrm=ը\6oeӸHL LZkwԴ\\~,֑Fgt+ah.:g`33wň 9PtRS0 ү#IvL;6GKJ0njز65X[41Tg{z%iMӷm*vqW;ޣ ƲizڵkL~ۛ#ɴ a,M3NhحN%?awT~78/K"#8\3r} M2bzwq-\AH͏r3J̃~rI9߆ /?Q#-8Aa2L rv߰;MÔw/l48(z?}Ѡ/=tۺER,ix/|.{Mrf{_X EiFha៦]'_͊0.ARHc3'iaC!g^ӷKK,)C~˲n;Qt}J Ub\U^ ߳h`Y?|{ X `@bwXJq(2CCjˆ>uv12NB`A,0UkdPٛ$y{t%7h,Ll l .˺;?Ӳ{dc.jEjNb+ݻٶ/ۿ+9"{)p`82LʷZ*4p?'EæE V4<Ñܡ OS[1YF;o [mo qO4U҃nomT]vB|W BY[^ E\ŵȨpR @Q"KȆ Rv^ɯ0G 淦,^@Q{j,$ `nTN}I@fߖ߬_nl`l1־1)V슾?u%y" J T Z!$l]S<针^(1^qR>,P>N.2kcGMi>~-!WZnPNcj탾 >.bn '*1b蒸0lw*g~TH0`3I*@B?DX$p3XlMO?X5ױSBU(HVu|z0N1bjՁrP&g҈춰ƒt257ubbt0AECGMMCE9WY[]_acegi9~2=qpn7uw{ck}?_T[=Yu5]K3í_Ycq +1rEzT*OJ6Hʢf4hɓ=qQcH1H&!RASD($dJfdEP^rI 1suTMe*|r,Vf&x,YoumTvڦk#J/VGqL m? 30TeӞ-h6!E2ĎMONO/еV6__-.`i0Wc z .n\Nc6E腧"LK]uaw'e(Kzֲ%O{}⺭z']~PX'3|^˃ozo31\#?>5|Ck <=Lcze'vVvK.d(2 S@bvl`_w[Y"~ 4_>M}Px eIjXDf kI2u=0:> ="Δ9QZ]F*XTFh9>psbUBi\0g,Ȱ"#q$` DTƞ>x E摑 Q;wiy#leaa@bE&Z2 @`aNj 嚀d 0딩* Ò%i9 R#B/R f1s:/Fl`?g.t8Γ1#19WYM γTۧ{X8ÑmW:F VRU*ԡ4ųg&$@Z{h쾟Gl>)޼ t&46#Bd xLJ)T4 01l?j USCLFOeN4Y sˀM 3XgďmIbkEdvϰW[ YC4v!tuބ[qi,^4mqF!oài.ύŪ"}FI$݋o^w4~7ONqAcbcB $yGr=f >VӼGw]o#A1KOzC]&#α~OK<(GYtDUm͍no;+ZJffpKbúd 读>`R S#M^P{ʹ|,4/H8ϼ5p}\uy c?v,r U;NOph%T<=' H υ*2{^ E.P@I%6,HŘ&`o͊e.u8$TΐH..H5UIJhmq02/LtfK@i*.pڏפq(MD @c&2tN\~fcoX U ЌfH ذH0B (!:F^/ˎi=06eЄOfAȞtp9q҆-Q/𰰘]eMU͐ (Z"m Y{. &ٸ !6Hd;je <̔~l+sR7E10i,);s;;2lNШ/;d4d:b01Sϊd7i78eshJpS3sm 0WtDde# dpJ̰{@@'!AiTFB]B 4; t')4C99àr!):KpUF=a"J,G4Hn2FQd Q/YSN M UTkQLe5h7ЊMj6) 璵 YY'/ ]c+䮕4A@[S]5`TS^~TM];Q߀2=9-[_VZY[ϵYu35FXZBJez.>WΦ tWMShHFd1;T{@`6dhf lV4qV7je]Vq>5h3ޚ슫 2d =AhӮsgw dhkv\6r6iyv3|dCmdm1㾾܎EKZ 3 bof(Mpk W;w\pIJ*OQrזi6kEu-ttk鱂Z<vlegRthjf#Ϙs 7 i,7f#sv3GL$(hg &  A AzzzLW,w9fy#j$|$}{50llqT]Y75`iwTIlWRv}x-~f~~%Lw{T4(BؐP\j52yǤVx;B"6l b{"j:C#7gbrxvA1jCR(5Cu!UJ] `ȉn؅x8~+#+o8.i~ .BN鈢&z }Iw7z= k=/F5|rx崃LU+KL gCgBc+hDal,c!9>qp]ߢth1UK}C\LT"8F [!0a(!+o%⟪{'ƛu ozDjD=kp8l}C ~Ξ>M~%^^޾f4r㉝d\,=^RE/q=9]![~}^Gc``ֶm_= vu/a1UK;1H0d(^#>oEhXInoe fTӀ}Ӽt| 5Z+,BECV¡Մ#`eAAa#$!Cb#*'-聕' efh&mB&),a"m2n#-%twsn'u*vpqnx,S~\-p iذ$~5X>TSK*eTG*WdD0Xlis%i2A)PcI%G2%z)Ԩ:^3rJW0m}gK\g[su}Dh\4ڦˈ]7(f~ /)&z!_jMrUǨ4U\O›)5Tc&jl"ƚ9Cs-ѶLE̿ĸPCYOO=>s"m#'q7ȩR0'͇w.y\J"vBJfXR,pfl؂pF; <&icဈdJ0  ( : (HNOsyshȎ:$y$ MEГmhI qەݘo,ݗmm4erV1_dB"行4fM{%V( 牃 p=<b| $nBHh zyΕީ*x(8C){ָ*enYʑH듳Blk2a~PĆfQfYB)&B:-˙r:h&b:_F:P\/eY(鬧M0[ĩP+q`ұ,1& *:'Xƻm췦DC+Mq[Ԇ:w%@:Q4FVp'05̱/io!f }H6w)vƈtuO7*(Ņkvޏ-l .åb.oB׻bC*!:;NtC<=[M"nؼKfkyw^ļnzwŹ+} Ҍ4+ _Y [`lH"v iNf&>PRl9p̂'6.h"η*K Ұ6!sK) Y(Kv/D)$΀TDGg?t&h$Zĝ%'UX*+cLr2/7,p!'̈ 4@l̜%x._tQ`~$@M$A"\ Zg W03M<<%*SR%,}DJ*Hb&cHe83k$ wE?SѐL$ 0n).fji].s~pfi'MnP䗉&0n2a|f=FӚD6yn╱4,oUMa\6tv?-JR47 I3hU$2&T CL6Qo+nѬ%8?JJ 5Fk:͂bK-;bHXךjb=MV. 1wJ;Ri1-k6Gx/|+ҷ/~ܼzk}S*t~ mw\!Mn#y7˃57QTQ︩{4GMTs0,=g#2x>-7c*1quSC}tq. VfFi2t֤8hw^3܆9z 6+v3C*H로-P[ć\`JV'92&h,7G5Dǂ ,b6KFeJHâ՜eZ:εiwV+XdzMf@ICҔ5^۬涶pәiz>7=`cKςe[R*͓u]6ZS?vk!;ռffXnO<Db|̊I b4ba%8/s d`/<JB$g1X,w]< 9p$INEmpSMrυ++ 6. AwmޝГJG{*|_y94 ywyOZ3ȼWEMp=pi3;2Y_US6h=,LKja 1rqM}ryɝ{Lhem+;tNz<3[u5ѷQϢK|`G&E#Gs'V KSPK%N [\V,8Cx2| `-ɄQH\T`]-l\1 ~9^Eu r[E1u Y_'a B '9E!u~׻vK[M |`a] n`= }:}ZŐoExB4mP!Ea4Ha`B~,5^ᠸ`( ߸5] ^*B$! bab a>!H]H /R-WlH FNbb]IBZ#2~3B$6p#%x7*b( !:Sc8ʧ̣\c)ℌ>* BbG0bQ]DC2ŘE!yR=1GJeC/Ky0_1WHe2c?c)4:MNʣ$M&lUÁIhQ*(=T.UZ`VTTjNuU$Y$xeLLL yC wJKFnM`%MMVWc<1ߔeZv^ǃʡ<^"bB¬|TM1 Q%jzŦfYUnn杰oCplcqq/M#&,apj'dW_O/F,E*OJV!bna=x"c 'rBokFgL'i]uv!6o^!|t `DK)U$^62[heb_FfdBN({c(iUEbŰ] wwc']xާ'Nw |FbAIvi +^)V[IK Lf( hAh 5tttiXX\4BR7 *k٩YmgtşbB"N~&.izB,*z鏂)jZ/>A LR!穆Ѩ*¡FL]jŦvBvJR8"O]БYXPhIik@kRN+dDƞl΁k+lkλ+:ԫR 4阱䐪D%-殆b*j)pa*YE*`kF]ȸfrl08cdXXNH9BCJ Z= 24^v.EL&\m9d6zm#~6 &ƴˢdZ>,*bD)U>|~[+W $_ ɑȐmݞ5-ih-vɄmhVeU='fOj"Hʃ#خ".:5bA |njf?0-8/.LolllEǮf -BK֯ {Ҫ.Aį"N#Y$1oV&"*򞊾2(;4& *@igT/d8<@ 3U5, /SȰS0iь g [A 01pL6vۖ(bYV81`qHF~q1.ȾqSŒq g5$W1Þ\9IkeH(x5e[FN2pQEd27u5!(CQX)3!6J30ք,׍rٱ-}Q5dvK232+{V,W2S*G% .2%2  mWYiW~.Q.Y&. =k=>ϳ>?_2CL71)"ϳ ,NG4 0]<_/{3 D,"M*tdBCo t}z߽50yY(0V߬ny0SnTg?rOW?=]ݗNl .Pz<`>u<],D:tC@H㲩|:Kјl^Tncry c1\vÀD;ap, <(p cLp Kp4 $ ;ԣÄܻ4$3[4,=$DUl-eӌD4tHsS}潛Z3COW_goYYcKCPzs^%(; >4O ^Ĉ@4afe )\F2r(I|QL iT] ٱnbnG_w|iXZU@{i@?@ڄ]H8Zʓ$d]thAƵjֻ]+}wl\Fb6[T'䲐hңmΫF'z] ɂ"n OS̉pv;cȔTN>yJ,N\8 +Jx ۗ2˃>yb\~*Gcɒ䀱8!p dɏ@,*;4|Џ$pYҰ00C#0t.G΍pXmG!c1X %dI'2J)J+RK"bpү0[TK?G'#`Hg1RELf8eSc@o`L@,U]B1UTRq5%xbY,rVH:RvK,[owI5SɖYtPIxw¢͔-7wN 4UU=a5SWK$Vg UO[+ATy;H9J9=MJգ,NDoP΅&SR5m6$XH-1fDc7YٱXzF9ԕ%:pjԒK}Cd;letF;23Ȁf>fHΙi&gN8湍6TJ ͈Vk,$nJ7~T %w ɍЫ8\Gl2@ǹ)rjwqV{4,S6x{#Fmts;w؅5dj?=TsZ\^0Y8eJ/ߘVTuBT! _X6/0T<sqp&+Ceņ(Q@S<vPG` 6A4 L!A/8 G@~4T .}{1ؗ,S $f2XT"DO`ψ\gI41OdFHE"d ̂`) {7BюCxG>6XT)~ge >-2mtR1)\ 2MJ($ GQ?$J<5Q/T,s!YFΖpJ.O ^Ҍ|%8Hjq#Z5M&lf8Q7H $fWhY4"s.\KV̛d1/!"` ,gC1!QA#(`*;4-'5t8YDPNY*F}4@8ez<4 w3ũ*pԧK 'v"҉ԔFЋ}fDI _Bu[@/D2ĝjP 2O-;eU"+nנFWJUY"秏FBֲq _{zٙN\kR +bY6C`I*VIs.reFaVٌPBEH_[VnUP&ѲݏnKIf4u[YΖeyͻTe6=/vrz7t4$kv/PѢCeq[i x1H^`.U+7 1vIa-qFI<)zcH:q/P H.zM]QילPXp:bM# P,VƊ܆Y-МV篈$$w\P9(3 C@rBHcZӟV<)W^Sr3]I47 0~n4%iAzkc7:}DV"1;("p񘉲lg4fQ[k ۊbnkr9)F{ww2 R adڀ:g me{wyW`pF wNS ijq9~C1RZx2S(89\τF˼N)wu']\5{kd[^+Q8>LfN'N5|z C'^90F͜;\XfI&#Ml5qϜKsI'KpEKx}2Kog'e AtT,8Ja2G?;{HxJ9ۻQ¯c?3?9;@˿Ҕ&P۵| )&C8hUSACRCA$ 6,GS,C@- A-@9z û„ڃJ !: H@9 |iؕ;)\'ܙU@,%B1C1t28j=drCw2{>+p*@CD1&Wp(9B;BLdC*X `B+<ÂBEʹVW4:Z`I\$]3aJYO,R@d>F\b1topq$Z3Bt[DĈ5"pGG|AdJ)'tU3eD_\ƲFJE{ǡ)ٕ9S00kEb zAA0'1X<<ȷ"iHTBԋƫFk~$Dm4DrTʥdʦ\JALut#";386y5*k2RsĀ ȱHlɞDȳHQ˲Ra,-Tag<XҔ?A>KE+Ԇқ =1LL$D&p4DM~8GJ(LqJJiM"L،M)K"5,ϬLļL 4E*MC7pnsHH*#(N6A턑| EOdN39όIϝI٬ͱM&| #;ݚެ`Q'\Fs4Ofby U GXn(k?! 0cEY] ÐKѾQQ? UFQQ!PP$5 -R/M ńM 2m Ų%MQXpRRR*5a$=mR8F78L6 `PRع+T { E%􆙋TԛTC KUԲbTM FH0;d^E%[0[ʽUTI\#c*3 8ME}2|-+S޿!5 5V PU]Y\t=_!]lMGeD_kvxםv@ݝ %|ϢM-_՛eA[_]EE( ;PhpF]ӝ@{CQ'T+!1ᣰa$vŠ3=Pe.vF:^Ma5&]'ƣ#+f%AD8}2e926]sJa<[a9KxQ5➢K=TlTAN22L@ǘ[F_H&NK:xM8dd+&MR]^D/^!6=>WXvݮ)fXvVD<0I:lI~I;8RVd2T~d-dj>) 1C.c̡ܢW-+(CKY@gي6̮vwxfrgp3Xn*\b]6[e5.EC-NEfgbVDE"Jի(W+D.ƓdZjSh{(jtHHZ5ȭC ebJD`VjV ,&[6YDKTCfJcVi!; 鑇7^ߣ6V!$d(jF&0 \a[[4A3e!m @+^.6fi(ρ쒐ٶN(2hikw: Ln=h'db%{ĮշpƆʳU !KSZmvm^PM)jvHi8WFE[oԉOsӓ5n38BgWxpǠKgܻZ>~@^t4YAvqs Ƕ^ppo” WQ*olpYZ9?У_kSA^׮OcH ss?3O|pKB>s@<jbqJhE׽Fn'{Dzb!k8[r? A/sCלVs26sBp ,:t3Nz6^-wv?V" ɡtu)E\bl2cdIkv5RI=JMvLo$6NQxcl mov`(93v(]_vWg8QiN3H$-a>]xTYB@Ny7#Ox:e_w;x/%)ƣGzlc ;z{)˩t3w-Gk0W7AW{y[ йl#":[ baNj_ް70Budٻħ7/-Y|=z^zQ&Hg)aw[}t_6pl…_oz6|-ݷ|]+z1 EǔɄ0yY] 7xF~1 FXi~pH,Ȥrl:hRGZ«vz`n,$E|Nٻ~_ im^~|Zyc8?c18y]j ggik gIJ թǀ$ ۟ ӵަ仫ҭsxŪæmo`E\sFK ) CI0bH@WʜI!rɳϟ@V*͗6*]KJJŌRk%8*èNc;hZc5:0.nsjE\voʆWkoA+ ymз1OVc8"e߽klw.d[MUjE۸P}iɯjN\eTȓ+_[¯4/Nm"AhhtK7' 2ۜ3٩/6--\Q2Vj*06#0s5N-~1w_r f`? O(hb (j$ u4ֈq#seƌ6)*mTLGLޘT@9Iw^7_(b.f܌(*&Jc0 }+ -b`*U6;l&Dq^&hX!' 4b(0J@zM;OeЩ)*kfDJ&뮼+O>A;D)鞎f_g3PVN)w$`kL,CQE"-_ߞl|+X(螹.gFI拏렞 ):[g$e6nBj(I["-oL-1ݎ nO 4.t#\Yr9DZMҮ16TMVGrO+v(g`1|-rd2{8ȵ"uo;vRm64X3y7s3eOe3 };w>x3{2 _z '9,W 6/./=g(\AZ9{i{}sv9Gc?heTsN-Ek 7AwYWOx B@}h4™ٷ/CAVZP,njL9\A yЁ KA Ry vX˱SxO}́!-R|1X$o/nE>bT3fSeCIVGHYmLd"A凌W} 5av#&_q}J&LSP5^ :E=zGʶC:D;VGE(R޲w!*{ V3T4yc$Dsa0nä1lj/a Yr"\:Vށ䕌Lxy2)_T0ThNBPxt_ Npӛ(-ARqҔtiK_ RUh>9ĕ3)A-jS@6SN5B#]/&Z9ʥ/tT/won*'@FXzrcYJkCZUӆLgJ:!-b`O$vܞSQS 쬥7SUmX s>D tk6 !i* v>K=A1_e:Ûꥵ[7 C\X]ɭ ra{wK*-/gx{VWWgɭnSSwAf"VGH 3IaW$"+>|!ؓ n Sxj+ŰGA`z8 ʔxӅ<q"HNd$o">1 9l0N5LX9jI1[X1֠4QRT 00? O l)fwpv%~;1Ԙ?#$΃c4 }k1S\X+E+ GMR4kgZr)AiXft@zDz-]&]8C829blmCW$tE"hwU+vZpvE&}'fӪeIĖklXwg سO]q#І/G7~-R1pڎ\[㘾R=>'B "1ZLIS@z-|я8FN,3~ml\s⫠5ŀ1yN=J֧͝ "b^ž@- $ bc'y3v^c.SfLǦUKsFenev Mq'VQThY-̾qs"Z&(}m_rB9_?B1cQd g PUI 90vA6#ŜGh4*|ѡ e% 3SL&x` *ʡpyByA*BGX0VF2en=꣍ 4"ZbOu7/>d(. S !a{9Y,7,fgSmF d"f{kz)(l U"r 5zڌ קq: ڤNJ# BR@7aj2 sj^0jHکEPA"٢n4~0Zjiz27s6 z8IZHk$x3RĪ d$KDQh?rլM+ڮ#AZb8J%$u2 {]/㚬ؙmPb*bŖshEypA`) +6F|ef!_ E3>j):[L  GcïT K+5!K:^<"<\م7.۳Q|bA,@ȣ9KN?‰})k # &#IDkKP\'a"|;^$d+=7f [LYgK[{ܗ;y "+D K`cKkx6p8cpWRr`)VSvgt}" a7Sۺw񗾇ʾl']pCһ~{D|clGL+ĉ+{rоA%f gXb`Q$Gp*~RkMKj)Ru f6<b\,Lv=L,?L A KC}+UVp^BlńCň6g,e5AeĮOJJ~!SUþD8OKq %Z3gcݲP3uvWD- 4ɹSmș|i<5쉃l6Ʋ"[ʤl| |@2azJAlȥ)ʝ,f,<<2H)D$vw3ݐXpG7TJ \r1l{w0 S\l IJrL4̯Of pqыgыMь5^)ͻ+=8*AtK Z6LMXR\!qԻT`ַAl`Ѫjʷ.hE_fA IֆN]'M]E:Qi] "M'U#` ,XщGҀ=ҋURؤrb PQRma]!,XrC_͑y4 u@ bWڥTt!hg򒏩M;mc۰Mf,ĭr]זҐ-!}=ݽ ]1x} ۍކmݔpp[mm-ؚKoݷ}޽ ߚ`C<K))=$ݹڪ;(C: B|6:ZQhp W7&[- 3.~!$T&^Vd(m䁝z0{npהM${qk v T=_n ^ Ͱo`]~ R ^ zo>艎y>,?@57n$I%H3;kvWhú a_^8E.xwϒz.DP27np#..Qx`{ |m 玾`=T<>r.$w~t/so.[~.ؙ~M>ג}ގ!ѿ nq^hp/ 뒈 >N(^"ѳK'K)r-9r u(I:o)5Wsr//d.. ?^ ^%4o OҮ[Q>cto`b ;_mu萟nު/ 1Nj0Wt`s,!LQ &Q;\lB(TO/JTV4B%lV, N-ELo/]oa_nOP#@#.9O*1*2G]}t p>ri5 {@b !!`00pqတҁ``PPP0Q11aaBRtt0atTtvS7XpsQ9YՒڶ4׺@ش؛~YVs lO@14 ~9c Ib,T vԣ&#>os@PDK\xc˙}TT1'G+d2RZ(dIp@5R)t HDl2:8V-- 9M.vmw[3{'-]5 'h\߮}Rv`Vt…Ԭ!Vl T㽑U|x9'ٴǤ}4A&`J)̯AX,Z&G+Wy ҾYt֐ѯY юC^}=ĻZ++9P%@^C  TP۰EtŁzpN{PqBvQPEbPSИNBqGdxG%Ed_!Hg &kG lqk&γ<͆*[-(L43 =P6L3N#2*=NjJ/B=Ĕ,*4TI ˏЮ%xIS(mۄL+9uF-o UDED$Di%D1qdCjYځ13ۻxF;yqe~5q}Tq7o&\P_@x RPsdBE}ǫM<~壞TKC()"-,x!@$]+qManCv찅 !&D"f&ws6_8<!ЈZD&S)΍ŹB AhPsHētw#9FuXahEQzqUCI CCKB@]^t ] G84֨ai|,qR/#F/=Js 3qmq Jd6+g8n%mӜ `:I2H,{dyy22d2 gm`xD\mh`GVƃRjP#Ah"DUC3$TQhH16T"Ϊ@:QЌTK%I;QCP`3d'й Z8N}JԜ *{@tg:好hpGԦ*$S,xӻL8$ W:+6ZYbITlC_q-b;jUhV+g>$?|UFatC CmO۹Y΂PZӞUjYӶli[ǶnUk.gI8Nu hի. ,]U*W̥6 cEre%,/U؃DV-ou{RV5˕X>ۗ{_}7 jpkϾ1@扆9"!1Po1)'qUL[[ *2%ӽ!ulxB.DN <.d #{/6 EARFqqe$WC[ncݔy]]M c;y-gҬy ]A@3[F7_Ce4k\f8SYk+Ƒ hhs;Ҡnwli<&6=mmy׆ވ }ȠЅ;Z9WT}i|> #$0 8 .g|߇?q3 _904Wwp,Bݒ,Xi/B!bF2V͊UO-ivuQn^KuxcVu?CHlۭt lzt~%CDug)?dyY$+|WjPZV$U |텗%mԭ)k2?o(-_={ yI/ 4kot!8l7D {F"knG*)/Ao{jG.vA,OFoWIEOͩ$,G->Sˣ PG.pl48cmM(05,nm`ŗbhBc1DzFA5Lo ehB Bgj L@K pP P yZpuJP Pj[p~0z _ p[@AïFg@~&rЋ.c1qO|$6$!|81jb1iU P5a)h  Y]1gq5u1y'xq"zqh@J`3Ұѣ汽(PJ}11+R wL{#7#C22E$#!}!{d$ rI0!!2"HIB0 D !G>333DsG*'Sl4Ak4a%[ *nfHK(aIg~ *+dJ.IOKLt!FetPUPuPPQUQQQR#UR'RP+5Pq8]S;S?TCUTG5 WټzHSJ;NH4J4U`%& !C'VG*r5:Y+Wl35mf5tY2~uZhXKMDH^U^^5T4___ `` `aVaaabV`#v_D@c7c;c=V>VdGdKdOeSVeWe[eI6d_c/[{U\5J!]ia]]xZo_EVdMH>ጘ!5Sxic@D}k%E~ 2vj*YFjyDolSRoVooon`b#`bWqqqrb&cE2Ws7s;wsC6BWtGtKtOuSWuWu[u_vcWvO7d=voGAY knKnl}i}*?eh.k37!\\16Gz5zs_Ow1KNՆ%ʆ5Ww7B{Ay}p)6q#X%vrbW x؁!b74w3sE`v;؃?CXG8ukW5Xw3{g}Df|{}ƂpwH0.1 q~h\3^5G~N*g/XrF)e6͉jV 1[ɕ8Hn)#؍x%8_X8x)$r? ِ tIّ[7d+R؇.8)8&1aӸ≕'-Cہ dEƓHd*WىЕgˮ&k$jn9ry[v9z>QyYlv XٚuOYٜYיٝY癝˙yPc=ٟلO ڠZ:d#Rؘam^Yϊi9Jx|VM>$dMläm3'*.ˬyT7~p˦笀٩ښa+3ժZ=U/XZzEZךڭZ:͚ÚN ;cYښ\iL.Z6H<"AkEm""jHp~=g*&!0屩LEMQ;TYw۷[ SaKOS:[;h^b{/;a']%Gf;y{CۼI[oۻ۽[YGQ;ld\Ot;ۿ۶ <ߛښz{$ý(a1jtJ2k֪P{nФDJ-Oxtlpɓ\|áƇ\Źw|`;ȟ<ťTyTG\箰a#j _4L\or,ě0ʹ<ͽ\́qſ<ɼ\΋|}̳#ˑә<DZ ]59ӝ3^q5l'xvGʅ֋)'s}uEIī}a+p|o;>us9دث=]+]]5")Cۧ/^^>{K]>~譞>[ڹ~w>僽4| ɒ<Ҝ4.ZAn1ޯpZw>D`nH G[#__j탆0>5*K_N]_iW[X^I_MS/qVu{UAy_~ /?_ݿ?g1L8 Bl& L2L Pv1p|p딻jVldٞ6*Ž5eQىy 5)>Ea^%r-=- Qq*yneB:2FM =LL6O|,&Me1-190qR= '#+59AK_"YcgϹz C%/=FOq8'u%oH.j]9e{^Y&g`^H;7) 9`FV }z'k: ٩V*ᥭ:zvgPDJX^9 (@$`D9u ôDͱ){EF bmnl61n K @{ƴbuY3Ջ,t2/AlNĹ/R .A Ck1"2 ܯ*R$ XC(vPlaG8ȉs&|?4aeaTb ȿш|!!h-"2^ $G2ьO XI6|Ԥ%ihaTA39'ˈZ$jd%|`u+rDK/J. ]1sL1g\^MtLt.ӣ=T 8Iq^%:K<1O&sj(vX<~Zӟ(>XJӝg9IπS>IQd @7юN4*Mh3-ҖrAКt8u7c*zT PIo4%RY̜=OMn0-hTRVUWNYV&_UkXgc6@\r'T :AE_Q0d6EL@L`jl.paMr262ud%Rְw5b#Rud3Z6jsPВQon^k[]k &ֹ|_[].E-qg\6཮xK^Wnob3ow]w.|WfKسc>0V0n;V8숟 a N1W\j810{aa9v,8V<!L1B aDu#Qd$FSޡjh9\тLĊd.<0%Ym~2aܱU̪@,8K|~a3`ejaxF¡qD7gE]vfC9јVC-G?gw.͒C-@0YӦ.sUdVɯVtK=gTGz[/Lzo=lzyףMgf˩a1[v,c܁ b;ew[Eiv{Fgz/;8oW{^8L= lϿ.$xҁZ L<%׫rچr|9F>ϼ1B3Sh9*yO=4'sJ̵.+i.fwN=Mwx׹s9\'׍czև;>yܳx˧<8x}Itg;/Xr[=Sc}xg>=n Ͻ|ՇA;SNMP-MIB-Compiler-0.06.orig/README0100644000175000017500000000244107435074233015205 0ustar jdivejdive NAME SNMP::MIB::Compiler - a MIB Compiler supporting SMIv1 and SMIv2 DESCRIPTION SNMP::MIB::Compiler is a MIB compiler that fully supports both SMI(v1) and SMIv2. This module can be use to compile MIBs (recursively or not) or load already compiled MIBs for later use. More information about this module is included in this package. INSTALLATION To install, cd to the directory containing the unpacked distribution and do one of the following: a. To install this module and its dependancies at once, use this: perl -MCPAN -e 'install Bundle::SNMP::MIB::Compiler' b. Create a makefile by running Makefile.PL using the perl program into whose library you want to install and then run make three times: perl Makefile.PL make make test make install c. To install into a private library, for example your home directory: perl Makefile.PL INSTALLSITELIB=$HOME/lib INSTALLMAN3DIR=$HOME/man make make test make pure_install NOTES This package contains 2 sample programs : - mibcompiler : a small command-line MIB compiler. - mibbrowser : a graphical MIB browser (requires Tk). (not finished yet) SNMP-MIB-Compiler-0.06.orig/mibcompiler0100755000175000017500000000213507435074233016555 0ustar jdivejdive#!/usr/bin/perl -w BEGIN { unshift @INC, "lib" } use strict; use SNMP::MIB::Compiler; use Data::Dumper; my $DATE = '1999/05/06'; my $outdir = 'out'; my $file = shift || die "Usage: $0 MIBNAME\n"; $Data::Dumper::Purity = 1; $Data::Dumper::Indent = 1; $Data::Dumper::Terse = 1; my $mib = new SNMP::MIB::Compiler; $mib->add_path('mibs', 'mibs/cisco', 'mibs/com21', '/home/ftp/doc/mibs/ascend'); $mib->add_extension('', '.mib', '.my'); mkdir $outdir, oct 755 unless -d $outdir; $mib->repository($outdir); $mib->{'accept_smiv1'} = 1; $mib->{'accept_smiv2'} = 1; $mib->{'debug_recursive'} = 1; $mib->{'debug_lexer'} = 0; $mib->{'make_dump'} = 1; $mib->{'use_dump'} = 1; $mib->{'do_imports'} = 1; $mib->{'allow_underscore'} = 1; $mib->load($file) || $mib->compile($file); # my $node = 'snmpEnableAuthenTraps'; # my $oid = $mib->resolve_oid($node); # print "$node => $oid\n"; # print "$oid => ", $mib->convert_oid($oid), "\n\n"; # $mib->load('SNMPv2-SMI'); # print $mib->resolve_oid('ifInOctets'), "\n"; # print $mib->convert_oid('1.3.6.1.2.1.31.1.1.1.10'), "\n"; # print $mib->tree('ifMIB');