snmp 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +179 -0
- data/Rakefile +34 -39
- data/data/ruby/snmp/mibs/ACCOUNTING-CONTROL-MIB.yaml +33 -32
- data/data/ruby/snmp/mibs/ADSL-LINE-EXT-MIB.yaml +57 -56
- data/data/ruby/snmp/mibs/ADSL-LINE-MIB.yaml +224 -223
- data/data/ruby/snmp/mibs/ADSL-TC-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/ADSL2-LINE-MIB.yaml +321 -0
- data/data/ruby/snmp/mibs/ADSL2-LINE-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/AGENTX-MIB.yaml +25 -24
- data/data/ruby/snmp/mibs/AGGREGATE-MIB.yaml +28 -0
- data/data/ruby/snmp/mibs/ALARM-MIB.yaml +77 -0
- data/data/ruby/snmp/mibs/APM-MIB.yaml +75 -74
- data/data/ruby/snmp/mibs/APPC-MIB.yaml +261 -260
- data/data/ruby/snmp/mibs/APPLETALK-MIB.yaml +255 -254
- data/data/ruby/snmp/mibs/APPLICATION-MIB.yaml +138 -137
- data/data/ruby/snmp/mibs/APPN-DLUR-MIB.yaml +30 -29
- data/data/ruby/snmp/mibs/APPN-MIB.yaml +325 -324
- data/data/ruby/snmp/mibs/APPN-TRAP-MIB.yaml +10 -9
- data/data/ruby/snmp/mibs/APS-MIB.yaml +50 -49
- data/data/ruby/snmp/mibs/ARC-MIB.yaml +19 -0
- data/data/ruby/snmp/mibs/ATM-ACCOUNTING-INFORMATION-MIB.yaml +22 -21
- data/data/ruby/snmp/mibs/ATM-MIB.yaml +94 -93
- data/data/ruby/snmp/mibs/ATM-TC-MIB.yaml +12 -11
- data/data/ruby/snmp/mibs/ATM2-MIB.yaml +156 -155
- data/data/ruby/snmp/mibs/BGP4-MIB.yaml +48 -41
- data/data/ruby/snmp/mibs/BLDG-HVAC-MIB.yaml +25 -24
- data/data/ruby/snmp/mibs/BRIDGE-MIB.yaml +50 -44
- data/data/ruby/snmp/mibs/CHARACTER-MIB.yaml +35 -34
- data/data/ruby/snmp/mibs/CIRCUIT-IF-MIB.yaml +13 -12
- data/data/ruby/snmp/mibs/CLNS-MIB.yaml +98 -97
- data/data/ruby/snmp/mibs/COFFEE-POT-MIB.yaml +8 -7
- data/data/ruby/snmp/mibs/COPS-CLIENT-MIB.yaml +38 -37
- data/data/ruby/snmp/mibs/DECNET-PHIV-MIB.yaml +209 -208
- data/data/ruby/snmp/mibs/DIAL-CONTROL-MIB.yaml +72 -71
- data/data/ruby/snmp/mibs/DIFFSERV-CONFIG-MIB.yaml +11 -10
- data/data/ruby/snmp/mibs/DIFFSERV-DSCP-TC.yaml +1 -0
- data/data/ruby/snmp/mibs/DIFFSERV-MIB.yaml +151 -150
- data/data/ruby/snmp/mibs/DIRECTORY-SERVER-MIB.yaml +35 -34
- data/data/ruby/snmp/mibs/DISMAN-EVENT-MIB.yaml +95 -94
- data/data/ruby/snmp/mibs/DISMAN-EXPRESSION-MIB.yaml +37 -36
- data/data/ruby/snmp/mibs/DISMAN-NSLOOKUP-MIB.yaml +15 -14
- data/data/ruby/snmp/mibs/DISMAN-PING-MIB.yaml +43 -42
- data/data/ruby/snmp/mibs/DISMAN-SCHEDULE-MIB.yaml +22 -21
- data/data/ruby/snmp/mibs/DISMAN-SCRIPT-MIB.yaml +64 -63
- data/data/ruby/snmp/mibs/DISMAN-TRACEROUTE-MIB.yaml +59 -58
- data/data/ruby/snmp/mibs/DLSW-MIB.yaml +172 -171
- data/data/ruby/snmp/mibs/DNS-RESOLVER-MIB.yaml +70 -69
- data/data/ruby/snmp/mibs/DNS-SERVER-MIB.yaml +57 -56
- data/data/ruby/snmp/mibs/DOCS-BPI-MIB.yaml +81 -80
- data/data/ruby/snmp/mibs/DOCS-CABLE-DEVICE-MIB.yaml +114 -89
- data/data/ruby/snmp/mibs/DOCS-IETF-BPI2-MIB.yaml +187 -0
- data/data/ruby/snmp/mibs/DOCS-IETF-CABLE-DEVICE-NOTIFICATION-MIB.yaml +39 -0
- data/data/ruby/snmp/mibs/DOCS-IETF-QOS-MIB.yaml +166 -0
- data/data/ruby/snmp/mibs/DOCS-IETF-SUBMGT-MIB.yaml +32 -0
- data/data/ruby/snmp/mibs/DOCS-IF-MIB.yaml +208 -119
- data/data/ruby/snmp/mibs/DOT12-IF-MIB.yaml +21 -20
- data/data/ruby/snmp/mibs/DOT3-EPON-MIB.yaml +101 -0
- data/data/ruby/snmp/mibs/DOT3-OAM-MIB.yaml +82 -0
- data/data/ruby/snmp/mibs/DS0-MIB.yaml +11 -10
- data/data/ruby/snmp/mibs/DS0BUNDLE-MIB.yaml +9 -8
- data/data/ruby/snmp/mibs/DS1-MIB.yaml +102 -98
- data/data/ruby/snmp/mibs/DS3-MIB.yaml +84 -83
- data/data/ruby/snmp/mibs/DSA-MIB.yaml +31 -30
- data/data/ruby/snmp/mibs/DSMON-MIB.yaml +193 -192
- data/data/ruby/snmp/mibs/EBN-MIB.yaml +32 -31
- data/data/ruby/snmp/mibs/EFM-CU-MIB.yaml +113 -0
- data/data/ruby/snmp/mibs/ENTITY-MIB.yaml +41 -38
- data/data/ruby/snmp/mibs/ENTITY-SENSOR-MIB.yaml +8 -7
- data/data/ruby/snmp/mibs/ENTITY-STATE-MIB.yaml +18 -0
- data/data/ruby/snmp/mibs/ENTITY-STATE-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/ETHER-CHIPSET-MIB.yaml +61 -60
- data/data/ruby/snmp/mibs/ETHER-WIS.yaml +16 -15
- data/data/ruby/snmp/mibs/EtherLike-MIB.yaml +43 -42
- data/data/ruby/snmp/mibs/FC-MGMT-MIB.yaml +154 -0
- data/data/ruby/snmp/mibs/FCIP-MGMT-MIB.yaml +68 -0
- data/data/ruby/snmp/mibs/FDDI-SMT73-MIB.yaml +107 -106
- data/data/ruby/snmp/mibs/FIBRE-CHANNEL-FE-MIB.yaml +100 -99
- data/data/ruby/snmp/mibs/FLOW-METER-MIB.yaml +92 -91
- data/data/ruby/snmp/mibs/FR-ATM-PVC-SERVICE-IWF-MIB.yaml +33 -32
- data/data/ruby/snmp/mibs/FR-MFR-MIB.yaml +38 -37
- data/data/ruby/snmp/mibs/FRAME-RELAY-DTE-MIB.yaml +41 -40
- data/data/ruby/snmp/mibs/FRNETSERV-MIB.yaml +92 -91
- data/data/ruby/snmp/mibs/FRSLD-MIB.yaml +66 -65
- data/data/ruby/snmp/mibs/Finisher-MIB.yaml +38 -37
- data/data/ruby/snmp/mibs/GMPLS-LABEL-STD-MIB.yaml +27 -0
- data/data/ruby/snmp/mibs/GMPLS-LSR-STD-MIB.yaml +20 -0
- data/data/ruby/snmp/mibs/GMPLS-TC-STD-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/GMPLS-TE-STD-MIB.yaml +72 -0
- data/data/ruby/snmp/mibs/GSMP-MIB.yaml +75 -74
- data/data/ruby/snmp/mibs/HC-ALARM-MIB.yaml +26 -25
- data/data/ruby/snmp/mibs/HC-PerfHist-TC-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/HC-RMON-MIB.yaml +164 -163
- data/data/ruby/snmp/mibs/HCNUM-TC.yaml +1 -0
- data/data/ruby/snmp/mibs/HDSL2-SHDSL-LINE-MIB.yaml +117 -112
- data/data/ruby/snmp/mibs/HOST-RESOURCES-MIB.yaml +82 -81
- data/data/ruby/snmp/mibs/HOST-RESOURCES-TYPES.yaml +40 -39
- data/data/ruby/snmp/mibs/HPR-IP-MIB.yaml +17 -16
- data/data/ruby/snmp/mibs/HPR-MIB.yaml +64 -63
- data/data/ruby/snmp/mibs/IANA-ITU-ALARM-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/IF-CAP-STACK-MIB.yaml +13 -0
- data/data/ruby/snmp/mibs/IF-INVERTED-STACK-MIB.yaml +6 -5
- data/data/ruby/snmp/mibs/IF-MIB.yaml +57 -56
- data/data/ruby/snmp/mibs/IFCP-MGMT-MIB.yaml +65 -0
- data/data/ruby/snmp/mibs/IGMP-STD-MIB.yaml +24 -23
- data/data/ruby/snmp/mibs/INET-ADDRESS-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/INTEGRATED-SERVICES-GUARANTEED-MIB.yaml +6 -5
- data/data/ruby/snmp/mibs/INTEGRATED-SERVICES-MIB.yaml +29 -28
- data/data/ruby/snmp/mibs/INTERFACETOPN-MIB.yaml +21 -20
- data/data/ruby/snmp/mibs/IP-FORWARD-MIB.yaml +49 -27
- data/data/ruby/snmp/mibs/IP-MIB.yaml +243 -40
- data/data/ruby/snmp/mibs/IPATM-IPMC-MIB.yaml +179 -178
- data/data/ruby/snmp/mibs/IPMCAST-MIB.yaml +105 -0
- data/data/ruby/snmp/mibs/IPMROUTE-STD-MIB.yaml +49 -48
- data/data/ruby/snmp/mibs/IPOA-MIB.yaml +74 -73
- data/data/ruby/snmp/mibs/IPS-AUTH-MIB.yaml +68 -0
- data/data/ruby/snmp/mibs/IPSEC-SPD-MIB.yaml +121 -0
- data/data/ruby/snmp/mibs/IPV6-FLOW-LABEL-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/IPV6-ICMP-MIB.yaml +27 -26
- data/data/ruby/snmp/mibs/IPV6-MIB.yaml +70 -69
- data/data/ruby/snmp/mibs/IPV6-MLD-MIB.yaml +18 -17
- data/data/ruby/snmp/mibs/IPV6-TCP-MIB.yaml +7 -6
- data/data/ruby/snmp/mibs/IPV6-UDP-MIB.yaml +6 -5
- data/data/ruby/snmp/mibs/ISCSI-MIB.yaml +199 -0
- data/data/ruby/snmp/mibs/ISDN-MIB.yaml +57 -56
- data/data/ruby/snmp/mibs/ISIS-MIB.yaml +247 -0
- data/data/ruby/snmp/mibs/ISNS-MIB.yaml +179 -0
- data/data/ruby/snmp/mibs/ITU-ALARM-MIB.yaml +34 -0
- data/data/ruby/snmp/mibs/ITU-ALARM-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/Job-Monitoring-MIB.yaml +26 -27
- data/data/ruby/snmp/mibs/L2TP-MIB.yaml +138 -137
- data/data/ruby/snmp/mibs/LANGTAG-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/LMP-MIB.yaml +202 -0
- data/data/ruby/snmp/mibs/MALLOC-MIB.yaml +66 -65
- data/data/ruby/snmp/mibs/MAU-MIB.yaml +55 -95
- data/data/ruby/snmp/mibs/MIDCOM-MIB.yaml +83 -0
- data/data/ruby/snmp/mibs/MIOX25-MIB.yaml +28 -27
- data/data/ruby/snmp/mibs/MIP-MIB.yaml +157 -156
- data/data/ruby/snmp/mibs/MOBILEIPV6-MIB.yaml +189 -0
- data/data/ruby/snmp/mibs/MPLS-FTN-STD-MIB.yaml +29 -28
- data/data/ruby/snmp/mibs/MPLS-L3VPN-STD-MIB.yaml +88 -0
- data/data/ruby/snmp/mibs/MPLS-LC-ATM-STD-MIB.yaml +19 -0
- data/data/ruby/snmp/mibs/MPLS-LC-FR-STD-MIB.yaml +16 -0
- data/data/ruby/snmp/mibs/MPLS-LDP-ATM-STD-MIB.yaml +23 -22
- data/data/ruby/snmp/mibs/MPLS-LDP-FRAME-RELAY-STD-MIB.yaml +17 -16
- data/data/ruby/snmp/mibs/MPLS-LDP-GENERIC-STD-MIB.yaml +9 -8
- data/data/ruby/snmp/mibs/MPLS-LDP-STD-MIB.yaml +103 -102
- data/data/ruby/snmp/mibs/MPLS-LSR-STD-MIB.yaml +85 -84
- data/data/ruby/snmp/mibs/MPLS-TC-STD-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/MPLS-TE-STD-MIB.yaml +106 -105
- data/data/ruby/snmp/mibs/MSDP-MIB.yaml +71 -0
- data/data/ruby/snmp/mibs/MTA-MIB.yaml +42 -41
- data/data/ruby/snmp/mibs/Modem-MIB.yaml +87 -86
- data/data/ruby/snmp/mibs/NAT-MIB.yaml +116 -0
- data/data/ruby/snmp/mibs/NETWORK-SERVICES-MIB.yaml +18 -17
- data/data/ruby/snmp/mibs/NHRP-MIB.yaml +140 -139
- data/data/ruby/snmp/mibs/NOTIFICATION-LOG-MIB.yaml +37 -36
- data/data/ruby/snmp/mibs/OPT-IF-MIB.yaml +394 -393
- data/data/ruby/snmp/mibs/OSPF-MIB.yaml +192 -123
- data/data/ruby/snmp/mibs/OSPF-TRAP-MIB.yaml +24 -19
- data/data/ruby/snmp/mibs/P-BRIDGE-MIB.yaml +37 -35
- data/data/ruby/snmp/mibs/PARALLEL-MIB.yaml +16 -15
- data/data/ruby/snmp/mibs/PIM-MIB.yaml +47 -46
- data/data/ruby/snmp/mibs/PIM-STD-MIB.yaml +235 -0
- data/data/ruby/snmp/mibs/PINT-MIB.yaml +38 -37
- data/data/ruby/snmp/mibs/PKTC-IETF-MTA-MIB.yaml +81 -0
- data/data/ruby/snmp/mibs/PKTC-IETF-SIG-MIB.yaml +128 -0
- data/data/ruby/snmp/mibs/POLICY-BASED-MANAGEMENT-MIB.yaml +94 -0
- data/data/ruby/snmp/mibs/POWER-ETHERNET-MIB.yaml +27 -26
- data/data/ruby/snmp/mibs/PPP-BRIDGE-NCP-MIB.yaml +16 -15
- data/data/ruby/snmp/mibs/PPP-IP-NCP-MIB.yaml +7 -6
- data/data/ruby/snmp/mibs/PPP-LCP-MIB.yaml +33 -32
- data/data/ruby/snmp/mibs/PPP-SEC-MIB.yaml +13 -12
- data/data/ruby/snmp/mibs/PTOPO-MIB.yaml +29 -28
- data/data/ruby/snmp/mibs/PerfHist-TC-MIB.yaml +1 -0
- data/data/ruby/snmp/mibs/Printer-MIB.yaml +185 -184
- data/data/ruby/snmp/mibs/Q-BRIDGE-MIB.yaml +96 -82
- data/data/ruby/snmp/mibs/RADIUS-ACC-CLIENT-MIB.yaml +34 -16
- data/data/ruby/snmp/mibs/RADIUS-ACC-SERVER-MIB.yaml +40 -24
- data/data/ruby/snmp/mibs/RADIUS-AUTH-CLIENT-MIB.yaml +38 -18
- data/data/ruby/snmp/mibs/RADIUS-AUTH-SERVER-MIB.yaml +40 -23
- data/data/ruby/snmp/mibs/RADIUS-DYNAUTH-CLIENT-MIB.yaml +44 -0
- data/data/ruby/snmp/mibs/RADIUS-DYNAUTH-SERVER-MIB.yaml +40 -0
- data/data/ruby/snmp/mibs/RAQMON-MIB.yaml +90 -0
- data/data/ruby/snmp/mibs/RDBMS-MIB.yaml +69 -68
- data/data/ruby/snmp/mibs/RFC1065-SMI.yaml +4 -5
- data/data/ruby/snmp/mibs/RFC1155-SMI.yaml +4 -5
- data/data/ruby/snmp/mibs/RFC1158-MIB.yaml +174 -173
- data/data/ruby/snmp/mibs/RFC1213-MIB.yaml +173 -172
- data/data/ruby/snmp/mibs/RFC1269-MIB.yaml +20 -19
- data/data/ruby/snmp/mibs/RFC1271-MIB.yaml +185 -184
- data/data/ruby/snmp/mibs/RFC1285-MIB.yaml +85 -84
- data/data/ruby/snmp/mibs/RFC1316-MIB.yaml +30 -29
- data/data/ruby/snmp/mibs/RFC1381-MIB.yaml +40 -39
- data/data/ruby/snmp/mibs/RFC1382-MIB.yaml +149 -148
- data/data/ruby/snmp/mibs/RFC1414-MIB.yaml +4 -3
- data/data/ruby/snmp/mibs/RIPv2-MIB.yaml +25 -24
- data/data/ruby/snmp/mibs/RMON-MIB.yaml +192 -191
- data/data/ruby/snmp/mibs/RMON2-MIB.yaml +253 -252
- data/data/ruby/snmp/mibs/ROHC-MIB.yaml +49 -48
- data/data/ruby/snmp/mibs/ROHC-RTP-MIB.yaml +19 -18
- data/data/ruby/snmp/mibs/ROHC-UNCOMPRESSED-MIB.yaml +6 -5
- data/data/ruby/snmp/mibs/RS-232-MIB.yaml +36 -35
- data/data/ruby/snmp/mibs/RSTP-MIB.yaml +18 -0
- data/data/ruby/snmp/mibs/RSVP-MIB.yaml +137 -136
- data/data/ruby/snmp/mibs/RTP-MIB.yaml +42 -41
- data/data/ruby/snmp/mibs/SCSI-MIB.yaml +160 -0
- data/data/ruby/snmp/mibs/SCTP-MIB.yaml +83 -0
- data/data/ruby/snmp/mibs/SFLOW-MIB.yaml +15 -14
- data/data/ruby/snmp/mibs/SIP-COMMON-MIB.yaml +112 -0
- data/data/ruby/snmp/mibs/SIP-MIB.yaml +56 -55
- data/data/ruby/snmp/mibs/SIP-SERVER-MIB.yaml +52 -0
- data/data/ruby/snmp/mibs/SIP-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/SIP-UA-MIB.yaml +14 -0
- data/data/ruby/snmp/mibs/SLAPM-MIB.yaml +134 -133
- data/data/ruby/snmp/mibs/SMON-MIB.yaml +47 -46
- data/data/ruby/snmp/mibs/SNA-NAU-MIB.yaml +117 -116
- data/data/ruby/snmp/mibs/SNA-SDLC-MIB.yaml +126 -125
- data/data/ruby/snmp/mibs/SNMP-COMMUNITY-MIB.yaml +12 -11
- data/data/ruby/snmp/mibs/SNMP-FRAMEWORK-MIB.yaml +8 -7
- data/data/ruby/snmp/mibs/SNMP-MPD-MIB.yaml +6 -5
- data/data/ruby/snmp/mibs/SNMP-NOTIFICATION-MIB.yaml +16 -15
- data/data/ruby/snmp/mibs/SNMP-PROXY-MIB.yaml +10 -9
- data/data/ruby/snmp/mibs/SNMP-REPEATER-MIB.yaml +120 -119
- data/data/ruby/snmp/mibs/SNMP-TARGET-MIB.yaml +19 -18
- data/data/ruby/snmp/mibs/SNMP-USER-BASED-SM-MIB.yaml +26 -25
- data/data/ruby/snmp/mibs/SNMP-USM-AES-MIB.yaml +4 -0
- data/data/ruby/snmp/mibs/SNMP-USM-DH-OBJECTS-MIB.yaml +10 -9
- data/data/ruby/snmp/mibs/SNMP-VIEW-BASED-ACM-MIB.yaml +26 -25
- data/data/ruby/snmp/mibs/SNMPv2-MIB.yaml +46 -45
- data/data/ruby/snmp/mibs/SNMPv2-SMI.yaml +12 -11
- data/data/ruby/snmp/mibs/SNMPv2-TM.yaml +5 -4
- data/data/ruby/snmp/mibs/SNMPv2-USEC-MIB.yaml +10 -9
- data/data/ruby/snmp/mibs/SONET-MIB.yaml +110 -109
- data/data/ruby/snmp/mibs/SOURCE-ROUTING-MIB.yaml +18 -17
- data/data/ruby/snmp/mibs/SSPM-MIB.yaml +67 -0
- data/data/ruby/snmp/mibs/SYSAPPL-MIB.yaml +65 -64
- data/data/ruby/snmp/mibs/T11-FC-FABRIC-ADDR-MGR-MIB.yaml +63 -0
- data/data/ruby/snmp/mibs/T11-FC-FABRIC-CONFIG-SERVER-MIB.yaml +100 -0
- data/data/ruby/snmp/mibs/T11-FC-FABRIC-LOCK-MIB.yaml +22 -0
- data/data/ruby/snmp/mibs/T11-FC-FSPF-MIB.yaml +70 -0
- data/data/ruby/snmp/mibs/T11-FC-NAME-SERVER-MIB.yaml +56 -0
- data/data/ruby/snmp/mibs/T11-FC-ROUTE-MIB.yaml +27 -0
- data/data/ruby/snmp/mibs/T11-FC-RSCN-MIB.yaml +47 -0
- data/data/ruby/snmp/mibs/T11-FC-VIRTUAL-FABRIC-MIB.yaml +31 -0
- data/data/ruby/snmp/mibs/T11-FC-ZONE-SERVER-MIB.yaml +124 -0
- data/data/ruby/snmp/mibs/T11-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/TCP-ESTATS-MIB.yaml +167 -0
- data/data/ruby/snmp/mibs/TCP-MIB.yaml +37 -18
- data/data/ruby/snmp/mibs/TCPIPX-MIB.yaml +16 -15
- data/data/ruby/snmp/mibs/TE-LINK-STD-MIB.yaml +82 -0
- data/data/ruby/snmp/mibs/TE-MIB.yaml +81 -0
- data/data/ruby/snmp/mibs/TIME-AGGREGATE-MIB.yaml +22 -0
- data/data/ruby/snmp/mibs/TN3270E-MIB.yaml +85 -84
- data/data/ruby/snmp/mibs/TN3270E-RT-MIB.yaml +33 -32
- data/data/ruby/snmp/mibs/TOKEN-RING-RMON-MIB.yaml +159 -158
- data/data/ruby/snmp/mibs/TOKENRING-MIB.yaml +42 -41
- data/data/ruby/snmp/mibs/TOKENRING-STATION-SR-MIB.yaml +8 -7
- data/data/ruby/snmp/mibs/TRANSPORT-ADDRESS-MIB.yaml +13 -12
- data/data/ruby/snmp/mibs/TRIP-MIB.yaml +118 -0
- data/data/ruby/snmp/mibs/TRIP-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/TUNNEL-MIB.yaml +29 -13
- data/data/ruby/snmp/mibs/UDP-MIB.yaml +19 -6
- data/data/ruby/snmp/mibs/UDPLITE-MIB.yaml +26 -0
- data/data/ruby/snmp/mibs/UPS-MIB.yaml +100 -99
- data/data/ruby/snmp/mibs/URI-TC-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/VDSL-LINE-EXT-MCM-MIB.yaml +42 -0
- data/data/ruby/snmp/mibs/VDSL-LINE-EXT-SCM-MIB.yaml +27 -0
- data/data/ruby/snmp/mibs/VDSL-LINE-MIB.yaml +162 -161
- data/data/ruby/snmp/mibs/VPN-TC-STD-MIB.yaml +3 -0
- data/data/ruby/snmp/mibs/VRRP-MIB.yaml +39 -38
- data/data/ruby/snmp/mibs/WWW-MIB.yaml +75 -74
- data/examples/dump.rb +5 -5
- data/examples/iftable.rb +4 -4
- data/examples/link_down.rb +18 -18
- data/examples/log_traps.rb +9 -9
- data/examples/walk.rb +4 -4
- data/lib/snmp/agent.rb +42 -43
- data/lib/snmp/ber.rb +155 -156
- data/lib/snmp/manager.rb +412 -372
- data/lib/snmp/mib.rb +172 -182
- data/lib/snmp/options.rb +64 -0
- data/lib/snmp/pdu.rb +245 -245
- data/lib/snmp/varbind.rb +346 -341
- data/lib/snmp/version.rb +3 -0
- data/test/test_ber.rb +232 -233
- data/test/test_manager.rb +277 -238
- data/test/test_mib.rb +57 -57
- data/test/test_pdu.rb +172 -172
- data/test/test_retry.rb +54 -54
- data/test/test_smi.rb +10 -10
- data/test/test_varbind.rb +342 -331
- data/test/test_walk.rb +150 -150
- metadata +103 -45
- data/README +0 -252
- data/setup.rb +0 -1360
data/lib/snmp/varbind.rb
CHANGED
|
@@ -13,190 +13,190 @@ include SNMP::BER
|
|
|
13
13
|
|
|
14
14
|
module SNMP
|
|
15
15
|
|
|
16
|
-
class UnsupportedValueTag < RuntimeError; end
|
|
17
|
-
class InvalidIpAddress < ArgumentError; end
|
|
16
|
+
class UnsupportedValueTag < RuntimeError; end
|
|
17
|
+
class InvalidIpAddress < ArgumentError; end
|
|
18
18
|
|
|
19
|
-
class VarBindList < Array
|
|
19
|
+
class VarBindList < Array
|
|
20
20
|
def self.decode(data)
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
list = VarBindList.new
|
|
22
|
+
varbind_data, remainder = decode_sequence(data)
|
|
23
|
+
while varbind_data != ""
|
|
24
|
+
varbind, varbind_data = VarBind.decode(varbind_data)
|
|
25
|
+
list << varbind
|
|
26
|
+
end
|
|
27
|
+
return list, remainder
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def initialize(varbind_list=[])
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
end
|
|
31
|
+
super()
|
|
32
|
+
if varbind_list.respond_to? :to_str
|
|
33
|
+
self << ObjectId.new(varbind_list.to_str).to_varbind
|
|
34
|
+
elsif varbind_list.respond_to? :to_varbind
|
|
35
|
+
self << varbind_list.to_varbind
|
|
36
|
+
else
|
|
37
|
+
varbind_list.each do |item|
|
|
38
|
+
if item.respond_to? :to_str
|
|
39
|
+
self << ObjectId.new(item.to_str).to_varbind
|
|
40
|
+
else
|
|
41
|
+
self << item.to_varbind
|
|
42
|
+
end
|
|
44
43
|
end
|
|
44
|
+
end
|
|
45
45
|
end
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
def asn1_type
|
|
48
|
-
|
|
48
|
+
"VarBindList"
|
|
49
49
|
end
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
def encode
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
varbind_data = ""
|
|
53
|
+
self.each do |varbind|
|
|
54
|
+
varbind_data << varbind.encode
|
|
55
|
+
end
|
|
56
|
+
encode_sequence(varbind_data)
|
|
57
57
|
end
|
|
58
|
-
end
|
|
58
|
+
end
|
|
59
59
|
|
|
60
|
-
class Integer
|
|
60
|
+
class Integer
|
|
61
61
|
include Comparable
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
def self.decode(value_data)
|
|
64
|
-
|
|
64
|
+
Integer.new(decode_integer_value(value_data))
|
|
65
65
|
end
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
def asn1_type
|
|
68
|
-
|
|
68
|
+
"INTEGER"
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def initialize(value)
|
|
72
|
-
|
|
72
|
+
@value = value.to_i
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def <=>(other)
|
|
76
|
-
|
|
76
|
+
@value <=> other.to_i
|
|
77
77
|
end
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
def coerce(other)
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
if other.kind_of? Fixnum
|
|
81
|
+
return [other, @value]
|
|
82
|
+
else
|
|
83
|
+
return [other.to_f, self.to_f]
|
|
84
|
+
end
|
|
85
85
|
end
|
|
86
|
-
|
|
86
|
+
|
|
87
87
|
def to_s
|
|
88
|
-
|
|
88
|
+
@value.to_s
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
def to_i
|
|
92
|
-
|
|
92
|
+
@value
|
|
93
93
|
end
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
def to_f
|
|
96
|
-
|
|
96
|
+
@value.to_f
|
|
97
97
|
end
|
|
98
|
-
|
|
98
|
+
|
|
99
99
|
def encode
|
|
100
|
-
|
|
100
|
+
encode_integer(@value)
|
|
101
101
|
end
|
|
102
|
-
|
|
102
|
+
|
|
103
103
|
def to_oid
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
raise RangeError, "@{value} cannot be an OID (must be >0)" if @value < 0
|
|
105
|
+
ObjectId.new([@value])
|
|
106
106
|
end
|
|
107
|
-
end
|
|
107
|
+
end
|
|
108
108
|
|
|
109
|
-
class Integer32 < Integer
|
|
109
|
+
class Integer32 < Integer
|
|
110
110
|
def initialize(value)
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
super(value)
|
|
112
|
+
raise ArgumentError, "Out of range: #{value}" if value < -2147483648
|
|
113
|
+
raise ArgumentError, "Out of range: #{value}" if value > 2147483647
|
|
114
114
|
end
|
|
115
|
-
end
|
|
115
|
+
end
|
|
116
116
|
|
|
117
|
-
class OctetString < String
|
|
117
|
+
class OctetString < String
|
|
118
118
|
def self.decode(value_data)
|
|
119
|
-
|
|
119
|
+
OctetString.new(value_data)
|
|
120
120
|
end
|
|
121
121
|
|
|
122
122
|
def asn1_type
|
|
123
|
-
|
|
123
|
+
"OCTET STRING"
|
|
124
124
|
end
|
|
125
|
-
|
|
125
|
+
|
|
126
126
|
def encode
|
|
127
|
-
|
|
127
|
+
encode_octet_string(self)
|
|
128
128
|
end
|
|
129
|
-
|
|
129
|
+
|
|
130
130
|
def to_oid
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
131
|
+
oid = ObjectId.new
|
|
132
|
+
each_byte { |b| oid << b }
|
|
133
|
+
oid
|
|
134
134
|
end
|
|
135
|
-
end
|
|
135
|
+
end
|
|
136
136
|
|
|
137
|
-
class ObjectId < Array
|
|
137
|
+
class ObjectId < Array
|
|
138
138
|
include Comparable
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
def self.decode(value_data)
|
|
141
|
-
|
|
141
|
+
ObjectId.new(decode_object_id_value(value_data))
|
|
142
142
|
end
|
|
143
143
|
|
|
144
144
|
def asn1_type
|
|
145
|
-
|
|
145
|
+
"OBJECT IDENTIFIER"
|
|
146
146
|
end
|
|
147
|
-
|
|
147
|
+
|
|
148
148
|
##
|
|
149
149
|
# Create an object id. The input is expected to be either a string
|
|
150
150
|
# in the format "n.n.n.n.n.n" or an array of integers.
|
|
151
151
|
#
|
|
152
152
|
def initialize(id=[])
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
153
|
+
if id.nil?
|
|
154
|
+
raise ArgumentError
|
|
155
|
+
elsif id.respond_to? :to_str
|
|
156
|
+
super(make_integers(id.to_str.split(".")))
|
|
157
|
+
else
|
|
158
|
+
super(make_integers(id.to_ary))
|
|
159
|
+
end
|
|
160
160
|
rescue ArgumentError
|
|
161
|
-
|
|
161
|
+
raise ArgumentError, "#{id.inspect}:#{id.class} not a valid object ID"
|
|
162
162
|
end
|
|
163
|
-
|
|
163
|
+
|
|
164
164
|
def to_varbind
|
|
165
|
-
|
|
165
|
+
VarBind.new(self, Null)
|
|
166
166
|
end
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
def to_oid
|
|
169
|
-
|
|
169
|
+
self
|
|
170
170
|
end
|
|
171
|
-
|
|
171
|
+
|
|
172
172
|
def to_s
|
|
173
|
-
|
|
173
|
+
self.join('.')
|
|
174
174
|
end
|
|
175
|
-
|
|
175
|
+
|
|
176
176
|
def inspect
|
|
177
|
-
|
|
177
|
+
"[#{self.to_s}]"
|
|
178
178
|
end
|
|
179
|
-
|
|
179
|
+
|
|
180
180
|
def encode
|
|
181
|
-
|
|
181
|
+
encode_object_id(self)
|
|
182
182
|
end
|
|
183
|
-
|
|
183
|
+
|
|
184
184
|
##
|
|
185
185
|
# Returns true if this ObjectId is a subtree of the provided parent tree
|
|
186
186
|
# ObjectId. For example, "1.3.6.1.5" is a subtree of "1.3.6.1".
|
|
187
187
|
#
|
|
188
188
|
def subtree_of?(parent_tree)
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
end
|
|
196
|
-
true
|
|
189
|
+
parent_tree = make_object_id(parent_tree)
|
|
190
|
+
if parent_tree.length > self.length
|
|
191
|
+
false
|
|
192
|
+
else
|
|
193
|
+
parent_tree.each_index do |i|
|
|
194
|
+
return false if parent_tree[i] != self[i]
|
|
197
195
|
end
|
|
196
|
+
true
|
|
197
|
+
end
|
|
198
198
|
end
|
|
199
|
-
|
|
199
|
+
|
|
200
200
|
##
|
|
201
201
|
# Returns an index based on the difference between this ObjectId
|
|
202
202
|
# and the provided parent ObjectId.
|
|
@@ -205,375 +205,380 @@ class ObjectId < Array
|
|
|
205
205
|
# ObjectId of "5".
|
|
206
206
|
#
|
|
207
207
|
def index(parent_tree)
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
208
|
+
parent_tree = make_object_id(parent_tree)
|
|
209
|
+
if not subtree_of?(parent_tree)
|
|
210
|
+
raise ArgumentError, "#{self.to_s} not a subtree of #{parent_tree.to_s}"
|
|
211
|
+
elsif self.length == parent_tree.length
|
|
212
|
+
raise ArgumentError, "OIDs are the same"
|
|
213
|
+
else
|
|
214
|
+
ObjectId.new(self[parent_tree.length..-1])
|
|
215
|
+
end
|
|
216
216
|
end
|
|
217
|
-
|
|
217
|
+
|
|
218
218
|
private
|
|
219
|
-
|
|
220
|
-
|
|
219
|
+
|
|
220
|
+
def make_integers(list)
|
|
221
221
|
list.collect{|n| Integer(n)}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def make_object_id(oid)
|
|
225
225
|
oid.kind_of?(ObjectId) ? oid : ObjectId.new(oid)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
end
|
|
226
|
+
end
|
|
229
227
|
|
|
230
|
-
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
class IpAddress
|
|
231
231
|
class << self
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
def decode(value_data)
|
|
233
|
+
IpAddress.new(value_data, false)
|
|
234
|
+
end
|
|
235
235
|
end
|
|
236
236
|
|
|
237
237
|
def asn1_type
|
|
238
|
-
|
|
238
|
+
"IpAddress"
|
|
239
239
|
end
|
|
240
240
|
|
|
241
241
|
##
|
|
242
242
|
# Create an IpAddress object. The constructor accepts either a raw
|
|
243
243
|
# four-octet string or a formatted string of integers separated by dots
|
|
244
|
-
# (i.e. "10.1.2.3").
|
|
244
|
+
# (i.e. "10.1.2.3"). Validation of the format can be disabled by setting
|
|
245
|
+
# the 'validate' flag to false.
|
|
245
246
|
#
|
|
246
|
-
def initialize(value_data)
|
|
247
|
-
|
|
247
|
+
def initialize(value_data, validate=true)
|
|
248
|
+
ip = value_data.to_str
|
|
249
|
+
if (validate)
|
|
248
250
|
if ip.length > 4
|
|
249
|
-
|
|
251
|
+
ip = parse_string(ip)
|
|
250
252
|
elsif ip.length != 4
|
|
251
|
-
|
|
253
|
+
raise InvalidIpAddress, "Expected 4 octets or formatted string, got #{value_data.inspect}"
|
|
252
254
|
end
|
|
253
|
-
|
|
255
|
+
end
|
|
256
|
+
@value = ip
|
|
254
257
|
end
|
|
255
|
-
|
|
258
|
+
|
|
256
259
|
##
|
|
257
260
|
# Returns a raw four-octet string representing this IpAddress.
|
|
258
261
|
#
|
|
259
262
|
def to_str
|
|
260
|
-
|
|
263
|
+
@value.dup
|
|
261
264
|
end
|
|
262
|
-
|
|
265
|
+
|
|
263
266
|
##
|
|
264
267
|
# Returns a formatted, dot-separated string representing this IpAddress.
|
|
265
268
|
#
|
|
266
269
|
def to_s
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
+
octets = []
|
|
271
|
+
@value.each_byte { |b| octets << b.to_s }
|
|
272
|
+
octets.join('.')
|
|
270
273
|
end
|
|
271
|
-
|
|
274
|
+
|
|
272
275
|
def to_oid
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
+
oid = ObjectId.new
|
|
277
|
+
@value.each_byte { |b| oid << b }
|
|
278
|
+
oid
|
|
276
279
|
end
|
|
277
|
-
|
|
280
|
+
|
|
278
281
|
def ==(other)
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
282
|
+
if other.respond_to? :to_str
|
|
283
|
+
return @value.eql?(other.to_str)
|
|
284
|
+
else
|
|
285
|
+
return false
|
|
286
|
+
end
|
|
284
287
|
end
|
|
285
|
-
|
|
288
|
+
|
|
286
289
|
def eql?(other)
|
|
287
|
-
|
|
290
|
+
self == other
|
|
288
291
|
end
|
|
289
|
-
|
|
292
|
+
|
|
290
293
|
def hash
|
|
291
|
-
|
|
294
|
+
@value.hash
|
|
292
295
|
end
|
|
293
|
-
|
|
296
|
+
|
|
294
297
|
def encode
|
|
295
|
-
|
|
298
|
+
encode_tlv(IpAddress_TAG, @value)
|
|
296
299
|
end
|
|
297
300
|
|
|
298
301
|
private
|
|
299
|
-
|
|
302
|
+
def parse_string(ip_string)
|
|
300
303
|
parts = ip_string.split(".")
|
|
301
|
-
|
|
304
|
+
if parts.length != 4
|
|
305
|
+
raise InvalidIpAddress, "Expected four octets separated by dots, not #{ip_string.inspect}"
|
|
306
|
+
end
|
|
302
307
|
value_data = ""
|
|
303
|
-
parts.each do |s|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
+
parts.each do |s|
|
|
309
|
+
octet = s.to_i
|
|
310
|
+
raise InvalidIpAddress, "Octets cannot be greater than 255: #{ip_string.inspect}" if octet > 255
|
|
311
|
+
raise InvalidIpAddress, "Octets cannot be negative: #{ip_string.inspect}" if octet < 0
|
|
312
|
+
value_data << octet.chr
|
|
308
313
|
end
|
|
309
314
|
value_data
|
|
310
|
-
|
|
315
|
+
end
|
|
311
316
|
|
|
312
|
-
end
|
|
317
|
+
end
|
|
313
318
|
|
|
314
|
-
class UnsignedInteger < Integer
|
|
319
|
+
class UnsignedInteger < Integer
|
|
315
320
|
def initialize(value)
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
321
|
+
super(value)
|
|
322
|
+
raise ArgumentError, "Negative integer invalid: #{value}" if value < 0
|
|
323
|
+
raise ArgumentError, "Out of range: #{value}" if value > 4294967295
|
|
319
324
|
end
|
|
320
|
-
|
|
325
|
+
|
|
321
326
|
def self.decode(value_data)
|
|
322
|
-
|
|
327
|
+
self.new(decode_uinteger_value(value_data))
|
|
323
328
|
end
|
|
324
|
-
end
|
|
329
|
+
end
|
|
325
330
|
|
|
326
|
-
class Counter32 < UnsignedInteger
|
|
331
|
+
class Counter32 < UnsignedInteger
|
|
327
332
|
def asn1_type
|
|
328
|
-
|
|
333
|
+
"Counter32"
|
|
329
334
|
end
|
|
330
335
|
|
|
331
336
|
def encode
|
|
332
|
-
|
|
337
|
+
encode_tagged_integer(Counter32_TAG, @value)
|
|
333
338
|
end
|
|
334
|
-
end
|
|
339
|
+
end
|
|
335
340
|
|
|
336
|
-
class Gauge32 < UnsignedInteger
|
|
341
|
+
class Gauge32 < UnsignedInteger
|
|
337
342
|
def asn1_type
|
|
338
|
-
|
|
343
|
+
"Gauge32"
|
|
339
344
|
end
|
|
340
345
|
|
|
341
346
|
def encode
|
|
342
|
-
|
|
347
|
+
encode_tagged_integer(Gauge32_TAG, @value)
|
|
343
348
|
end
|
|
344
|
-
end
|
|
349
|
+
end
|
|
345
350
|
|
|
346
|
-
class Unsigned32 < UnsignedInteger
|
|
351
|
+
class Unsigned32 < UnsignedInteger
|
|
347
352
|
def asn1_type
|
|
348
|
-
|
|
353
|
+
"Unsigned32"
|
|
349
354
|
end
|
|
350
355
|
|
|
351
356
|
def encode
|
|
352
|
-
|
|
357
|
+
encode_tagged_integer(Unsigned32_TAG, @value)
|
|
353
358
|
end
|
|
354
|
-
end
|
|
359
|
+
end
|
|
355
360
|
|
|
356
|
-
class TimeTicks < UnsignedInteger
|
|
361
|
+
class TimeTicks < UnsignedInteger
|
|
357
362
|
def asn1_type
|
|
358
|
-
|
|
363
|
+
"TimeTicks"
|
|
359
364
|
end
|
|
360
365
|
|
|
361
366
|
def encode
|
|
362
|
-
|
|
367
|
+
encode_tagged_integer(TimeTicks_TAG, @value)
|
|
363
368
|
end
|
|
364
|
-
|
|
365
|
-
def to_s
|
|
366
|
-
days, remainder = @value.divmod(8640000)
|
|
367
|
-
hours, remainder = remainder.divmod(360000)
|
|
368
|
-
minutes, remainder = remainder.divmod(6000)
|
|
369
|
-
seconds, hundredths = remainder.divmod(100)
|
|
370
|
-
case
|
|
371
|
-
when days < 1
|
|
372
|
-
sprintf('%02d:%02d:%02d.%02d',
|
|
373
|
-
hours, minutes, seconds, hundredths)
|
|
374
|
-
when days == 1
|
|
375
|
-
sprintf('1 day, %02d:%02d:%02d.%02d',
|
|
376
|
-
hours, minutes, seconds, hundredths)
|
|
377
|
-
when days > 1
|
|
378
|
-
sprintf('%d days, %02d:%02d:%02d.%02d',
|
|
379
|
-
days, hours, minutes, seconds, hundredths)
|
|
380
|
-
end
|
|
381
|
-
end
|
|
382
|
-
end
|
|
383
369
|
|
|
384
|
-
|
|
370
|
+
def to_s
|
|
371
|
+
days, remainder = @value.divmod(8640000)
|
|
372
|
+
hours, remainder = remainder.divmod(360000)
|
|
373
|
+
minutes, remainder = remainder.divmod(6000)
|
|
374
|
+
seconds, hundredths = remainder.divmod(100)
|
|
375
|
+
case
|
|
376
|
+
when days < 1
|
|
377
|
+
sprintf('%02d:%02d:%02d.%02d',
|
|
378
|
+
hours, minutes, seconds, hundredths)
|
|
379
|
+
when days == 1
|
|
380
|
+
sprintf('1 day, %02d:%02d:%02d.%02d',
|
|
381
|
+
hours, minutes, seconds, hundredths)
|
|
382
|
+
when days > 1
|
|
383
|
+
sprintf('%d days, %02d:%02d:%02d.%02d',
|
|
384
|
+
days, hours, minutes, seconds, hundredths)
|
|
385
|
+
end
|
|
386
|
+
end
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
class Opaque < OctetString
|
|
385
390
|
def self.decode(value_data)
|
|
386
|
-
|
|
391
|
+
Opaque.new(value_data)
|
|
387
392
|
end
|
|
388
|
-
|
|
393
|
+
|
|
389
394
|
def asn1_type
|
|
390
|
-
|
|
395
|
+
"Opaque"
|
|
391
396
|
end
|
|
392
|
-
|
|
397
|
+
|
|
393
398
|
def encode
|
|
394
|
-
|
|
399
|
+
encode_tlv(Opaque_TAG, self)
|
|
395
400
|
end
|
|
396
|
-
end
|
|
401
|
+
end
|
|
397
402
|
|
|
398
|
-
class Counter64 < Integer
|
|
403
|
+
class Counter64 < Integer
|
|
399
404
|
def self.decode(value_data)
|
|
400
|
-
|
|
405
|
+
Counter64.new(decode_integer_value(value_data))
|
|
401
406
|
end
|
|
402
407
|
|
|
403
408
|
def asn1_type
|
|
404
|
-
|
|
409
|
+
"Counter64"
|
|
405
410
|
end
|
|
406
411
|
|
|
407
412
|
def initialize(value)
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
end
|
|
412
|
-
|
|
413
|
+
super(value)
|
|
414
|
+
raise ArgumentError, "Negative integer invalid: #{value}" if value < 0
|
|
415
|
+
raise ArgumentError, "Out of range: #{value}" if value > 18446744073709551615
|
|
416
|
+
end
|
|
417
|
+
|
|
413
418
|
def encode
|
|
414
|
-
|
|
419
|
+
encode_tagged_integer(Counter64_TAG, @value)
|
|
415
420
|
end
|
|
416
|
-
end
|
|
421
|
+
end
|
|
417
422
|
|
|
418
|
-
class Null
|
|
423
|
+
class Null
|
|
419
424
|
class << self
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
425
|
+
def decode(value_data)
|
|
426
|
+
Null
|
|
427
|
+
end
|
|
423
428
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
def asn1_type
|
|
429
|
-
'Null'
|
|
430
|
-
end
|
|
429
|
+
def encode
|
|
430
|
+
encode_null
|
|
431
|
+
end
|
|
431
432
|
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
433
|
+
def asn1_type
|
|
434
|
+
'Null'
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
def to_s
|
|
438
|
+
asn1_type
|
|
439
|
+
end
|
|
435
440
|
end
|
|
436
|
-
end
|
|
441
|
+
end
|
|
437
442
|
|
|
438
|
-
class NoSuchObject
|
|
443
|
+
class NoSuchObject
|
|
439
444
|
class << self
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
445
|
+
def decode(value_data)
|
|
446
|
+
NoSuchObject
|
|
447
|
+
end
|
|
443
448
|
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
449
|
+
def encode
|
|
450
|
+
encode_exception(NoSuchObject_TAG)
|
|
451
|
+
end
|
|
447
452
|
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
453
|
+
def asn1_type
|
|
454
|
+
'noSuchObject'
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
def to_s
|
|
458
|
+
asn1_type
|
|
459
|
+
end
|
|
455
460
|
end
|
|
456
|
-
end
|
|
461
|
+
end
|
|
457
462
|
|
|
458
|
-
class NoSuchInstance
|
|
463
|
+
class NoSuchInstance
|
|
459
464
|
class << self
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
465
|
+
def decode(value_data)
|
|
466
|
+
NoSuchInstance
|
|
467
|
+
end
|
|
463
468
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
469
|
+
def encode
|
|
470
|
+
encode_exception(NoSuchInstance_TAG)
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
def asn1_type
|
|
474
|
+
'noSuchInstance'
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
def to_s
|
|
478
|
+
asn1_type
|
|
479
|
+
end
|
|
475
480
|
end
|
|
476
|
-
end
|
|
481
|
+
end
|
|
477
482
|
|
|
478
|
-
class EndOfMibView
|
|
483
|
+
class EndOfMibView
|
|
479
484
|
class << self
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
485
|
+
def decode(value_data)
|
|
486
|
+
EndOfMibView
|
|
487
|
+
end
|
|
483
488
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
489
|
+
def encode
|
|
490
|
+
encode_exception(EndOfMibView_TAG)
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
def asn1_type
|
|
494
|
+
'endOfMibView'
|
|
495
|
+
end
|
|
496
|
+
|
|
497
|
+
def to_s
|
|
498
|
+
asn1_type
|
|
499
|
+
end
|
|
495
500
|
end
|
|
496
|
-
end
|
|
501
|
+
end
|
|
497
502
|
|
|
498
|
-
class VarBind
|
|
503
|
+
class VarBind
|
|
499
504
|
attr_accessor :name
|
|
500
505
|
attr_accessor :value
|
|
501
|
-
|
|
506
|
+
|
|
502
507
|
alias :oid :name
|
|
503
|
-
|
|
504
|
-
class << self
|
|
505
|
-
def decode(data)
|
|
506
|
-
varbind_data, remaining_varbind_data = decode_sequence(data)
|
|
507
|
-
name, remainder = decode_object_id(varbind_data)
|
|
508
|
-
value, remainder = decode_value(remainder)
|
|
509
|
-
assert_no_remainder(remainder)
|
|
510
|
-
return VarBind.new(name, value), remaining_varbind_data
|
|
511
|
-
end
|
|
512
508
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
509
|
+
class << self
|
|
510
|
+
def decode(data)
|
|
511
|
+
varbind_data, remaining_varbind_data = decode_sequence(data)
|
|
512
|
+
name, remainder = decode_object_id(varbind_data)
|
|
513
|
+
value, remainder = decode_value(remainder)
|
|
514
|
+
assert_no_remainder(remainder)
|
|
515
|
+
return VarBind.new(name, value), remaining_varbind_data
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
ValueDecoderMap = {
|
|
519
|
+
INTEGER_TAG => Integer,
|
|
520
|
+
OCTET_STRING_TAG => OctetString,
|
|
521
|
+
NULL_TAG => Null,
|
|
522
|
+
OBJECT_IDENTIFIER_TAG => ObjectId,
|
|
523
|
+
IpAddress_TAG => IpAddress,
|
|
524
|
+
Counter32_TAG => Counter32,
|
|
525
|
+
Gauge32_TAG => Gauge32,
|
|
526
|
+
# note Gauge32 tag same as Unsigned32
|
|
527
|
+
TimeTicks_TAG => TimeTicks,
|
|
528
|
+
Opaque_TAG => Opaque,
|
|
529
|
+
Counter64_TAG => Counter64,
|
|
530
|
+
NoSuchObject_TAG => NoSuchObject,
|
|
531
|
+
NoSuchInstance_TAG => NoSuchInstance,
|
|
532
|
+
EndOfMibView_TAG => EndOfMibView
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
def decode_value(data)
|
|
536
|
+
value_tag, value_data, remainder = decode_tlv(data)
|
|
537
|
+
decoder_class = ValueDecoderMap[value_tag]
|
|
538
|
+
if decoder_class
|
|
539
|
+
value = decoder_class.decode(value_data)
|
|
540
|
+
else
|
|
541
|
+
raise UnsupportedValueTag, value_tag.to_s
|
|
539
542
|
end
|
|
543
|
+
return value, remainder
|
|
544
|
+
end
|
|
540
545
|
end
|
|
541
|
-
|
|
546
|
+
|
|
542
547
|
def initialize(name, value=Null)
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
548
|
+
if name.kind_of? ObjectId
|
|
549
|
+
@name = name
|
|
550
|
+
else
|
|
551
|
+
@name = ObjectName.new(name)
|
|
552
|
+
end
|
|
553
|
+
@value = value
|
|
549
554
|
end
|
|
550
555
|
|
|
551
556
|
def asn1_type
|
|
552
|
-
|
|
557
|
+
"VarBind"
|
|
553
558
|
end
|
|
554
|
-
|
|
559
|
+
|
|
555
560
|
def to_varbind
|
|
556
|
-
|
|
561
|
+
self
|
|
557
562
|
end
|
|
558
|
-
|
|
563
|
+
|
|
559
564
|
def to_s
|
|
560
|
-
|
|
565
|
+
"[name=#{@name.to_s}, value=#{@value.to_s} (#{@value.asn1_type})]"
|
|
561
566
|
end
|
|
562
|
-
|
|
567
|
+
|
|
563
568
|
def each
|
|
564
|
-
|
|
569
|
+
yield self
|
|
565
570
|
end
|
|
566
|
-
|
|
571
|
+
|
|
567
572
|
def encode
|
|
568
|
-
|
|
569
|
-
|
|
573
|
+
data = encode_object_id(@name) << value.encode
|
|
574
|
+
encode_sequence(data)
|
|
570
575
|
end
|
|
571
|
-
end
|
|
576
|
+
end
|
|
572
577
|
|
|
573
|
-
class ObjectName < ObjectId
|
|
578
|
+
class ObjectName < ObjectId
|
|
574
579
|
def asn1_type
|
|
575
|
-
|
|
580
|
+
"ObjectName"
|
|
576
581
|
end
|
|
577
|
-
end
|
|
582
|
+
end
|
|
578
583
|
|
|
579
584
|
end
|